Compare commits
6341 Commits
Author | SHA1 | Date | |
---|---|---|---|
a0aee78c82 | |||
b1101cc1c3 | |||
a04256f55b | |||
206dfbf173 | |||
8618cf1edc | |||
4a696d6ec8 | |||
59f5c0c731 | |||
8bf0a261a0 | |||
7bce4f3a21 | |||
d5a0cc5a5f | |||
6a21959531 | |||
929b65add4 | |||
1f44efc202 | |||
4caa05e4ce | |||
b18e194257 | |||
ad9270db22 | |||
f69cece074 | |||
53164ba286 | |||
91b2024bae | |||
4b97a13485 | |||
19a1bad425 | |||
18b51e93ac | |||
dcec409e95 | |||
3e1943ec46 | |||
a204cdf75b | |||
a8779941dc | |||
dad067f272 | |||
5858fb4e35 | |||
a5dae4c4d6 | |||
411e237081 | |||
1b2eeb13a0 | |||
f6b2a1ca92 | |||
1b0fe18631 | |||
144237f19f | |||
6a6e58cb41 | |||
24c6355741 | |||
978fa765ca | |||
159d097797 | |||
14734fcc72 | |||
506ee24e24 | |||
1ed5a63c8c | |||
6d9a0eab70 | |||
f486fcc998 | |||
fd7ed87746 | |||
7b84b02492 | |||
129d473b2d | |||
7502e10fdf | |||
1d1dbc4cfa | |||
a8405a4c4a | |||
6ddace437c | |||
9b330fafeb | |||
07eb01bc02 | |||
cd922f528f | |||
38ea678258 | |||
f061017480 | |||
3acafa2010 | |||
ef51157e52 | |||
95f1bb8525 | |||
509b0a97f6 | |||
6ea8033705 | |||
e0dbeee40f | |||
2f195fe167 | |||
6fadde0a53 | |||
94bbf0efc8 | |||
b6796be8e0 | |||
bd909ad437 | |||
36d50f8050 | |||
6e9f21f815 | |||
1749f27275 | |||
8e23270405 | |||
27be90424b | |||
a21797a51e | |||
ce6fdd458b | |||
179f32ff51 | |||
9575c08345 | |||
a2c51158fe | |||
89c5553d41 | |||
3aee3ad46d | |||
7b7b33e3a6 | |||
4f27dde72a | |||
d233b1a831 | |||
804382343e | |||
8eefbe20d7 | |||
71c62ce69c | |||
f33f857fbe | |||
8317e727ce | |||
6eced03b25 | |||
d2d762a4c9 | |||
afe1fe55eb | |||
c8cfe7c8ff | |||
b3b1b25157 | |||
927be09559 | |||
ca5d3e3b2b | |||
88dcb3179b | |||
a2cf34129f | |||
88a0ce6e11 | |||
9c9844922c | |||
e73e1ce9de | |||
50ece62d3c | |||
a033d8c808 | |||
4e3658fd57 | |||
a1c4ad38d5 | |||
6f8e9443aa | |||
59a621abc7 | |||
6dc72022a5 | |||
a137201edd | |||
87b7ec2ebb | |||
8d3cc1bcc2 | |||
629ddfd265 | |||
cea4f92e4a | |||
ee85d00ed6 | |||
c33e2dc626 | |||
e6e8b3d337 | |||
cc3637f177 | |||
c616fd5b7a | |||
8143d03d51 | |||
88dd4f705a | |||
54c3662a57 | |||
cdae2d9cdf | |||
144c7aa34b | |||
afc4978ede | |||
f3e268bc3b | |||
75a2355a19 | |||
245adcab13 | |||
3cb69c2397 | |||
0f068a600e | |||
be2f937f1e | |||
c8116f6ea0 | |||
b761903b8b | |||
c37d7b979f | |||
ce38084db6 | |||
045fbf138a | |||
60243501f2 | |||
24f7d2e80f | |||
1aa5194584 | |||
32aabf2c09 | |||
f28dcbcfc9 | |||
16bc621262 | |||
7fd932744e | |||
46e1b84fad | |||
1c92010849 | |||
f46e2caebe | |||
47095d5ec3 | |||
0575778667 | |||
3d6816abcd | |||
bce4f2f70f | |||
1282b007be | |||
d6612a420c | |||
b984695341 | |||
446b1888e3 | |||
633e0f2264 | |||
808c950566 | |||
f25f0954c3 | |||
c9ee8cbd54 | |||
ab8cc142a7 | |||
b1623f23c0 | |||
93982c3a6e | |||
d87bbde169 | |||
e46e740f91 | |||
60d67ce924 | |||
745965763b | |||
a3f7debc89 | |||
13e240c602 | |||
54c4ecb9f2 | |||
7e112aa761 | |||
d6c45388a3 | |||
098cfd5287 | |||
6237175ed5 | |||
9fa141898e | |||
45f449416d | |||
0e351c9607 | |||
edca63e796 | |||
a32a57929b | |||
38dc194485 | |||
b997b0a04e | |||
d8928e438b | |||
756f51b662 | |||
7e7d27bf4b | |||
ffec879e07 | |||
2263e9b881 | |||
5e1c9a9fd6 | |||
433c82761b | |||
2415d9b2fb | |||
6f0b361aee | |||
39b7afa118 | |||
2713da3614 | |||
0679392177 | |||
ca084b8db2 | |||
66e35fb341 | |||
2ad598f3db | |||
bc441c72ce | |||
8a1fcf4754 | |||
715cdc370c | |||
8ac6e09a10 | |||
69007ecc68 | |||
1d9f8b0c42 | |||
3f36a8c7e1 | |||
eff0713dfc | |||
7da1c1732a | |||
70eb6c9e38 | |||
d08da26b3b | |||
01792e353b | |||
5db62ef94a | |||
d6ace2457e | |||
6638b11e20 | |||
695732b0d7 | |||
3bad01373d | |||
e71a6ee9a6 | |||
fbb027e8c7 | |||
4520aa2891 | |||
e5b85c3377 | |||
6fcc46d1a4 | |||
4a5057d8fa | |||
9157ccb097 | |||
bd9d6ab2d5 | |||
05877ee1d7 | |||
51c4d9fbfd | |||
f3e82459a8 | |||
bd64f8ef2e | |||
97a94429f2 | |||
8aef56ab3b | |||
985009ad14 | |||
b46ec389bd | |||
3ad24c7137 | |||
a35f1810a2 | |||
8580047dfa | |||
68de80838c | |||
66c5f258be | |||
2df58852d3 | |||
52bab2551c | |||
49c20c00e4 | |||
b45a769939 | |||
9f7e08be61 | |||
f530e363d1 | |||
0129393a6b | |||
21f04d59b5 | |||
dc77bc0546 | |||
925e3896d0 | |||
7a0b9b680b | |||
450fd0b536 | |||
2368a310be | |||
15ddb363d4 | |||
f62c49474f | |||
d26cdb3ea3 | |||
98d6385c9a | |||
f005dda9dd | |||
1fb5395d9d | |||
9c17665aaa | |||
029d997b6e | |||
109c4d05d6 | |||
a8753e9cbb | |||
cf730ce481 | |||
a4c09c51d0 | |||
d4799d7b04 | |||
2ffa9c6f29 | |||
6e9d8067ca | |||
4874c6dff4 | |||
ed1592b2ec | |||
02cd6b42b5 | |||
c20f33960c | |||
4f4eba9149 | |||
b6a4476f34 | |||
5ad85d95cd | |||
250e610fa0 | |||
b1e8a8a6ce | |||
baecee1052 | |||
24ae31cdc6 | |||
ae3f524a1f | |||
b77387f34c | |||
35605d689a | |||
babbe08e7c | |||
03e002f64d | |||
49b47eab81 | |||
450fbe042e | |||
6968782ac0 | |||
fdad5ad74b | |||
564413246d | |||
109a9ec339 | |||
08f08c9fa4 | |||
183458933e | |||
17ab784c04 | |||
12cc97f718 | |||
3827e03ee2 | |||
0ced2e85ba | |||
46dc1fbd48 | |||
7222f7e930 | |||
570c654db7 | |||
74d14b8ff7 | |||
79f5feb8bd | |||
f142ba55bb | |||
79f705fa34 | |||
6b36c83626 | |||
62047e582b | |||
f299632831 | |||
5f445f97c2 | |||
3df27a66a1 | |||
7e241bff18 | |||
598f2babdc | |||
411364564a | |||
b20d694622 | |||
456b7ba842 | |||
a546e8a300 | |||
d742d02fe2 | |||
9452aab4d3 | |||
a66b816675 | |||
eb2a784b8b | |||
a2a90a3157 | |||
457c661f62 | |||
8122b3f612 | |||
17160ffdb4 | |||
d3c490ef0d | |||
8602e66eb9 | |||
fc44f6e529 | |||
e76f15f4fd | |||
3aa757d705 | |||
305b6488e4 | |||
348f2a6370 | |||
6e64c1a4e0 | |||
70299d9168 | |||
50f8b4ebdd | |||
c1c1ba5582 | |||
7400b61204 | |||
2db184dd71 | |||
20d689f31f | |||
e09b681e6e | |||
03dfd19e6e | |||
20fa59fc2c | |||
efa5a46350 | |||
091532d8ee | |||
f095d15d0e | |||
ecc720b261 | |||
c7048323f4 | |||
a89a4ea8ea | |||
e3f7645a8b | |||
d3be9ba902 | |||
5dea8271b6 | |||
b5c2350145 | |||
7890380266 | |||
d0b5164cd0 | |||
02bfbf4430 | |||
a060e3ce5c | |||
d8956f7994 | |||
d77b97dc9a | |||
a5761efd14 | |||
a590852313 | |||
5d13e7fdcd | |||
0c0d49229d | |||
73a22edcc8 | |||
84d10cc5d3 | |||
307be997d1 | |||
a979460614 | |||
a50f190fd4 | |||
a37c8021a6 | |||
3c20cba289 | |||
b48e6357e8 | |||
6a2ece7bd1 | |||
505e383ccb | |||
f643b63c4d | |||
e4844ce7c9 | |||
0feb949565 | |||
3062083d42 | |||
c68ca81589 | |||
e00ea2fb38 | |||
7d57d561b1 | |||
5f20e85ff3 | |||
d1b3f241b1 | |||
82c9b703ea | |||
72e736d8e8 | |||
5a19f7e3ce | |||
612249dc8b | |||
f8a5eb2e4a | |||
0b7813fe97 | |||
3a782b1710 | |||
38f89f37bf | |||
5ddfaf0807 | |||
f9c939029b | |||
9dc1c51db4 | |||
f79030c6ba | |||
62719a3797 | |||
5daa412939 | |||
0a937754ee | |||
8d94b36eed | |||
7ac11ca3d6 | |||
ab686715f2 | |||
e5d3b4e36e | |||
349a145299 | |||
c893197352 | |||
b03e497ef1 | |||
2a3689f0e4 | |||
0a6cf23ce7 | |||
78976c153a | |||
e934be2215 | |||
62e3895bba | |||
4b6773a652 | |||
8f3e1192df | |||
dfe3a2fcfc | |||
b922cbbdd6 | |||
6b89746644 | |||
df5a6b36b8 | |||
4e29e2f14b | |||
48b0079000 | |||
ac9af1adb9 | |||
0db4b27c7d | |||
5595a20f39 | |||
6205e03828 | |||
8a10aff35a | |||
fc8e997caa | |||
1ee8e8e0de | |||
7dc57159fe | |||
8434d92c30 | |||
cbfcb2a6bb | |||
24f4623384 | |||
60be9dbbc7 | |||
194179c3d7 | |||
29abd048ef | |||
88407bcd9d | |||
e6c3523b1b | |||
110c47699a | |||
54888e8d7d | |||
9605136bc6 | |||
1f2b5fb201 | |||
4dc92782fc | |||
e97d320df2 | |||
5d884837f4 | |||
bcc7aaa70c | |||
bc816141c5 | |||
74e2c98030 | |||
63fc236856 | |||
8c5f3ebbdf | |||
90b0701f9a | |||
e206e2e7ff | |||
e794312882 | |||
ab3fb6bba3 | |||
49df72acfe | |||
dc12daf277 | |||
2a1ad76f78 | |||
2d82195f97 | |||
f6b2baa3e8 | |||
4681b2778b | |||
836ea75856 | |||
64c6223759 | |||
df40ca9d41 | |||
4b29c4adeb | |||
a767eb4ed9 | |||
e20bc464fb | |||
d9ce2859a3 | |||
e07532fb16 | |||
66ab5eb521 | |||
c7204b5a43 | |||
9aab62c537 | |||
c82db71bde | |||
582d7c340c | |||
369405090f | |||
67ffcfa176 | |||
4f2868ed66 | |||
4fad28f4c1 | |||
352ca5b031 | |||
051bf5d332 | |||
1bfe7b4edf | |||
271c0a38d3 | |||
1ad487420c | |||
dfa23f6d78 | |||
86e5b60faf | |||
fff318fbce | |||
23cc165d6a | |||
9623f7bb1c | |||
79542fa36f | |||
40df8aa84b | |||
a7696adbeb | |||
a0d48096ad | |||
6935350ad6 | |||
ba0ab9f1f5 | |||
5c633dc912 | |||
ba49444c33 | |||
46ca25d8c9 | |||
06d1e4d001 | |||
9acc7bad4d | |||
442c560334 | |||
31d49ec117 | |||
70c7013102 | |||
659319250e | |||
aed5ee598d | |||
045a42a34e | |||
445dd85bf9 | |||
69cb494749 | |||
0ce7f4da70 | |||
39891c00da | |||
b97e6f713e | |||
0c9eb31533 | |||
d2bb5021fc | |||
bdfa35315f | |||
0aeedd42ee | |||
26ab9bfeb5 | |||
5c9bacca32 | |||
31316cfcca | |||
4ae7ee6e2b | |||
a4819b3c31 | |||
dadcae63c6 | |||
e73bae7b0a | |||
a346fd943f | |||
e20c47b408 | |||
a1165fdfd4 | |||
9f24c4b12a | |||
2414148220 | |||
fde6b65b52 | |||
51f3b32255 | |||
79a72c4c4b | |||
6943ada500 | |||
3647e86862 | |||
c0538d4613 | |||
bbb8c042e4 | |||
43cd1c0bbe | |||
151cc6c14b | |||
7cc502b07a | |||
5641590957 | |||
a0c7f34302 | |||
158fed9ee7 | |||
20e04efc33 | |||
c48cf110dd | |||
7cc14ac25d | |||
879ccaa7c5 | |||
62fa9f3cf9 | |||
43c9d709c7 | |||
b3182fbb00 | |||
c074f61d8f | |||
97b9d9ef24 | |||
df9549efb2 | |||
72b78910fb | |||
31f7a726ff | |||
0d2c0019e2 | |||
651d5214d2 | |||
ec8eef0a6b | |||
64d31f48d2 | |||
2b4da16ea4 | |||
7f7c3882a6 | |||
24ea3f3364 | |||
2bb361f0f5 | |||
a20a02e82a | |||
b6a2ebe5ef | |||
67d099a7f2 | |||
082be1073e | |||
c5f1dc96bf | |||
c1ec940eba | |||
141f33de54 | |||
7dccf47fdd | |||
c8b79b9606 | |||
a643e212c2 | |||
70d1c723f7 | |||
dfd9a62a90 | |||
13145e5d18 | |||
69e3fde5e4 | |||
527b68219f | |||
544d7e2b91 | |||
af13a6ed28 | |||
fce0954f45 | |||
f62bbc8388 | |||
2429557350 | |||
65b0afe9a6 | |||
6ada39e790 | |||
a67a3227f8 | |||
7811a45553 | |||
528b471f94 | |||
1d4044ae88 | |||
3f1f8ef931 | |||
677ac69868 | |||
a5146f3239 | |||
93aab51ec1 | |||
70dc0a8cc3 | |||
e82191451c | |||
dd7ce4e1d3 | |||
5c3160ed80 | |||
c024c14790 | |||
11cabea60d | |||
0aeaee7d9d | |||
dea722b36c | |||
0acfe22380 | |||
66780a0c9f | |||
2e397aebad | |||
936536cd2b | |||
7720f1da36 | |||
8cbe43b8d7 | |||
7c25317093 | |||
b571846ea4 | |||
d70d1d11ba | |||
edc6da2de9 | |||
09446778e8 | |||
e86384a2d7 | |||
9b85f5efab | |||
c7d18636c0 | |||
8af6b57788 | |||
ec76ae082a | |||
474ed6b46f | |||
935769398a | |||
45d37d5cb8 | |||
70fe2707ba | |||
58e1e0aee9 | |||
5fa07217a4 | |||
9700fa0697 | |||
605c6da4e4 | |||
cbe2ed48e2 | |||
cf68f34fc2 | |||
ada431e6d4 | |||
c4a9d7ae42 | |||
918c8af50f | |||
df062044fd | |||
d382f3d39f | |||
8d1a7a01c7 | |||
cb4cae9547 | |||
de7262f82c | |||
f8e440cadf | |||
b640e22a41 | |||
6390ff0c6e | |||
104b7a949d | |||
fc862dd7d2 | |||
1faaa16a08 | |||
6fce9cd97d | |||
5804aa3096 | |||
2ff76be15c | |||
3db49929bd | |||
a3d33795f8 | |||
00f53a8d9e | |||
3993d38ae6 | |||
691020e22b | |||
e490c787da | |||
c56350860f | |||
c81fb7ca94 | |||
d76b4f6607 | |||
fdf2fb78b5 | |||
691fd183c0 | |||
6478cf9702 | |||
ea0f225249 | |||
2789952302 | |||
5f5ca0c6f1 | |||
ac57311575 | |||
4b048fec76 | |||
4bc6adcb93 | |||
92d7fd5527 | |||
f7c7d7c25d | |||
c979dd1e00 | |||
335bcf2375 | |||
8001934141 | |||
fffc21d3dc | |||
989323d29e | |||
a789607f84 | |||
c811742c99 | |||
82d5123e1c | |||
967753f0d8 | |||
ca25ad5e0e | |||
514a4bcb23 | |||
89ec3844a5 | |||
7014f8258e | |||
a2241de8e8 | |||
20027fc8c9 | |||
afb143dadb | |||
ac91fca8a0 | |||
419f03f051 | |||
6482c22ec0 | |||
5a090bf125 | |||
6296ca8ad9 | |||
fccf1221a2 | |||
eca99af229 | |||
a0ca786a6e | |||
5f74818d39 | |||
b9239315ed | |||
eba1d555da | |||
b29cc1aaf0 | |||
b324df6a54 | |||
e22c597bf6 | |||
6462cbb2c2 | |||
cc36c4c235 | |||
52e6194558 | |||
b8159df9fd | |||
647e2c9029 | |||
0d9829dc05 | |||
d9999e84d2 | |||
ae1fbd696a | |||
7d9caba1c4 | |||
766143040a | |||
282e75b118 | |||
9922304b35 | |||
3ced5287f2 | |||
f147051535 | |||
479247a5ec | |||
68dc369a1c | |||
c60fd46420 | |||
04f8ffee37 | |||
9ec7857ddd | |||
53fe0a2529 | |||
084ad93663 | |||
f5c0021e05 | |||
08dc4cf439 | |||
61469c7a35 | |||
71491a6176 | |||
e48bd3adb4 | |||
c63a9fb757 | |||
56d51b69ca | |||
c48784069f | |||
3b7b06dfbb | |||
c556dffe98 | |||
8aedb34501 | |||
5b5b8afdf1 | |||
49236d4430 | |||
736a1028fb | |||
f0fd3e2269 | |||
e1da21f687 | |||
e440c6b238 | |||
8205ce6b34 | |||
4676ec52c2 | |||
d9c02cdc98 | |||
72c1deaa74 | |||
d84ce40f7d | |||
92e66cc4e3 | |||
7a347afa95 | |||
632419852a | |||
d07f724f9c | |||
fa9eb951d4 | |||
7bbcdc2f20 | |||
e93e693173 | |||
6b928356ca | |||
1954c1f92e | |||
87e27e1d0e | |||
b95f848766 | |||
61ac1bc530 | |||
c988d0516c | |||
6ffaf5a691 | |||
66c52ffb2b | |||
b92383a8a5 | |||
1d0e4930ba | |||
a435c3e2ea | |||
7164ad74bf | |||
f7f715dff3 | |||
5304ce108e | |||
f2e8660fa2 | |||
e24f97c081 | |||
83e319d6f5 | |||
ae5e636b96 | |||
623d75e828 | |||
e97a66d371 | |||
a60b42a26a | |||
6c6e049282 | |||
acd30e9017 | |||
18571389d5 | |||
afb3d7e7ec | |||
4774012515 | |||
f3314c20de | |||
011bf13715 | |||
da335abfe7 | |||
0887fc4dbc | |||
0972871a23 | |||
45e103ca87 | |||
a10cc8a98b | |||
1e36dc078e | |||
ad7c33abd2 | |||
0f4191204b | |||
9965228c66 | |||
6c2f80c4a2 | |||
65fce098e3 | |||
07ccc8d9cd | |||
b77f01642c | |||
ffa83fc7f8 | |||
d90f8ac741 | |||
ebf380b566 | |||
cce7d826db | |||
e925af29d6 | |||
32fc4e350b | |||
f63f2f291b | |||
6ef0e80bf4 | |||
a7659ebe4e | |||
3920bc9626 | |||
3e343559e2 | |||
acf230c2ea | |||
6b0ebee63e | |||
dedd77f6dc | |||
74a0fad8a1 | |||
f040f759d9 | |||
3d5319eb5a | |||
83a55930dd | |||
6362df3f5e | |||
15412c0681 | |||
5e0119eaf6 | |||
f1d196c489 | |||
7cbf391bce | |||
1d8d99bfd9 | |||
c25d54b97e | |||
db3fbf22c2 | |||
cbd675173c | |||
a5e94fec5b | |||
2421de6701 | |||
dd73714249 | |||
793f3717b4 | |||
a228279ed7 | |||
27b295b98b | |||
2c62df229f | |||
95b3dc3da9 | |||
f4e90e8a61 | |||
c1042ba2c5 | |||
51d6f5cc0a | |||
e7a68ec05a | |||
7ee1c47cba | |||
7383318856 | |||
0cc811789c | |||
ca8968dbc1 | |||
7adfe80469 | |||
498f1285d2 | |||
800fab86dc | |||
77298c6820 | |||
8bd525001f | |||
fcb68f31b6 | |||
385667f679 | |||
a603e443eb | |||
5b90c0f158 | |||
e2852579b8 | |||
5de0897671 | |||
eb6ebc025e | |||
6edbb18901 | |||
56eb876c40 | |||
40a1d0d0fc | |||
fd952aaa50 | |||
2fa96eb33e | |||
89d3a2f01e | |||
98ec53bdf1 | |||
2d22f82a0c | |||
fb670fee3c | |||
af53ab38ad | |||
1ea938ca5e | |||
d1150fd6d7 | |||
5052e1f45c | |||
caebcb7014 | |||
265fad562f | |||
fb796034da | |||
0514324724 | |||
2ef2e4793a | |||
21176ddd57 | |||
6482b16c7f | |||
c57cae8c8b | |||
cf72a51abf | |||
10a879e65b | |||
84ec70312e | |||
927fa6d04c | |||
7de5677643 | |||
f9650771d3 | |||
2ccc0a4d9f | |||
299ee183c4 | |||
5558f7ba0f | |||
6efc764c04 | |||
fe4c6b8d30 | |||
a889e2a337 | |||
5504cdb511 | |||
4dd857723b | |||
7d85d43f18 | |||
efe858b170 | |||
c8ac8f5ce9 | |||
74406e1053 | |||
e286ef9f41 | |||
a16a09f869 | |||
549abfb5ab | |||
b15a15aabe | |||
f5ec52a522 | |||
d0f971fe9a | |||
6902263dca | |||
2bb7896c36 | |||
d5dde22758 | |||
aacfa24457 | |||
57c013eb11 | |||
4119391a8e | |||
e3f816c7bb | |||
640f549eac | |||
156be2db5a | |||
39ef890336 | |||
6d837df908 | |||
53d08b6ee2 | |||
290979f960 | |||
93a4e0135c | |||
1834fbb83b | |||
5d31dfa8df | |||
6da78660d0 | |||
fa1befcb57 | |||
8c5994f92d | |||
427487b173 | |||
f02fa4a1a8 | |||
71c5ca764f | |||
25ef410423 | |||
cbe266142e | |||
abfd165c86 | |||
227c649522 | |||
c3c7f8fc60 | |||
76def38abb | |||
36714d9fe6 | |||
c4ee714881 | |||
d99b693c96 | |||
8d529421d3 | |||
c6bc3a56d6 | |||
7ef6aeec14 | |||
7be232a21c | |||
9aae28b548 | |||
9fd2ad1d52 | |||
e433042a8e | |||
c1301dd2d2 | |||
1895d1a181 | |||
50811e2deb | |||
f20ef65e65 | |||
aa566ad07f | |||
480c2de549 | |||
023fdaffd1 | |||
698b05fdd5 | |||
96094b31e9 | |||
88f94a9635 | |||
d12d24b039 | |||
31f383686a | |||
9f5261e5fa | |||
d92966b610 | |||
61fcb7e965 | |||
7f4c30c1d5 | |||
8f7fca5370 | |||
699a709bdc | |||
7b13e4ef2a | |||
b0f00ed426 | |||
7a0b9c5e73 | |||
16e1fd5ae9 | |||
4f87ae1d4a | |||
0dbea48d46 | |||
1a5d279120 | |||
4de7610b32 | |||
52e14f78ba | |||
f332e47f56 | |||
f479c85227 | |||
4c3851afbf | |||
4490689d88 | |||
8f11d24038 | |||
51b1b2a0c4 | |||
da12ca98c9 | |||
b3e504c310 | |||
7e4ad26b95 | |||
2390754982 | |||
9036bd7cb1 | |||
41b078f8ae | |||
1e1d5d60f7 | |||
478f3d8f5e | |||
ad0116c032 | |||
1afe20b1b2 | |||
64d9e85681 | |||
dfff5c2d19 | |||
50e849fc9b | |||
6f9b1a9049 | |||
1dfa46ecfd | |||
823b1a8270 | |||
c9aecb4440 | |||
eeacd8349c | |||
e9e4e54e27 | |||
6ca3375c08 | |||
0afecd8d08 | |||
8056187e4e | |||
9e82bf36c8 | |||
747a2fc90e | |||
90ae08922d | |||
afc6c0ae12 | |||
260e98fbe7 | |||
914ea8e530 | |||
0c7aef73ac | |||
d211ede937 | |||
447a681d3f | |||
cec52453b7 | |||
33f3c53504 | |||
d4863a5ca0 | |||
a699240612 | |||
ce9b26cdd5 | |||
73b9fa6930 | |||
d807c806b3 | |||
a906918ae0 | |||
1120519e73 | |||
2988942b38 | |||
b82a571832 | |||
a12e16233b | |||
791097834b | |||
ed4be45d58 | |||
166d2ac901 | |||
5dfb3314b4 | |||
3419aaebf0 | |||
e69d2dfdb7 | |||
ff485f2bce | |||
f2df29e405 | |||
a763e8f92b | |||
a9b44f4c79 | |||
806deb6661 | |||
77639e4537 | |||
81dc20e744 | |||
2e973942bc | |||
8e15e91dc4 | |||
4cc42752fe | |||
709a1948b4 | |||
406ccf224e | |||
61dd05e010 | |||
4248d8e7bb | |||
efe873e633 | |||
565359fee0 | |||
82dcd5b9ba | |||
7fe5d3d382 | |||
31f6320afe | |||
eb876a5830 | |||
a94fea1ee4 | |||
5358467638 | |||
965846fcd0 | |||
1de8708fe5 | |||
c24db001ef | |||
0dd6ee783f | |||
27f340e777 | |||
9a5d6e958f | |||
63813f9d79 | |||
16b9bee9a9 | |||
7c7d0b1084 | |||
ca2e7161d1 | |||
206020ccff | |||
b2641792a3 | |||
aa2b614cb6 | |||
75f3d7ddbc | |||
bcc090d5e0 | |||
b8f03fd0ca | |||
995eed9fef | |||
46d05bcc4e | |||
00b490dd59 | |||
447cb44696 | |||
913824c910 | |||
ab8961e7be | |||
1295fa218f | |||
1d242799c2 | |||
b01a4c5757 | |||
f3a8bf13cb | |||
80273918d5 | |||
30cb21811b | |||
9d4d2d014c | |||
011e1b3fbc | |||
46ee366216 | |||
f8aa8dc248 | |||
c4691ab754 | |||
e325a4d0dc | |||
234f8e0405 | |||
172d2d140d | |||
3663fb36ec | |||
2eee6c3a7d | |||
285f20a7f0 | |||
81f70a9fdf | |||
9b725cf311 | |||
b1a128fc88 | |||
bc1941f178 | |||
b34be4d4bb | |||
ce97bca09c | |||
8da56e6e75 | |||
d8e6d3e230 | |||
f6efeae66c | |||
f8b2d32ad9 | |||
8dffc38f6e | |||
e82aa2238d | |||
4f4e86ec5e | |||
0b18296ca0 | |||
e6f12d0d50 | |||
9e16ca9dec | |||
a776ebb801 | |||
7f61e5703b | |||
d2c4797891 | |||
1c02f6f088 | |||
1d6a13c7ee | |||
e990f345c4 | |||
968ef75988 | |||
ec2cbecf93 | |||
8996b277ab | |||
7b97289d56 | |||
8d11cdc6fa | |||
99ab1fd13e | |||
b10478071c | |||
535d6d8cf1 | |||
30931f5a4d | |||
0b39379c9c | |||
ae5ab1826a | |||
31f914c554 | |||
a79d6e76b8 | |||
2fcbebbbcd | |||
50c667de52 | |||
c381b194cc | |||
d2c5b0e9bc | |||
24837e75cb | |||
095bdecab3 | |||
0671d73690 | |||
3b14a5f92a | |||
4cd9ac0a55 | |||
108a4763f0 | |||
6e4e6207f1 | |||
de89e950a9 | |||
60954722fa | |||
88dbfa96e6 | |||
c14bbc9c70 | |||
d09d8de7da | |||
de85f5ce2a | |||
21666e4611 | |||
76dab5f98f | |||
4bfbabdb54 | |||
99f967b7a5 | |||
42cd4ddb08 | |||
b606953731 | |||
b649d6ac11 | |||
1ab35a7f50 | |||
fc49adfe82 | |||
d5baf6d89c | |||
d490afbe04 | |||
7a8108deb9 | |||
a6a8df39e1 | |||
c2ffe89f77 | |||
a768deae73 | |||
2d24146aef | |||
7d3df29ce7 | |||
e77d939321 | |||
8494d8a165 | |||
f14c05f144 | |||
105d91e114 | |||
5c4056dd02 | |||
18edd0008c | |||
d37cfb7669 | |||
122cc8c61d | |||
405f229689 | |||
2b5892256c | |||
8cb7af8e7c | |||
03a4bfc54d | |||
e995684fa1 | |||
5a702653cd | |||
39c1b4f951 | |||
a70d17dba2 | |||
813a3bafa8 | |||
7e0019ef20 | |||
a5cdf75f69 | |||
4626a6684c | |||
e6b3168ff1 | |||
b9204fc012 | |||
c23fa81e94 | |||
6f06883856 | |||
6bb5b9a058 | |||
0603902525 | |||
492a792d38 | |||
238242bda4 | |||
72cdbfa2f3 | |||
641690b7ae | |||
454426d9d0 | |||
78f0301ba4 | |||
c519bff9c1 | |||
807ce6258a | |||
06b20ceb2f | |||
83f9f8983b | |||
42c5b010b6 | |||
a37ec522e1 | |||
d3a767f47e | |||
ad68e69612 | |||
612e403d53 | |||
729c61961c | |||
2f67b34e12 | |||
216d69d459 | |||
9a6bc07cc2 | |||
e1a27f2e49 | |||
1add483819 | |||
689c25b9d6 | |||
e4a7e46a9c | |||
2966e0d863 | |||
34be1be240 | |||
ae999503f6 | |||
517750745f | |||
8d735d2aa3 | |||
8579f23353 | |||
670cd9719e | |||
bac0f26e08 | |||
ee10ce6268 | |||
ad83023425 | |||
15c4345cfd | |||
3680e02e9e | |||
6890d935d8 | |||
90bcdb436a | |||
4324bc60d5 | |||
8ea26aebb9 | |||
885e84eb4d | |||
659a591aa7 | |||
6545145f0d | |||
81ef9c21da | |||
bab0544200 | |||
3322d33e08 | |||
c03ab47dc4 | |||
8e6059db28 | |||
7778cf2d30 | |||
9b1f3cc6fb | |||
11075fc80e | |||
723e3b10af | |||
abc69712c2 | |||
45a33b0771 | |||
d58877887a | |||
5e8e483051 | |||
95675d94de | |||
95059b7055 | |||
96771fac9d | |||
c4e9c4e554 | |||
812b54ef17 | |||
656fa56a22 | |||
a3b19441f6 | |||
05764cd6c9 | |||
4c7bf7eaaf | |||
e8c681cc62 | |||
022b1b992f | |||
69da754112 | |||
30c5e607b3 | |||
7f8da79777 | |||
10274d83fc | |||
d32b51466e | |||
a3492d71c0 | |||
a560c71109 | |||
c4aa24fc12 | |||
ab53c3964c | |||
a742681628 | |||
21c46c089c | |||
0c057c21e5 | |||
e94a578039 | |||
ba2e51bd49 | |||
7b42492bed | |||
d8774f6899 | |||
54d59ef7b7 | |||
54c04d5536 | |||
418190cbba | |||
b9338ba502 | |||
8af3e0eb42 | |||
ba7b90ecf2 | |||
7cdcf64f71 | |||
81e9263caa | |||
e4606bbff7 | |||
99059d170a | |||
2f78ce0995 | |||
29144554fb | |||
338d668b6f | |||
4a88b03a6c | |||
e84111c352 | |||
913dcf6482 | |||
7f3f52d7c6 | |||
dac1a456f9 | |||
f8c167549b | |||
16b34ed8f8 | |||
b967c60dc7 | |||
abefcc2e2c | |||
1e192138d1 | |||
a2e5746c81 | |||
794f1e785d | |||
517097f659 | |||
af6a434236 | |||
edd748fdb3 | |||
2494aa952c | |||
b2f3151ed9 | |||
d925ca70d9 | |||
1d14ef25f3 | |||
b77cf2299c | |||
d3a65deb25 | |||
b0f52fb5bf | |||
a4cd9117da | |||
482d3a1f03 | |||
27af8da7cb | |||
242da79a3f | |||
d828aed1dd | |||
3fca2c7922 | |||
71505f5f47 | |||
bd78c5a649 | |||
ebf5ae5bd5 | |||
4280b43473 | |||
98521c51f4 | |||
68b447c2f8 | |||
bab7f18a43 | |||
6d9af0ce6e | |||
8eb3a342d1 | |||
0ba27fbc44 | |||
ebd4dfa53e | |||
27545df163 | |||
e8e5107b49 | |||
7221830894 | |||
dd25dffa1d | |||
4089ddb13c | |||
d5c8a15d74 | |||
b825acb958 | |||
c8c83ce027 | |||
22b5ef961c | |||
c44cc19079 | |||
9f13cb72c5 | |||
0b6b968f9e | |||
855e1bc9c7 | |||
37c332782a | |||
a91eb90d44 | |||
3173f857b6 | |||
1037e34123 | |||
4778590d15 | |||
5d98dabb4e | |||
43026ba819 | |||
68fe2aa204 | |||
ec953face1 | |||
3157068bf8 | |||
53496e69ec | |||
ec1b37decc | |||
4ace49c9a2 | |||
423c9faf63 | |||
e178df27dd | |||
19af7bc822 | |||
8a269deee6 | |||
6edbaa2d9f | |||
98f672a5ea | |||
6bd99f9ada | |||
ba4cfb504c | |||
09f06056eb | |||
13818f5c5c | |||
d992944d09 | |||
f5e636ccdb | |||
3f7bb7dc44 | |||
d882bd478d | |||
97b8b17600 | |||
2c30a83d9b | |||
a8f76904fb | |||
d40a4c2bb4 | |||
740cd31858 | |||
3d3728b0d0 | |||
da43737c4e | |||
127455c414 | |||
95be98ac2a | |||
6e82ebff73 | |||
6724ba4f04 | |||
69ff428159 | |||
bda338a1be | |||
a03b18012d | |||
e87fcd4db3 | |||
d7c31d1dbe | |||
5f5ea02b3d | |||
cfb1bf2275 | |||
ae930d85c2 | |||
31b4209201 | |||
0185d6d760 | |||
dd01e0131a | |||
b182189326 | |||
4447996cc5 | |||
8fec6a87df | |||
456218384c | |||
dcb14c63af | |||
89cd52a65a | |||
7a8b3b58c4 | |||
867288490a | |||
a904fd6173 | |||
f0a7e36527 | |||
db717db5c5 | |||
ff687b1f24 | |||
9bce1fe727 | |||
332da01c89 | |||
6215e61292 | |||
a89406e7f7 | |||
c7762466b3 | |||
1090b16b98 | |||
3865a33231 | |||
2cdf8bdb61 | |||
68220b5c42 | |||
7a18721cc7 | |||
e8118acfbe | |||
f7407eaf02 | |||
9a446bdf07 | |||
7f0d3de251 | |||
6e3f383927 | |||
8e425b0245 | |||
87a1bd696d | |||
ec098b5e7f | |||
28e2353e07 | |||
74dfbd09fe | |||
59881a62c1 | |||
2f67badda6 | |||
437c2baac4 | |||
57a2a3ba93 | |||
acd65dddbd | |||
4fb2328fed | |||
4df6b2673b | |||
01b5dd60a8 | |||
0bb62907eb | |||
2ae89398aa | |||
92f447aa92 | |||
122011453d | |||
90a43067dd | |||
a84414a0fe | |||
7e96518e63 | |||
56823f53dc | |||
91947604af | |||
0151b463c3 | |||
8240cc33ec | |||
5d7c3a4f01 | |||
3d35756d5a | |||
a8b82717ee | |||
0a8b1136e6 | |||
7a87c9203e | |||
a65ff854cd | |||
266819104f | |||
c627dc9f8c | |||
c10f8b219e | |||
b6d7a12d0f | |||
11aeebec32 | |||
1b8e65dee1 | |||
9a1853a98c | |||
f5d090d19a | |||
a15a6045d2 | |||
df8462c36a | |||
560eab7de5 | |||
4084702567 | |||
7eac884bad | |||
8be0146528 | |||
9056fde023 | |||
096426b457 | |||
e747e8557e | |||
b7b41732c9 | |||
e64513c767 | |||
4742f53770 | |||
a04d37ccb3 | |||
b238caaaca | |||
318c3ad674 | |||
522b39e757 | |||
291b58f06e | |||
aed1952f05 | |||
afefa506d6 | |||
52ef869b94 | |||
e1152c401a | |||
813b2f030d | |||
32b99169a5 | |||
2c7842407a | |||
83e6c15b0e | |||
eb4bb6f563 | |||
168b38bbb3 | |||
5b3e995710 | |||
dfd52bd466 | |||
5273322f73 | |||
85a967f248 | |||
10de874e9f | |||
5e82d443aa | |||
01ae4a7706 | |||
d192590e29 | |||
c92c5e5450 | |||
3051a9ecfa | |||
b33c6fbfd5 | |||
4ce0a07f06 | |||
b6fc13b3db | |||
74cb3e7869 | |||
c5c3e3c594 | |||
6ceec167f5 | |||
cdb5b56303 | |||
a09559501c | |||
ca5ed4879f | |||
202b1899dc | |||
3e945f1a23 | |||
c79fc4737d | |||
70243cd801 | |||
3b8ddee47f | |||
cf0cd65038 | |||
052e439318 | |||
cc7acb82c0 | |||
d75ee46d3c | |||
0b123dd72e | |||
58a8ad1661 | |||
bde284b585 | |||
980721b3ed | |||
1156acbb7e | |||
86a2324ee0 | |||
5d47887965 | |||
40f53f4b87 | |||
cbcae2744a | |||
a3868296ce | |||
e9fa37894e | |||
12e2e0e609 | |||
5276c34654 | |||
3d695d2e6a | |||
2a58e187af | |||
77330e5b15 | |||
15cbc3b599 | |||
619c60f94c | |||
63b87e985c | |||
f595984043 | |||
3dba88401d | |||
738aaa24d3 | |||
43f6598b27 | |||
bb6bf5a1d8 | |||
1943b27ea3 | |||
49bc3b7aee | |||
c0733e1639 | |||
c92efa3363 | |||
c308f021d2 | |||
c8d7c4834a | |||
ff9ba54ce1 | |||
b484609a02 | |||
ac204ba6b5 | |||
9de060fd34 | |||
e9b0830422 | |||
e0c2c06ba1 | |||
9d1bf811fe | |||
80b2f23584 | |||
d4f81bc21d | |||
145ecc6761 | |||
f1eaa67221 | |||
746f438ada | |||
7aacdd1d35 | |||
f6e3254a9b | |||
c73102d0f5 | |||
d8f352b4fd | |||
d8fcd42089 | |||
44948a7c5c | |||
e09294f57a | |||
285dd6ec3a | |||
82d16b150c | |||
422501fb14 | |||
e75f1807e1 | |||
b67f385b69 | |||
2091965973 | |||
887cf3017a | |||
5207243270 | |||
a7e6788ea7 | |||
02bec2bd5c | |||
c867cd3675 | |||
401c7a648a | |||
12d360012c | |||
68365e10e3 | |||
f71902da5f | |||
a76f659840 | |||
c4ca8c3556 | |||
6410a0002f | |||
f34bdf8c5e | |||
b2d633db07 | |||
ff254ea60b | |||
7a940dfb22 | |||
54d500788c | |||
0a20872de0 | |||
fe276fb250 | |||
1999bc5d00 | |||
c027ece821 | |||
442bde7b62 | |||
959a448806 | |||
805ff571e3 | |||
2fa838dbab | |||
9b629ad37f | |||
ea9c96aa9c | |||
10ee7fc03a | |||
5779ca718c | |||
f0cc7adb2f | |||
ff61a39e90 | |||
84446e6e54 | |||
a2642d0ffe | |||
b284013065 | |||
51c4d68fa7 | |||
74ace5cd3a | |||
8aa9edfa4e | |||
ff092d4167 | |||
66b4f0181c | |||
3e29ca93fc | |||
61e60d1c16 | |||
e54d784d02 | |||
9e74c42b1f | |||
fca1797757 | |||
4988900789 | |||
286c2f6d4a | |||
65819cd364 | |||
0810538b63 | |||
abeececf18 | |||
062c4a17a9 | |||
5c7341331d | |||
175e4c59a0 | |||
7a92e3895f | |||
35f0a8fec7 | |||
71555955e9 | |||
2cba9e44b6 | |||
1174dad2e2 | |||
63d2008308 | |||
b1b0294e6f | |||
0bc878db19 | |||
d93a5bc115 | |||
a7adf77afe | |||
486eabce80 | |||
547e58db8b | |||
e18a97813b | |||
86e9b41ac2 | |||
5c5f211b5b | |||
24d024ae24 | |||
98f7d60d97 | |||
608a75c05a | |||
030d338bb2 | |||
06c761ca94 | |||
4a6d441637 | |||
2b04c0c1bd | |||
aeb5268a62 | |||
4a3fab0cba | |||
86cf75acfb | |||
fe33f96366 | |||
7e821a1526 | |||
e5446cafd6 | |||
0526554699 | |||
a9cbfc7029 | |||
037137de15 | |||
0c510a2ac3 | |||
72bb8aa940 | |||
485a83f1f3 | |||
ff251d21d0 | |||
20eb3506ca | |||
f5502310e2 | |||
fce36e448d | |||
11c6b8b531 | |||
b8b41338aa | |||
dc0c02fe34 | |||
7fb69b01c3 | |||
4de1a31cb0 | |||
cdd2f63947 | |||
826459dad9 | |||
8f20b12c95 | |||
db4719f039 | |||
264e14b143 | |||
86d6816db2 | |||
d509076044 | |||
90baf6a403 | |||
a8e31caee8 | |||
6d085446fe | |||
c4b3903361 | |||
4ef37ae68d | |||
15f84cc33b | |||
c4062c78a9 | |||
6b688f5329 | |||
036d66be05 | |||
b1db6744b6 | |||
2ed14dbc80 | |||
e9514a43ee | |||
804bb522a3 | |||
7cb4cb64ba | |||
f81d09d653 | |||
6f35c53bbb | |||
39239e6fff | |||
ca77b35e4e | |||
da00a298f4 | |||
f6c4eeab1a | |||
e050a01a90 | |||
59626b8670 | |||
9cf9b85476 | |||
52e48b56e2 | |||
733f03d6f4 | |||
9602a4ac77 | |||
e80fb4bd30 | |||
c1dacb9a41 | |||
19a3c49539 | |||
79520c6e94 | |||
c26b567478 | |||
4dadeb3f22 | |||
7ad729c136 | |||
d1ff7e43b5 | |||
6259aeb86e | |||
bb95f24115 | |||
2d11f71220 | |||
2126aecb32 | |||
d4749184c2 | |||
ad21d6bfca | |||
91a2cd4770 | |||
f41ca1ed76 | |||
ec38570ead | |||
fc36e9fb0e | |||
aacbd66a85 | |||
f76822a75c | |||
19d4364ed6 | |||
f124939945 | |||
b03dc9c12b | |||
6ab87664b7 | |||
e49dec45c8 | |||
618b9ade15 | |||
85790d028f | |||
d8b9e562d0 | |||
ea32c52a0e | |||
eb89ca67ef | |||
906f9be383 | |||
05af850b28 | |||
29b030dfcf | |||
d591a5a328 | |||
fa6a85c850 | |||
3942a902cd | |||
b57373b058 | |||
985f3e05e3 | |||
602f93ed52 | |||
0a1491366b | |||
789f6f7c35 | |||
45df9c1b91 | |||
dba3fe7ad1 | |||
6962b6ecd3 | |||
aed4aca3fc | |||
65418cc8b5 | |||
ffdf840dbb | |||
12c6a58857 | |||
35dc4b0ede | |||
394c6b0922 | |||
844775059d | |||
f5552cef97 | |||
86024954df | |||
07acbfc6a5 | |||
984ecf9e74 | |||
ec38e67d6c | |||
3ac44141ba | |||
604ffa6d23 | |||
5f5b7ddbf3 | |||
bb3e9ef507 | |||
2e1384aa47 | |||
84355a1aad | |||
ec2ee184f7 | |||
5152f16a2b | |||
5deff30059 | |||
c94bc8e2d0 | |||
505320375e | |||
4797bb9be0 | |||
9a05600004 | |||
e1738143e1 | |||
4ff99a2655 | |||
a39c577257 | |||
43ccd6a4ad | |||
34fc29ae96 | |||
1b33205909 | |||
428a682abe | |||
ffab5e64d1 | |||
1c88b10be2 | |||
0e560e7015 | |||
0f3bc81210 | |||
48c99db6d6 | |||
a6529e789f | |||
77ef99be22 | |||
9a094c4b63 | |||
fb95555088 | |||
a3c6ed0dff | |||
33b59c9170 | |||
3b0a4899d8 | |||
11235d6875 | |||
a554122553 | |||
d51fd30eef | |||
7cd81b91ac | |||
1a39aa01d1 | |||
9d5e724010 | |||
ec54445cd4 | |||
007cf382f8 | |||
218038428e | |||
1493e2d6ee | |||
90c27e9611 | |||
6f5f376b95 | |||
b27e7db0dc | |||
ecbd1a0f06 | |||
22ad95394e | |||
6324759784 | |||
9382f0c251 | |||
04f1de3e14 | |||
1afe46913a | |||
06f1fed3a1 | |||
3529024071 | |||
f95b9b4b09 | |||
ea573b04d8 | |||
64c6a746ac | |||
75439de2d9 | |||
86afb171b6 | |||
e49dfb6c44 | |||
6bcaf6f908 | |||
b3a7c84b43 | |||
e22eef7c51 | |||
8c80d9e612 | |||
fe5cf51258 | |||
373769f103 | |||
5dd52c77f7 | |||
ea120f96c9 | |||
ffdf1f9503 | |||
00f11c0290 | |||
aa969e887a | |||
f6f1215cdb | |||
d6ccbb9d48 | |||
e0936a56ec | |||
be35a3a012 | |||
bb4bee8572 | |||
2e97897ea3 | |||
a2db88eb5a | |||
c3ce09cdac | |||
b2d8a5c017 | |||
aa77d1364f | |||
68bcc083bd | |||
ad581984a6 | |||
45ce5d8973 | |||
d152837d34 | |||
4f880b9ab8 | |||
a03058a22a | |||
f4f2132c64 | |||
388aaf734b | |||
c2dd4c7a6b | |||
e2856be098 | |||
f26b2e5c91 | |||
89c05c56c0 | |||
4dc85f11d1 | |||
6f4dc8f7a4 | |||
56a676e5d0 | |||
f843e0a8ef | |||
b53dfc727e | |||
39a223724d | |||
73c73dded6 | |||
c64465f212 | |||
c3d88eee64 | |||
788eb99448 | |||
d510b60f5b | |||
2151f7561d | |||
a90854d429 | |||
3c4fd70d61 | |||
574b1b9674 | |||
a3a66b6e68 | |||
bc134812c3 | |||
a6fc2125e7 | |||
4f69ab729a | |||
ee2a365872 | |||
a8d4a718e3 | |||
e094b1f137 | |||
259cccd7e7 | |||
237bc2efaa | |||
72616b3813 | |||
a634257f13 | |||
583d531bd6 | |||
517453a6cc | |||
81d55cf6d6 | |||
5461662c66 | |||
466edb51b4 | |||
6ba1fcac34 | |||
4f1147b541 | |||
f87427f1a4 | |||
78452a584a | |||
93329d8189 | |||
9edeb31d4a | |||
fc29afbdd4 | |||
b4b4fa5b2f | |||
e166cb38bf | |||
d86db1ca8e | |||
1deca23f0a | |||
6dd2e7b926 | |||
0967d78490 | |||
37fbbfd3bf | |||
c8a0faab5c | |||
fd05601eb0 | |||
c023839a84 | |||
35b3cc9b6d | |||
6564842857 | |||
b5a237d911 | |||
6b486e1588 | |||
4299cb4829 | |||
e88f705946 | |||
24b1d8af06 | |||
a8df6cff16 | |||
d9e58dca9e | |||
a2a9e607b1 | |||
f21e5c06cd | |||
e0f058ffa8 | |||
caef68968c | |||
9bbb108f24 | |||
19b66235aa | |||
076d9b9778 | |||
448ecc0e06 | |||
3c6ad8d184 | |||
fbad99f347 | |||
79cc5e01b8 | |||
94e4961a01 | |||
f7a7e65aa4 | |||
80594b79f9 | |||
082b36009c | |||
d6d71ce442 | |||
44c431e161 | |||
2e77443e47 | |||
06d224f65e | |||
082f0b94ee | |||
6c2f34ab32 | |||
1cd95b0acf | |||
a3544e47fb | |||
063fc1747a | |||
1a973434c5 | |||
2fec394913 | |||
708e4cb596 | |||
db53013b18 | |||
67444fb952 | |||
f232d30f38 | |||
5e03bd4f6d | |||
94bcbca32f | |||
e963532a96 | |||
b9c5445638 | |||
0a76e7a493 | |||
668cad1c9d | |||
a81c46180c | |||
0f21996c1d | |||
3759e26c87 | |||
01ae7e7de6 | |||
567e8eacfb | |||
da996f893d | |||
9a6fc577d1 | |||
dd2f3fa533 | |||
cf6dc7d3a1 | |||
aecca7592b | |||
060b8ad7a3 | |||
ccf99a39d2 | |||
3da5569488 | |||
6e2f5f2ee7 | |||
fa265fdc3b | |||
6302f8de83 | |||
2fff484961 | |||
26a692145a | |||
cc93c6e474 | |||
4949a3dd62 | |||
1aaa72836d | |||
df89df7e59 | |||
dc41371ce6 | |||
b08543a640 | |||
d2b3961fdc | |||
7ac6ae95ca | |||
e7fc29740b | |||
a24efbcb96 | |||
60aef5f8b5 | |||
eb26530e2c | |||
e20a2b4427 | |||
72ff4b774d | |||
2f33a671b4 | |||
b743178ab3 | |||
278963b91a | |||
e4c8dc8bb1 | |||
05d1e9e2fd | |||
62044c3e57 | |||
80a2e0d9b9 | |||
833e9bad47 | |||
20a609f0f7 | |||
a6daff192f | |||
9e58afef59 | |||
ffa2adf2ae | |||
0d2086b1ee | |||
b3a69e12cb | |||
f238ead6f1 | |||
94eea6fe16 | |||
896a1f7609 | |||
12d3768ec5 | |||
b35adab862 | |||
7d3bd6b505 | |||
a0b97f3743 | |||
244391a075 | |||
6b17794dda | |||
43a5e0cc07 | |||
22fd0dca17 | |||
b99d592752 | |||
32f9bcaa91 | |||
c87bcf4d9f | |||
1649e0a549 | |||
07dda337b7 | |||
dd754fce72 | |||
d30d9a27dc | |||
996bab4a20 | |||
f462b3d379 | |||
dd1fb4e38c | |||
2f8228d3c9 | |||
c715dc80f9 | |||
84a37b9d55 | |||
f1f560568b | |||
6d26d8077a | |||
b9e8044b28 | |||
899be1b352 | |||
969a5c8e85 | |||
0ffebacfd7 | |||
5a7e4a5982 | |||
b726e09157 | |||
a7d3293886 | |||
dd11bf9fe3 | |||
552163ef79 | |||
9c8f0424d6 | |||
30570a7de1 | |||
1132600478 | |||
ad6f6d6bf1 | |||
7b78cde554 | |||
372766f26b | |||
d12f030150 | |||
a85d4a5a9c | |||
841491c06f | |||
5b9c3ddaca | |||
1b150cb000 | |||
72463720a2 | |||
26b0bad671 | |||
b70ff52b83 | |||
ca935d1107 | |||
6109c2cf83 | |||
10dd775ae3 | |||
30cca6ca2a | |||
5f262be24c | |||
1a5f25ea7f | |||
0f30063abf | |||
021c621eb0 | |||
8fee9951d3 | |||
68d68f1d7c | |||
4cecca4925 | |||
7e703d77b2 | |||
757d645cb0 | |||
74bc46c4db | |||
35b601cd71 | |||
c86acf4216 | |||
0589e3ce7f | |||
ff730feacc | |||
7aa5b5ece9 | |||
739c080eef | |||
a9caa50e8a | |||
3d6d1075b2 | |||
40d45996d8 | |||
9853e42a8e | |||
3be5565d5d | |||
9c55c37a18 | |||
ee25a6fb0e | |||
262a18ceb2 | |||
5b302b2ed2 | |||
6fb87c2b77 | |||
ab5eb89a6f | |||
6e732d34a0 | |||
6e0ca68c82 | |||
4fbae5c559 | |||
da5553cae4 | |||
f37e8eaa77 | |||
8fff297ea9 | |||
27d4550430 | |||
31218a4259 | |||
37cae54034 | |||
522e0dbdaa | |||
5f30ae3714 | |||
20ca7ebe31 | |||
7c7e9a2f16 | |||
fe97ee33e8 | |||
3b3d085338 | |||
b3fcd5d57c | |||
7080856542 | |||
c351e8c302 | |||
9a2b5e0ca3 | |||
21e2b5a0ce | |||
cfa02256a5 | |||
944da4828f | |||
865db966f8 | |||
560384fe96 | |||
a11675c42b | |||
64120762f8 | |||
3d93f045b2 | |||
43881bb214 | |||
864be5bae5 | |||
dc15505795 | |||
07bce4ba36 | |||
563c860c0f | |||
368c9a1847 | |||
65fd33f95f | |||
c0dbd4cb56 | |||
404aea866c | |||
585f4d46cc | |||
ed6bda2818 | |||
e65e9dd6b1 | |||
ee1fb0aa1a | |||
70f1af8934 | |||
4c4a360018 | |||
275440edf1 | |||
c5cc741fe9 | |||
b993cb2d6c | |||
a5ce4d3e68 | |||
19dd694401 | |||
1b5e855347 | |||
39df11f104 | |||
0322bc5ed8 | |||
a684d677fb | |||
49e1140879 | |||
df7d4fc297 | |||
a70ebdf289 | |||
ed7ebc26fa | |||
3cf3635d23 | |||
dec2c78403 | |||
6d7a6d291d | |||
4d4953b261 | |||
1254e370cc | |||
a7f018a00d | |||
eb6f80d049 | |||
5ff17ed393 | |||
d06f800cf8 | |||
639cc9c6ba | |||
00b5f53361 | |||
060ae5c88b | |||
38fa9f25ee | |||
ea1dd2e7a8 | |||
df84a28ccc | |||
b8a82496fe | |||
39a84879f5 | |||
3b7983a044 | |||
cf445ea89b | |||
7d66b39513 | |||
26c0e95394 | |||
9660f06634 | |||
a8817fc05f | |||
77d3b655ed | |||
487c1a24f5 | |||
875c21f491 | |||
d73d19805e | |||
16d71173aa | |||
c4d1b47ad9 | |||
b96c358751 | |||
9cbf26d18e | |||
9023eead66 | |||
9b04f56d4a | |||
cffc938934 | |||
1cf2427d1d | |||
42e4433ce0 | |||
0b7446a269 | |||
da321d8834 | |||
460b4f8dfd | |||
1e9ea81a7f | |||
f276079942 | |||
246289c094 | |||
7f501a36c6 | |||
3202c8afe4 | |||
cbce39005e | |||
98872649c5 | |||
9daf5f071c | |||
4330b961c4 | |||
f578b6f8f4 | |||
849104f2fb | |||
be6ad1ace0 | |||
2a358fc52d | |||
459d9e26dd | |||
2d852cffb9 | |||
93df61f3a9 | |||
fa21c922c6 | |||
3acea5c51a | |||
8684643911 | |||
11fdb17564 | |||
3fa23b8c00 | |||
7aaea37e37 | |||
5fc2bed629 | |||
129ed0a264 | |||
98cc7830e7 | |||
33c0aac3b6 | |||
d8ab828e5b | |||
255b6f8646 | |||
2399adaeb0 | |||
cba669cd95 | |||
338d670beb | |||
84439c26d8 | |||
31fdefe584 | |||
4836889249 | |||
ee04881360 | |||
5ddcfe5ec1 | |||
abde3ff503 | |||
fd3df8e24b | |||
02414f8d57 | |||
0a45b40fb2 | |||
e780d980e9 | |||
9849488da1 | |||
90be7544e4 | |||
a6b0922aa1 | |||
1ac6f8b804 | |||
bbc80f4405 | |||
1318ab475d | |||
b274ec73ab | |||
10f9b83f53 | |||
32770f840d | |||
9debbd65af | |||
33bededa11 | |||
50632878bf | |||
67df3ff800 | |||
ec99cd9112 | |||
ee7fb34dcb | |||
60f5328c7d | |||
adac6f40f2 | |||
27ee72f117 | |||
c1363d7541 | |||
889959890c | |||
564b4c5453 | |||
a21690ba12 | |||
ffc87e9cbe | |||
ac86cf33bf | |||
349b64f37a | |||
0b53d8b883 | |||
1d18c8e3c8 | |||
29148b9cd6 | |||
db185182b5 | |||
230dbd6d3c | |||
faaafb4db1 | |||
86c24a2452 | |||
2fae1c0494 | |||
ca71e135bc | |||
816a41c904 | |||
899525d92c | |||
7d638784a2 | |||
7830af3c8d | |||
22ecdbe9f3 | |||
6271dd8459 | |||
e0165fbc94 | |||
cdaddde067 | |||
62d6f1f943 | |||
0a54685b29 | |||
d0bc92df73 | |||
ae38035d3a | |||
851571249f | |||
33c548b1ba | |||
cdad79659d | |||
94239cd6b1 | |||
258f766e56 | |||
c9c7e2d54f | |||
3555b2f9f3 | |||
bebe4fbf40 | |||
849a553505 | |||
2cbe43890b | |||
693511033a | |||
85a2026800 | |||
2976d3286e | |||
ad4f6d7c6e | |||
15e379aaf3 | |||
064b250fac | |||
d4ed0e1c48 | |||
c102bbd2ad | |||
8438927879 | |||
93cb1809a2 | |||
dd5fe14759 | |||
c9e529408b | |||
ebfe6d3d3a | |||
e3ecc2964e | |||
f9e24ddf86 | |||
0df42f31b6 | |||
315ebb2571 | |||
2659d40905 | |||
ca083db4d3 | |||
d92d7cb515 | |||
157f9f567b | |||
d22f256e03 | |||
ac8c357ddc | |||
316466b765 | |||
db11fa46ad | |||
ef5c235541 | |||
0bea950a47 | |||
27c9fcfc48 | |||
602943f8da | |||
8dfeb06eb1 | |||
e9fed766df | |||
73c967665b | |||
a4ecf9654e | |||
9d732d3462 | |||
e5aafb6fbe | |||
aafa1621e1 | |||
a2c4cd7e08 | |||
6245d076b9 | |||
fda6e6f305 | |||
a0f68cd8d3 | |||
000ee73e8c | |||
e3b18bf63d | |||
fdc8fd3602 | |||
1ee8ddc484 | |||
7435e254d4 | |||
ade4f3520b | |||
ae7ac8a723 | |||
fa5f9b5aff | |||
e76ce871c8 | |||
49dbbe99c2 | |||
2289a70b6f | |||
6c7441f5e6 | |||
47d58e5df0 | |||
404c0c455c | |||
0308313e07 | |||
952e6b1ef8 | |||
f67e67510b | |||
1476f6992a | |||
1b8906a529 | |||
c3d7846a33 | |||
ac7ec27e5c | |||
892a423de8 | |||
613f9fc91f | |||
c963499791 | |||
58dfc6c479 | |||
ffa033e13a | |||
e2ec60f28b | |||
cbd5bb9cc7 | |||
78f52fb7d6 | |||
b04405ff76 | |||
20f5687def | |||
8516c219ce | |||
3765b50374 | |||
4891e0b4d1 | |||
cf246d5166 | |||
bdd5031ad2 | |||
3f2467032e | |||
6dc6ee6e72 | |||
4abc731831 | |||
aeffa86cc5 | |||
656743fb6b | |||
022c62a7a4 | |||
68a1cb58c0 | |||
c81509c71d | |||
4d088699f8 | |||
4c77a8b3ed | |||
19a0923ca9 | |||
76eaab0fd9 | |||
e404eb2aba | |||
ef7ea6b77f | |||
78b05575bf | |||
0200143db6 | |||
a12c15907f | |||
d70c560a19 | |||
53dd00a6b0 | |||
f3985488ff | |||
24130ec42c | |||
6c78420bcb | |||
f984aecc02 | |||
aded1d7fd0 | |||
aaa4a0d39e | |||
64d0ad347b | |||
56868b8045 | |||
3ebfd3fb1c | |||
38cb7c1615 | |||
1f7a39eaf6 | |||
05a480acea | |||
31ed8856f9 | |||
08de06ad6d | |||
3c18186e76 | |||
22236a580d | |||
9e591c409a | |||
f9acd37d7f | |||
75f6ab35ff | |||
8ace387090 | |||
4389bbc55d | |||
e53534eead | |||
a1c247b55d | |||
13d6a4647d | |||
08bd2077bf | |||
b0db813523 | |||
b218c20c00 | |||
c1d524b8c6 | |||
9a1620f4ed | |||
5e6e5c11c7 | |||
8130959d01 | |||
5e0db41602 | |||
3ec3cb82f9 | |||
27b149c30b | |||
027b8b2ab9 | |||
4e66d932c7 | |||
244f455bd9 | |||
9c19a4fae8 | |||
f0712795b0 | |||
a3c44d843c | |||
3c70774629 | |||
22bcb5643b | |||
64b88623cb | |||
77516ca792 | |||
e515515e2e | |||
6807204919 | |||
2266b33935 | |||
d2c57f2a0c | |||
f7e91d22d4 | |||
2efd6441c4 | |||
1da9e35bc9 | |||
0ad5fbd48d | |||
2cee2ff256 | |||
b339fbb79b | |||
b773729939 | |||
ac80610b51 | |||
ce66cd3e49 | |||
8331833c89 | |||
a626d2ed6f | |||
f38dc8b11d | |||
c39f009739 | |||
c6c64e844b | |||
2e3edcfbe0 | |||
845b65bf5e | |||
5a27b75642 | |||
cbde6410a0 | |||
e4abe7fd5a | |||
f06d046c10 | |||
859ca18ced | |||
99157c1f4a | |||
61ab526971 | |||
21f9650b7f | |||
9f0093d208 | |||
00d66603db | |||
ae4eba9be5 | |||
0ec903a73b | |||
76943a3443 | |||
37158c588e | |||
2a08ca7e7a | |||
5b880a1333 | |||
fafd512842 | |||
b06dea9e90 | |||
488f5d8593 | |||
a59b5f8ca3 | |||
f6676df8b5 | |||
8972cacd48 | |||
bbc3cf499a | |||
f608a9b8c6 | |||
03437f0773 | |||
15a5b0a571 | |||
3b2d9970dc | |||
c0ee13a730 | |||
9d403afe5b | |||
1cc58cff6b | |||
dc324792be | |||
9dfa63b3fd | |||
cb108eef21 | |||
9759dc334e | |||
328a023795 | |||
23af35f040 | |||
965f98c8dc | |||
635ac11deb | |||
d67cf181bf | |||
7dbc4a4658 | |||
f9e18520c9 | |||
e98dbf31f2 | |||
9cf49da224 | |||
e167c38775 | |||
038dc4535c | |||
1ad0f6d90b | |||
75d19d740b | |||
36f9ea6f2a | |||
0c1d660263 | |||
433bc3eed3 | |||
c23ec645d3 | |||
67e3365eb0 | |||
944cf91fd9 | |||
0be419947e | |||
37eb24be15 | |||
cc975c5c65 | |||
f09221c033 | |||
57419de187 | |||
8d0a609e6d | |||
45b0714c89 | |||
f51738ddab | |||
7a5c369614 | |||
9789689e41 | |||
aaa69b621b | |||
0fc6bec763 | |||
89fe2f34b4 | |||
d0d528a92a | |||
24e4edb376 | |||
65f81a7b90 | |||
ac1c9bb5cd | |||
d626e554aa | |||
3f0a95ac4c | |||
e751a101c0 | |||
b89c8bb135 | |||
9d733def59 | |||
739a6ad1ac | |||
d0b7a534ce | |||
b7fe448575 | |||
ba78fce868 | |||
a3288b38e1 | |||
417a6da449 | |||
f542b7bcef | |||
1c7ba62eb7 | |||
c86b119495 | |||
8b043c058c | |||
d4b58259c4 | |||
2787237dd5 | |||
10f7f997ad | |||
ac0dc4a840 | |||
540902ca47 | |||
6b43055b7a | |||
0052d05101 | |||
b5e27a81cc | |||
91839eef5c | |||
76e72a0dd5 | |||
7c0e49b24a | |||
0698f0f354 | |||
8818ddab82 | |||
3ece16410f | |||
292a764141 | |||
e23b0abe30 | |||
465b2a8f00 | |||
af4e8e82c6 | |||
58a3f765e9 | |||
d509ee55b6 | |||
d5ab1267e5 | |||
dd4741c7bd | |||
d736b1a607 | |||
0728c46925 | |||
0ada720d03 | |||
aba6715fe2 | |||
eec3e3b3d9 | |||
408e5ab6c9 | |||
297d27b8bb | |||
3a7db27f45 | |||
1b5b41a790 | |||
8ab253c9a9 | |||
9f5c365e6d | |||
197c486997 | |||
b5df56f6f2 | |||
f4d98fdd20 | |||
f2d38baa98 | |||
d194081ba6 | |||
d6375cf556 | |||
37765930ec | |||
279c3e1e7d | |||
c89d2a2890 | |||
8199b88222 | |||
fc7b41d370 | |||
23b081825d | |||
548d350305 | |||
7d4ef16efe | |||
88615629c0 | |||
eb723f01af | |||
70992a4335 | |||
18d360a582 | |||
f6d320060d | |||
3840bcc19e | |||
9c27dc8d56 | |||
bb9dda4a7a | |||
1d05a3bf56 | |||
4940255a40 | |||
beee666ad3 | |||
a7bc5b818a | |||
186c0eb27e | |||
f9544da6c4 | |||
fccc24f063 | |||
f31c2f2b7a | |||
17721be11a | |||
3a2d4000ce | |||
1b77a487d6 | |||
1c22753996 | |||
805b96cdc6 | |||
4bf70523b3 | |||
732e9e6382 | |||
8b0636e06f | |||
8e6f162cc0 | |||
e78e909180 | |||
4ed4c2474b | |||
b35b823a59 | |||
8583191e8a | |||
6f468a58c1 | |||
162d704b57 | |||
be5cc7da5f | |||
e05f81a3e0 | |||
98d580b8fb | |||
3b6b9c7b78 | |||
985821c4f2 | |||
083702c32e | |||
375d460f5f | |||
68d19f83c3 | |||
34e84b5858 | |||
55bdaa98e2 | |||
d74cd60b81 | |||
0591348833 | |||
cb9773443d | |||
740d62c9fd | |||
7dc74b2f6e | |||
953a26875b | |||
0d18da8627 | |||
71624cd94f | |||
2cbe3df2cd | |||
5413a77f34 | |||
c8085e029a | |||
35808fdb08 | |||
e0469b6ded | |||
2fc5976740 | |||
8572e33e5c | |||
92e4ed1702 | |||
1bc061ee90 | |||
cee844c957 | |||
780e02d1a5 | |||
c196246f75 | |||
e1383d39d7 | |||
4338ae3194 | |||
95a1142019 | |||
15ef9b6513 | |||
a6e4afc1cb | |||
e8ac16e7e9 | |||
839c98aa8d | |||
6473473417 | |||
b68dbc47c4 | |||
070d7a6c4b | |||
f1b0935ec4 | |||
b64cdebd2d | |||
f1e25b1e35 | |||
e697fd9ecb | |||
97fce56b9c | |||
14d0a6a982 | |||
5aa09de155 | |||
193aac8835 | |||
fc63f8d5a9 | |||
91a4512adf | |||
0c094aeb0e | |||
9918c34d87 | |||
418bc72d01 | |||
1a98880228 | |||
02d4318ae2 | |||
103c1205e7 | |||
b600d41c3f | |||
d0a62c667d | |||
52016659a4 | |||
b45219e720 | |||
421285ebc0 | |||
9448682239 | |||
64fad6feb3 | |||
9f23583fa7 | |||
e795772585 | |||
5497194334 | |||
cad3f47cda | |||
ec39cb3a80 | |||
68cb9ed068 | |||
7ce9883058 | |||
c37b9aa9f0 | |||
58ba83fe74 | |||
5fde1b7669 | |||
3b947e2094 | |||
66c6413c69 | |||
c4a6628a6f | |||
1bc87143a4 | |||
8e400f0cca | |||
2e2f72ec8a | |||
2826cdccd1 | |||
1e4779e87e | |||
ce5b1d1ec7 | |||
5edd51f3c2 | |||
f669c81cf4 | |||
4ff66dc08f | |||
266c313bc1 | |||
c36650143b | |||
0afaff2611 | |||
ba4dbf8c4c | |||
4537332d64 | |||
1550469234 | |||
6538d91bc3 | |||
5345a3841d | |||
2d634c9069 | |||
98d6f33c0b | |||
5323bf422f | |||
3ef8e21f33 | |||
26e880e8a3 | |||
9148cd145f | |||
59ab203f1c | |||
1a8d0e5886 | |||
b9d95c5f64 | |||
a833698280 | |||
4041772535 | |||
cb0584ecdb | |||
0ce74161ad | |||
cc2c5c9ec7 | |||
07f11db69c | |||
398df49d3f | |||
27af8a7e5d | |||
6a2ca474a4 | |||
f8248f38a1 | |||
de2ab41fc4 | |||
cb18524b4a | |||
ea3e6b06cc | |||
7cc513557d | |||
a2b21c23d5 | |||
e1aa9833c1 | |||
4c4f916172 | |||
88418a74cf | |||
9f2d082005 | |||
a7586772d0 | |||
0fcbd3a125 | |||
661ad4666c | |||
286a0572e7 | |||
cf2f7005f6 | |||
e31bfef2b0 | |||
2cc5bcbf7f | |||
0b7d3a154e | |||
2a1638a9ce | |||
3379879c6c | |||
bc148df898 | |||
25e9dc6be9 | |||
769320d1c4 | |||
5ff588dbc1 | |||
f296273692 | |||
276e865e7f | |||
fd104e1c5d | |||
ec1c0f5337 | |||
7519ca42b5 | |||
0a7d99c089 | |||
89200d2786 | |||
bda1c552e9 | |||
ba5761a947 | |||
6d2d19de74 | |||
8832de380d | |||
06e6983002 | |||
77a7520385 | |||
9d20c84460 | |||
d26e1cf484 | |||
393992f31d | |||
ce51b34186 | |||
bc15e01958 | |||
eef4343a9f | |||
70dca08f25 | |||
ddedd118ac | |||
cfc26ce278 | |||
f377713fc6 | |||
40b5358c2a | |||
bf50c31184 | |||
02e0456a25 | |||
d6eb72c87e | |||
725596622d | |||
2e4fa0cb58 | |||
62ef88f3e9 | |||
35e1298cb5 | |||
8a3d4d5ec6 | |||
91ef92525d | |||
6f9ed7a10d | |||
0ad97332e4 | |||
e7382991ab | |||
b82cafad93 | |||
c2d0112200 | |||
558a497f4c | |||
68b4b73670 | |||
b52784136e | |||
84935f7de5 | |||
91946c5b13 | |||
c84572e0e1 | |||
2ab4a96668 | |||
e1ff3cd014 | |||
39c16b5c60 | |||
a36b8472eb | |||
92675d6723 | |||
2fa7f07fad | |||
50a80b3d08 | |||
ebe4369222 | |||
ff23a58faf | |||
44509d866e | |||
f3faddc486 | |||
2bec7f0a11 | |||
a2396914d1 | |||
18a730d588 | |||
227055bdeb | |||
83bdb45116 | |||
6279cabb5b | |||
fc1d50a365 | |||
72c6071770 | |||
c96ee7e263 | |||
5f875e26c6 | |||
d64d426b4f | |||
28e61f1634 | |||
a19001bff7 | |||
1b7f63ff8a | |||
cc5aab02df | |||
9dd1eb6fde | |||
242fd2810c | |||
9dcd1c1173 | |||
053deb8e06 | |||
4f31cdfa2c | |||
712ca31933 | |||
ec70383acc | |||
3e0b3f17af | |||
3b39cb98d4 | |||
43dec1ad4c | |||
8a6c34e8ba | |||
11fae4ffe0 | |||
320a3ab7d2 | |||
f0a44ae0eb | |||
d456f65056 | |||
5569bddf66 | |||
fceca9259b | |||
696f4ea0f5 | |||
708f25e8fa | |||
582a0e2dbc | |||
4fa183fe79 | |||
b1fa231d76 | |||
3ba2c1a63e | |||
c1befbe5d0 | |||
5378219988 | |||
b3e5c2371d | |||
82e111cc2a | |||
cbfe4ba76a | |||
7c8de869a2 | |||
a93cb11ed6 | |||
08ba81b6e4 | |||
af03936679 | |||
26e0f3f30b | |||
8c4aa15e91 | |||
85144d9002 | |||
9a1b720b1f | |||
03d9298490 | |||
15e5e51461 | |||
4c95f10232 | |||
829fb2e985 | |||
78c45bd3ef | |||
732eaf20c3 | |||
388c16a7e8 | |||
98323cd222 | |||
c2b0a4fa32 | |||
999e441338 | |||
a9766c7ada | |||
8a5f157fdf | |||
4b4e995988 | |||
9f441dfc70 | |||
46e37c6343 | |||
82f6b932e9 | |||
d77b5e9f99 | |||
81b8472237 | |||
3139c8dc05 | |||
fb777b5da8 | |||
57ef7c37d8 | |||
81ffd00856 | |||
98b51f4cf9 | |||
32d893bfbb | |||
a4ee796115 | |||
c299123608 | |||
5ad019b092 | |||
21dd4793b4 | |||
21106e3505 | |||
7722dc32d1 | |||
5b256dfad6 | |||
9c1a335fbc | |||
e862a004d7 | |||
f9608cd8f4 | |||
663c17c78d | |||
07c80b2164 | |||
3f80a7aa6d | |||
3436bb03f6 | |||
9c5a3cbc0d | |||
c6466aa893 | |||
07339a5c21 | |||
9486b1dba6 | |||
c3c8bed057 | |||
dd85c82962 | |||
525cc4626a | |||
d3b7e2f94a | |||
fb29ca0c55 | |||
e4f7e04050 | |||
2136c5af5f | |||
4ead6b3367 | |||
81a4c344e7 | |||
8a82ea9faa | |||
9ff7823fe1 | |||
b6dff82aab | |||
04b2bb61fd | |||
1807cfbae9 | |||
d880b5ccc5 | |||
6df453724f | |||
55cf7088fd | |||
9882dde03f | |||
2ce045385a | |||
08cb80e6ab | |||
c6bdabd983 | |||
17c951b2c4 | |||
51d23c589b | |||
dd874c80cd | |||
1153b2ef5c | |||
7e06a9044a | |||
2e424ff2d7 | |||
830306cc84 | |||
7ae375d3bc | |||
d7a364393a | |||
7cee566161 | |||
f85a6899ac | |||
66dbd9c31e | |||
597a0ead71 | |||
7522a8fe0f | |||
ca965496ff | |||
d95fe364aa | |||
c7bbffa4cd | |||
0363d6da2a | |||
fbf6ae127a | |||
b2510f2999 | |||
d8be3da579 | |||
1daa2c6944 | |||
d0e1db835a | |||
f3419b29b7 | |||
8a1e2e1765 | |||
6b284569a8 | |||
41a36a3d3e | |||
64ab189a65 | |||
ed47332ff6 | |||
cd6998b810 | |||
2f8df88ced | |||
50dc0633db | |||
3564c739a2 | |||
f8d7374bab | |||
54f8b9ee74 | |||
9990a17200 | |||
9a6a18e33b | |||
b9e77f6d6b | |||
6df0c67c09 | |||
3b55a8d676 | |||
ead253a366 | |||
4e80fae236 | |||
2f5fd11474 | |||
9541d1792a | |||
15dd9b8996 | |||
a1f254b91b | |||
dec00dd010 | |||
ef458dafc0 | |||
6f56a23136 | |||
0d5ef95fc3 | |||
65cb6468da | |||
c728e257e4 | |||
42d033aeef | |||
c9a9f839cb | |||
99289a89a3 | |||
12defa9ee7 | |||
8eca669fc0 | |||
a553600e18 | |||
7ace66e094 | |||
44c9c1cec4 | |||
483c4fe5bc | |||
0ab6f0bd4c | |||
086f2f6860 | |||
b9ba0d10a2 | |||
1e4c1590fb | |||
f14e663cc4 | |||
b8cf0394fb | |||
8c2cc68b1a | |||
c5a3a4a602 | |||
2ece21244e | |||
4f980425b1 | |||
5bd9b7f0c1 | |||
8bdb006db5 | |||
1717231b74 | |||
21a9bf81d8 | |||
6a7b707d11 | |||
33a68e4676 | |||
bccb6916fe | |||
b513c53f31 | |||
86e3d748f8 | |||
30b12e905f | |||
6da4de1e7a | |||
0139a15c4b | |||
d990455c0a | |||
2c6a725e2b | |||
d7ef450d88 | |||
95a181e432 | |||
6efff741c2 | |||
d585564fd0 | |||
d6c57141dd | |||
f3f2aa8a50 | |||
26e0f4cefc | |||
1749b77b23 | |||
498015d62f | |||
61624b2d2d | |||
9d233ba9a9 | |||
dc5c83812b | |||
1dba2ed806 | |||
1823d53cbf | |||
c4f8fbdb11 | |||
97e21d3e95 | |||
44fa0d4ca0 | |||
9e38efc27b | |||
b32e4d6763 | |||
93df1d9cfa | |||
2c626f332b | |||
673698636f | |||
b17e805dbf | |||
9e685b764a | |||
c43e989966 | |||
2d0117e2fe | |||
4cb885e5be | |||
c6589aefc1 | |||
5cf4c87da7 | |||
142e6f5ecf | |||
4b9b44696d | |||
fca152cb89 | |||
6f3c5df55b | |||
6c3ba50a44 | |||
8281a53766 | |||
961ceffd0d | |||
548a3dc7a6 | |||
31830d3c2c | |||
8913b783b9 | |||
979a071b0e | |||
3054a19279 | |||
4ea47c32b0 | |||
bd0fa62b6b | |||
dcbb87a3ec | |||
5bb5c43b93 | |||
9059a89878 | |||
41b5b045dd | |||
8a02d98c5a | |||
91f74ae16b | |||
c321a81b77 | |||
6e016f031f | |||
dbb667ac08 | |||
5c2efa1990 | |||
8c604922eb | |||
3394040e79 | |||
0ba8213d4c | |||
4925d1c282 | |||
61a3c8a005 | |||
1918553190 | |||
7a36ca5a3a | |||
42a6f7e417 | |||
b0ab41e027 | |||
87c30a064c | |||
3960351141 | |||
32ed65611d | |||
d0701c96f2 | |||
b8cb142ccd | |||
219caf8358 | |||
c00ffef47c | |||
bdb37982d6 | |||
7e3126dbc5 | |||
47a80a045d | |||
5db1b15147 | |||
3170e9c0ef | |||
e0183d6540 | |||
61bc2191c3 | |||
e1b4be1470 | |||
39f582815d | |||
395ab9da93 | |||
09cdeba606 | |||
1c18f8679f | |||
4f7b687fb7 | |||
6e021d31f9 | |||
b2569eaa82 | |||
e9c572f203 | |||
777c599747 | |||
260dd9eb7e | |||
828f6b428e | |||
f7faac151a | |||
a160d93dda | |||
f651022df3 | |||
707e03d8b9 | |||
3e4f4e0229 | |||
1cfc3a68e2 | |||
9e2761fe2b | |||
b8d614f8cc | |||
f0df12dd17 | |||
749a78d179 | |||
a858ec86e4 | |||
3c13af7ec9 | |||
5da265c53e | |||
d4d3ba0414 | |||
323c0aeb64 | |||
9f4ed3b550 | |||
a853e7acdb | |||
edd7cb4d67 | |||
7e439c9a5d | |||
4d192820cd | |||
30791639f8 | |||
3aed6ac613 | |||
c8ac2ccf80 | |||
9fcc110c37 | |||
075d123f6a | |||
81ff33cffc | |||
deba7deda6 | |||
a69d682a0b | |||
0e1d19baa6 | |||
683c95e4ab | |||
65f5932e0c | |||
8943183b2c | |||
e5706b6591 | |||
7567890110 | |||
7a66ffb34a | |||
8d127846bc | |||
8ba96b91dc | |||
e653942453 | |||
b3a411cc7d | |||
42af26c527 | |||
af55b3f927 | |||
cff6ad8c51 | |||
8d3c397285 | |||
afd5fd6d76 | |||
490120e1bb | |||
b2a749d4ac | |||
6c0aba2059 | |||
e05298b1d2 | |||
cc064c6c93 | |||
131f3435fc | |||
63e2a84d59 | |||
f65945fe8c | |||
db27d6f6d0 | |||
3b879f46b4 | |||
2bea58db60 | |||
39d6927609 | |||
f20151dfaa | |||
8dad8248d4 | |||
45a6ae35ef | |||
08d8dd3bd3 | |||
9c581a74f6 | |||
ce07b5c0ab | |||
04da829a0f | |||
847043c207 | |||
cbe1244071 | |||
bf29a0d21f | |||
a81703c37b | |||
1aa8fc3cef | |||
c5603145d3 | |||
bc89e8337c | |||
85adcdbff4 | |||
8cb922346f | |||
d800d5e3ac | |||
ccceb2250e | |||
1a0071c711 | |||
3b648baf03 | |||
dd32e653cf | |||
07462ef3d6 | |||
02a5dddb01 | |||
fad0a5b01c | |||
8edb48baa6 | |||
2e0053b840 | |||
a1a317ebf6 | |||
ac857ca3b1 | |||
a04400d1aa | |||
7f839f66ea | |||
4919028e62 | |||
f23c6a8ff5 | |||
d3f7028993 | |||
d425ddd105 | |||
fcf8a3a6a3 | |||
75c4f06314 | |||
e108e41b33 | |||
61dd8365bf | |||
c8be0947f1 | |||
b8602aa184 | |||
ad77576bcb | |||
3b3dd84fb1 | |||
4c0f5769f0 | |||
b19d9511f9 | |||
f0a9142b24 | |||
16f213a499 | |||
2e2fc7a4f0 | |||
2031221fbd | |||
8b56c8c6b2 | |||
6c04b353c5 | |||
9ca96f35f7 | |||
8346307603 | |||
c7b63edeb4 | |||
413539536d | |||
5d6192aefe | |||
97b76f7191 | |||
54b5e20cf8 | |||
dc873cc0c6 | |||
5283c337bf | |||
447db3a8a9 | |||
04de09986b | |||
dac4fa6ded | |||
752fc6026f | |||
1a8c20324a | |||
087c4f2894 | |||
c1ce6f80c4 | |||
1ad7bc4c60 | |||
133f8e329b | |||
70ba37c54f | |||
1985894e74 | |||
92d59931c4 | |||
e501f9b3dd | |||
8c1e603800 | |||
79d0ea4b7e | |||
5f2f44a4cf | |||
d786520de1 | |||
c2503dbe88 | |||
6452a9fcfc | |||
bde9708200 | |||
4b3269e21d | |||
7265bab69e | |||
860c68449d | |||
87c7ec7c06 | |||
5f73432737 | |||
3ee6d7bf22 | |||
befa58145d | |||
4ce5b63294 | |||
d9d711c7f5 | |||
551bd92b2b | |||
1a2b702848 | |||
4c2890d47e | |||
abeb688154 | |||
20c8aa71d1 | |||
233ae1919b | |||
68cf57cf33 | |||
950cdbc3e2 | |||
124e9f293b | |||
86d195b192 | |||
63a078e66d | |||
056c3a9ff2 | |||
d8a4dd0b32 | |||
77509be2c8 | |||
cfe526dce2 | |||
c2d6f5f4da | |||
71e4545e5a | |||
8ead1dc875 | |||
92106b1666 | |||
a3495c0d7b | |||
70d8baef92 | |||
030db31aa8 | |||
24787ffe30 | |||
d3713fdb48 | |||
43e93d7df9 | |||
f0fd6aeecd | |||
9223b71a4c | |||
d0fd7b0693 | |||
cff91544d4 | |||
796bfae826 | |||
828e44c7c1 | |||
e70344796a | |||
36b45f6cef | |||
7d6df608ff | |||
d14918f6d0 | |||
3cf8a03730 | |||
92fa1d9663 | |||
b169f294b5 | |||
a18307951b | |||
cd83bf8874 | |||
9ef72ca7db | |||
815efe16cb | |||
4bbcf60556 | |||
dffdea8a76 | |||
7584e550cc | |||
e8aa3c7f19 | |||
cd8d0e6ce6 | |||
6a8c96f169 | |||
964d91f7d7 | |||
927b1c0161 | |||
33cd957866 | |||
f880eb061b | |||
5caca947b2 | |||
13ec029145 | |||
5446bdb270 | |||
71f639f123 | |||
0b04d1bf88 | |||
fe09a6fd47 | |||
44f41537af | |||
e04a18fc25 | |||
2f917e6cee | |||
17689367d5 | |||
473bc8c892 | |||
5258f4f93e | |||
cf3dcd6d29 | |||
1403b917ac | |||
79b2a150c7 | |||
30ff00650a | |||
32d0549a6b | |||
7ed4039703 | |||
520003a558 | |||
a7db40eae5 | |||
254142a11d | |||
70d608fc70 | |||
339269d587 | |||
3c0b52fb72 | |||
71761a3838 | |||
ecf06e5e75 | |||
8485637287 | |||
d3e977112a | |||
6f8f9c969b | |||
0dfaf33a13 | |||
e7a0202ed0 | |||
4074459964 | |||
e29b674faf | |||
73192888b4 | |||
bd8bb8eae0 | |||
7590c370d6 | |||
d0d0705f20 | |||
c8340d471b | |||
a7b60e7dc8 | |||
56fcfb5b4f | |||
c0bdf89ff4 | |||
4def30d550 | |||
3fe1ad1f26 | |||
244cf7d3a6 | |||
bb19d39487 | |||
be404c22aa | |||
916e2efad4 | |||
344f68be10 | |||
ed42c7ef51 | |||
7d83309eb2 | |||
1ec9284e14 | |||
170f2edadb | |||
d0789cd6f0 | |||
64d749d863 | |||
b5fed68ab9 | |||
1057106db8 | |||
d2afd87b0d | |||
b89ce115da | |||
40dc53a1a1 | |||
547e5572cf | |||
d147d43617 | |||
f4bf8f5fab | |||
a5f472bf57 | |||
eb69dd60ef | |||
c221d56478 | |||
7ba3775114 | |||
6bc1296cbd | |||
0bae5a72c5 | |||
fb7a06b5b7 | |||
ffa2f4fb35 | |||
f105c4164e | |||
7f623f8e46 | |||
5d7fa16c5c | |||
1e63e361c6 | |||
63eb64be26 | |||
5c08c31775 | |||
10252035ce | |||
153f92adbe | |||
4be064a1d8 | |||
34cf073220 | |||
d2777b8485 | |||
4911c3e352 | |||
0645347d0b | |||
f56b784227 | |||
b3621f811d | |||
8d187f4d22 | |||
8dcd62d705 | |||
876b422641 | |||
640f0ce93f | |||
ba75c4cc49 | |||
f078ce1e46 | |||
e1c7cd9fb7 | |||
a6051440e2 | |||
2082196e95 | |||
187f9d157a | |||
f46105f099 | |||
187f59accb | |||
64de2c151d | |||
37609852f7 | |||
20a4874445 | |||
26935d1ecc | |||
240f99c1c3 | |||
6b519b230e | |||
eb04fcbd15 | |||
8ce68ea846 | |||
797b1cc9cf | |||
68ca21ae3d | |||
28e1d0ea55 | |||
4eb489fb0f | |||
237afda813 | |||
609490854e | |||
63afea54f4 | |||
493937e1d6 | |||
b53280ab53 | |||
886f4e862a | |||
b652aaef99 | |||
364f9de149 | |||
e38482610c | |||
30fd5bffa2 | |||
d49fafd531 | |||
1e3b2ce061 | |||
77562cf95e | |||
ae5f8a0751 | |||
78c3e1c50a | |||
d60abfcb74 | |||
bd7020d68c | |||
ad50856719 | |||
0f0206c17c | |||
8271cce959 | |||
e9da62a05f | |||
aed8169ebb | |||
9cce83c58e | |||
e9eecc902f | |||
f5b30eda1f | |||
73982edadd | |||
0ae389cb23 | |||
0dcc0662f3 | |||
19ba95f799 | |||
6b6e9b503d | |||
6e929acb73 | |||
a97fb7f960 | |||
62d73b6be5 | |||
f99f589ea9 | |||
9a1583b030 | |||
3e6cfa268c | |||
89b296c3fe | |||
cdd9db340b | |||
1110b2f462 | |||
02a23b510c | |||
88e85b3de4 | |||
416b828f47 | |||
e02b62a4f5 | |||
38e1f736dd | |||
1369516d28 | |||
6ebfee848c | |||
290b434d64 | |||
36d1e01b21 | |||
c8272783db | |||
04f079d396 | |||
507fc03b19 | |||
0f058f68a2 | |||
49f6b9d05b | |||
d28e159fdf | |||
f824a9be0b | |||
f914dcf3dd | |||
1a341af2f6 | |||
65783fbeb4 | |||
2f5c759077 | |||
0a93f7a7e9 | |||
91562ae713 | |||
8ed7fafe85 | |||
eb6bde07f0 | |||
42551478a7 | |||
eefa32184c | |||
c07c7c9637 | |||
21cad6c3fc | |||
aa5ff5a0fc | |||
f9f129a5dc | |||
36854a831e | |||
326ff22e75 | |||
c9655468e8 | |||
455d7b74ab | |||
c6ef514e93 | |||
d9fd2e2935 | |||
dc2d3566ff | |||
b7801d58d7 | |||
c34c15be63 | |||
ad481c475f | |||
86a241e90c | |||
40beb36f07 | |||
7a359497cd | |||
22b42a87de | |||
bb3b314807 | |||
f24450af68 | |||
1a3ae36c6a | |||
6c38f35da3 | |||
a4bef79522 | |||
c987e65eb4 | |||
2c9d65b51b | |||
5fc798f40e | |||
0247fcf87b | |||
88d8e2b74e | |||
ce66f34372 | |||
ff6a1e5149 | |||
99af54e66d | |||
78b6a1bbcd | |||
b052c4b368 | |||
812f36425e | |||
bca5bdb056 | |||
e1d7d8464c | |||
9ddd9002cc | |||
161d809bc6 | |||
1f03f1ed1f | |||
0d53e75d85 | |||
5b2405a308 | |||
a4819cd0b3 | |||
a75a2fa1d6 | |||
5e31a1939b | |||
91d5a6cc47 | |||
d79e48570c | |||
d0e9538f88 | |||
407488edaa | |||
fef413e4be | |||
9b57022ab4 | |||
d328934c9b | |||
51f5ff6d27 | |||
14512f9a9b | |||
c3ab442cc1 | |||
6a62cc85e6 | |||
361a5c0952 | |||
20426858c5 | |||
424467c2a3 | |||
20f5dcec63 | |||
fdabf3fcd7 | |||
0ba16637d8 | |||
c4ee28c61d | |||
7066a1e7b3 | |||
48a6c018bc | |||
d477565dbd | |||
9d0cc2aea9 | |||
8c99c27df1 | |||
5e053af7a6 | |||
50886827b5 | |||
be104a2760 | |||
b7eca6f123 | |||
d17ce41e29 | |||
834b3ecd7c | |||
0d9072b1a1 | |||
baf27dbaeb | |||
4a1cbdd51a | |||
a5a529599d | |||
f42da176de | |||
43a5f88bb4 | |||
875e5aa96c | |||
6443ad4a53 | |||
5b3831c75a | |||
f7b410d409 | |||
3ee9935f63 | |||
03a339126b | |||
484adee53e | |||
9e7497e64f | |||
89bbe146cb | |||
912d9ec158 | |||
3cc3d818e8 | |||
535fa0a1cd | |||
56ccbf3b60 | |||
e8e6d8610c | |||
ece0fe3f23 | |||
270a32370d | |||
1f45104d1a | |||
291fd9fec9 | |||
e0268a4477 | |||
431f8cb08a | |||
bb70099083 | |||
c27628e2b7 | |||
2aa15872d2 | |||
7c0f007cf5 | |||
ab0d85c987 | |||
0d57f42e83 | |||
9bc16ed856 | |||
ee38ccecf8 | |||
ed5835a04d | |||
2b77112e66 | |||
0e3884cfff | |||
90fda02f60 | |||
3805354ff9 | |||
2dbbb83ae4 | |||
429c77a5e3 | |||
983ea18f17 | |||
a99f61fec4 | |||
e2ce56928c | |||
a169550479 | |||
45dc92a8c2 | |||
fee6974452 | |||
3c02ed9cb6 | |||
39ea223249 | |||
f5c3e29bdf | |||
52fabb1247 | |||
5e1d4dd947 | |||
e9695f0d70 | |||
1ce5f5827d | |||
840679d2c1 | |||
0f044a5007 | |||
ae81d59eca | |||
4cb8776c31 | |||
3c729487bf | |||
679b236bed | |||
617150e0ff | |||
e8774933d3 | |||
48b80c134a | |||
3616e9c3b0 | |||
36c2ea4a63 | |||
e2cb8696f0 | |||
ffb4652461 | |||
0aada3cddb | |||
de2ba63f47 | |||
3e22cb6e1c | |||
cd50715e03 | |||
9900c4f0b0 | |||
84eb61c32c | |||
21cdf0de08 | |||
4b84a2c8a2 | |||
2ac88f2347 | |||
eee1f4387a | |||
4ae881a576 | |||
ae99ea5f08 | |||
092813a50c | |||
2821cb498b | |||
c67e3c1a90 | |||
f1b4a7c9d4 | |||
f90056268f | |||
b38ca863d9 | |||
ace29dff9e | |||
13c50005c5 | |||
fe17a8cd6a | |||
329ebb340b | |||
1e67816961 | |||
41220cd245 | |||
870e44a7b9 | |||
63d36bc733 | |||
5ad4206e72 | |||
45eeae4f8f | |||
afb60e7112 | |||
c19a9a5278 | |||
a9db4bd989 | |||
c97a1c0ac8 | |||
d149bfa17f | |||
95ee5996f7 | |||
3a873b5c9a | |||
f79f00991c | |||
c1d1dddbcc | |||
e88dacfa43 | |||
dc811c9ea3 | |||
1b0d751777 | |||
ddd44f4fe9 | |||
84fde762e7 | |||
43dd2e458f | |||
4c56d79ba6 | |||
ce04a42db9 | |||
0f34054964 | |||
f71572605a | |||
99eed832ae | |||
3044d708f8 | |||
59f06ada68 | |||
905939b3c8 | |||
8b0c1c8027 | |||
1856effaf2 | |||
2f1d686ba6 | |||
5190f42306 | |||
9b7dc7645d | |||
a96eaf8700 | |||
f7cdb8e3c6 | |||
105cdf5625 | |||
d87a84830e | |||
794a9b7b9c | |||
f106b3b430 | |||
64f7bdf19a | |||
ea378ccc8f | |||
5a41b0db20 | |||
6f32d80e18 | |||
eb8036b591 | |||
ec5cf1504e | |||
c19cbeeb6b | |||
ec8f5c79a5 | |||
12e5fda496 | |||
f84e304ea1 | |||
4ea08f9f56 | |||
d5f1c08816 | |||
de50d399a1 | |||
8e021d96b3 | |||
c5395bc95d | |||
17a798b68c | |||
f4721246db | |||
f4f332dba9 | |||
b3b4ccfb26 | |||
eecaf360de | |||
9ee1b82db4 | |||
1e6a227f10 | |||
58d0336ef3 | |||
de20b28fe4 | |||
93859e319e | |||
28ed7878f0 | |||
16c06c273c | |||
b3aaa63e8f | |||
8446935d3b | |||
79c42635ae | |||
ce4ecfed57 | |||
e7265a9b10 | |||
aef866be11 | |||
32608cf87c | |||
c85cce077c | |||
2c0aa00d6e | |||
447233ce8c | |||
8ed53ec8c0 | |||
191bd82734 | |||
6de5bf6698 | |||
8079a6a558 | |||
2a70419e7c | |||
c3c3e453ff | |||
f9961fff31 | |||
fde084bc49 | |||
b5353965e1 | |||
be34afad6f | |||
b01ac7e264 | |||
44cfde02d5 | |||
82a30a134c | |||
b37f2e9902 | |||
08b862ef47 | |||
6be3352e98 | |||
1ba663ce0a | |||
274c3faf09 | |||
c248382d52 | |||
d8d8be1a6a | |||
ac7f461d8d | |||
02dec12629 | |||
832dd4388a | |||
b54212109e | |||
8461cec76c | |||
f2baae3735 | |||
1ae8cd1064 | |||
08c646c060 | |||
778c4f8c96 | |||
e49856dfa8 | |||
d3a1560609 | |||
c681a82657 | |||
7e3bf0c5dd | |||
3d62781acb | |||
86dce8fa75 | |||
9226fe9aee | |||
f9ed4d20f1 | |||
c930c87998 | |||
5ea7bb74bd | |||
2687d37a3c | |||
6d4de7eef9 | |||
0fcd37172f | |||
0948b363b0 | |||
c022a79503 | |||
335eb1219c | |||
f752fc6546 | |||
f61011a56f | |||
6c8ba9b9ae | |||
121d2de18d | |||
0b6ab953f3 | |||
4f86d63006 | |||
2921cbf277 | |||
2a7d752aaa | |||
9fbb1b096f | |||
09fc4b90eb | |||
2ad03a43ec | |||
1146332b9c | |||
08f749d5f6 | |||
801a5cbaac | |||
c674223fd4 | |||
4c76d25717 | |||
c39d11cec0 | |||
a1f1714ca5 | |||
820bce7322 | |||
c6d2feaee5 | |||
9426721807 | |||
068c2595f2 | |||
7f5a97ce98 | |||
58b609bf30 | |||
737f111d2c | |||
8137806326 | |||
7a61274943 | |||
593f4ca10b | |||
59996e0377 | |||
d029a579ba | |||
9065f4f8ed | |||
53ed3e501f | |||
ea3417b5eb | |||
ea3402213f | |||
65d9a7ae31 | |||
aad4651e3e | |||
1e37c9ca46 | |||
7d11513ab3 | |||
8360946c8e | |||
d656d08f5e | |||
f73580f624 | |||
d5ffc75fa0 | |||
324b1ee09e | |||
9d86866109 | |||
07c85ad11c | |||
e59f70a4d9 | |||
96a06dd464 | |||
cdd7d18120 | |||
5b47d77047 | |||
982f64d1b7 | |||
e928391f74 | |||
bb1ada6d3a | |||
33f4ec8217 | |||
8db0a22677 | |||
5c186c6777 | |||
d959a20114 | |||
3622c0bf10 | |||
3d802535cb | |||
6e425e1275 | |||
054026cdb8 | |||
a1f65bed10 | |||
695dd2977b | |||
281868e55f | |||
f629f7b78b | |||
a8798a3179 | |||
7ba970aa78 | |||
2832d11dd1 | |||
f06dd678e6 | |||
3f11803075 | |||
0fd62f5b79 | |||
957a36397a | |||
051ee4e3ad | |||
0f91e9ce5f | |||
a56e467287 | |||
c660600e42 | |||
c28f0e0802 | |||
3065157da8 | |||
69c57e19da | |||
1c33f740c4 | |||
50a6fe73c6 | |||
4c79f93082 | |||
a93f46ebc0 | |||
011661cbfb | |||
3d3bf484f5 | |||
cf5dd49d3c | |||
60971dcd01 | |||
f305339d67 | |||
12bd8ab2f9 | |||
bd04995cdf | |||
3b70ad8ecf | |||
15ca9034b3 | |||
2b3de787a4 | |||
7f6a484511 | |||
98a9f1f61d | |||
7d97136749 | |||
17e905ac48 | |||
9d0fde3dc5 | |||
e1490e55ed | |||
e997d85e3b | |||
64bc26ad15 | |||
05c732b9e4 | |||
e593747f06 | |||
71b3edd779 | |||
275adeaf0b | |||
83806dd377 | |||
725a3d6533 | |||
b6717b05be | |||
d5befb5792 | |||
e9f6122855 | |||
fd9a8b679b | |||
868bca2527 | |||
dca3cb572b | |||
7f1363d9b4 | |||
f999748fb3 | |||
1a9b5aa462 | |||
2bf28ed632 | |||
e0d38680d4 | |||
4a3f67a9f2 | |||
dc5539fe16 | |||
9f58bb21a7 | |||
ffd50153b8 | |||
6a8ddc7efb | |||
8f0757ea94 | |||
1c505f8277 | |||
2b48a6089c | |||
11c765c1f1 | |||
c913c7ead1 | |||
fecc2f87a0 | |||
27f606b721 | |||
2421b88381 | |||
a8e7b45816 | |||
900c3a32a3 | |||
2609eaaa8f | |||
b8c7ea0f69 | |||
67a2507c78 | |||
4e56f75bb5 | |||
1268d4081e | |||
f5ce4b3778 | |||
f7b8cb542e | |||
35010ef9c5 | |||
a04072c917 | |||
552133e161 | |||
ceee6d87ca | |||
91797c1416 | |||
b9fe66e0ab | |||
0e5dde5d99 | |||
52ba30226c | |||
9a8e8c605a | |||
5a82e1dc20 | |||
561b5cfe42 | |||
9004f1d99d | |||
cdba52aaa9 | |||
dfd5ccee75 | |||
99e6dd9f74 | |||
9ee02095fa | |||
9247d12839 | |||
ed7bb85031 | |||
22f8370def | |||
ec6cff2f20 | |||
6ecd4c65e7 | |||
361e364635 | |||
0759346cd6 | |||
f2e8a7ae6b | |||
338b83c7b8 | |||
f99055266b | |||
187f06f07e | |||
f7140c425a | |||
b7e591e2da | |||
d5c3d9ca82 | |||
6aaf7db719 | |||
27718ac87f | |||
add3a06268 | |||
560c11ec65 | |||
5014373edd | |||
123a37ed36 | |||
1eaf64c723 | |||
df3cbddb58 | |||
1fe129f321 | |||
c1e8aa2f46 | |||
7e3e1ea43f | |||
d3d0fd7d5e | |||
205b53ee77 | |||
81f5bf3017 | |||
14ca740719 | |||
114cf5f136 | |||
3e7fced218 | |||
0639bff5ba | |||
a0e5046a08 | |||
81b88a1963 | |||
b17f11e19d | |||
fd8619e665 | |||
bf13ef0738 | |||
3b9d3e92c0 | |||
b50ca574ef | |||
71902014e3 | |||
2f3cc0035d | |||
765d465a23 | |||
0748a87455 | |||
1bb640dfc0 | |||
f41645c34d | |||
a1cc557d61 | |||
c8e86de3fe | |||
d42154afc0 | |||
6091e6cbf8 | |||
c1870394a7 | |||
7de8df467a | |||
93538c9969 | |||
b7a55fd804 | |||
e41f595310 | |||
726504a61a | |||
fc2047b1f7 | |||
c6b77d5bf6 | |||
863b3ad45b | |||
df9901eacb | |||
ed993f5faf | |||
b2c39b563a | |||
93231b45e4 | |||
14e3432148 | |||
e70c32f7b7 | |||
4feef09c65 | |||
aa003fecfd | |||
f3c0a01dc6 | |||
17cd905828 | |||
e0117b1489 | |||
60a4643d6f | |||
34c5905614 | |||
c66e1c2a31 | |||
ed21df6cec | |||
77038b16ff | |||
6615c6eaf7 | |||
0c3845d2ee | |||
50a1072180 | |||
99b38a9c2f | |||
7598b4b40b | |||
6408ada4a2 | |||
165893b67b | |||
89e83b76b4 | |||
11f212b825 | |||
19325dac95 | |||
a1843d8411 | |||
8a64ad09a1 | |||
5df952bc2b | |||
12cfcd90dd | |||
9fe0615ecc | |||
16433c9c92 | |||
a262fc6b07 | |||
33b92efa51 | |||
50650427dc | |||
ed222f12ec | |||
1500dd081b | |||
3bd017356a | |||
a0426267e3 | |||
a472e33634 | |||
c29d8e0468 | |||
90f6a31bc2 | |||
79e3a1f8a5 | |||
e339f9505b | |||
66e21d2d28 | |||
f11e2d0616 | |||
2f2ac4d814 | |||
fe91192bf5 | |||
1fa487e1b3 | |||
a82f06cb8f | |||
e15dc9eb1e | |||
59ea8ef9e1 | |||
98ea6a3f94 | |||
56d37fbe6f | |||
e53dfe0cfb | |||
3614270a76 | |||
c37e1e6d07 | |||
b2f2bd1c82 | |||
61a5391916 | |||
132e969ca8 | |||
62e957d029 | |||
ff630715ce | |||
86dc4b7072 | |||
029e736172 | |||
a879200843 | |||
1f0e6e7384 | |||
161de9f80f | |||
5fd29317e8 | |||
c7eebacbeb | |||
88c16f6ee7 | |||
c0de584320 | |||
40ac196ba3 | |||
83b262275c | |||
04ebdd9710 | |||
b64db833d6 | |||
81547dd546 | |||
4e8a9c7053 | |||
2b5bdaea63 | |||
9c50462fd7 | |||
42b1d3fccf | |||
0c32182dba | |||
ed820a0e21 | |||
2a5fe1d64b | |||
85c8a51577 | |||
33a047da68 | |||
1617521f57 | |||
f0c5d87a0e | |||
b0630464d9 | |||
678e401eb8 | |||
d00af4fbac | |||
2f572dd964 | |||
8084b38568 | |||
b92df578b4 | |||
fa9e8f9cfc | |||
af0d516bfa | |||
e0af9fcb2d | |||
eaaa549e4a | |||
94fe086a06 | |||
a3ac82092f | |||
85d0e7611a | |||
43cc3c0273 | |||
2e7317568a | |||
ac6565279c | |||
136380fcac | |||
4355a6715a | |||
0d11dbfd6a | |||
58ce44720a | |||
27ba085334 | |||
3428027267 | |||
3967cf931b | |||
7ac4722a35 | |||
a69d2c10a9 | |||
4067fa3512 | |||
c046dd0232 | |||
06bff726d4 | |||
a9a5dda093 | |||
662ac546fc | |||
5851f9dae5 | |||
12d515dcc5 | |||
22f028a3c7 | |||
de10d8d609 | |||
0e4f37f7a7 | |||
e952392615 | |||
4d4256e499 | |||
0ee920bf64 | |||
12985c1dd7 | |||
befec1e92e | |||
4a08736242 | |||
e3f030ecbb | |||
2b13ca5bcd | |||
43d0a7e66c | |||
df79757a3f | |||
8af39ff633 | |||
5145e23a35 | |||
8a78f59039 | |||
8a1ad13822 | |||
3d4513e7c8 | |||
2313e54bf9 | |||
5eac877b75 | |||
835a2fa737 | |||
a944b547dc | |||
e0c60f3d39 | |||
5742357e4d | |||
44caa1963f | |||
74c16d0a8b | |||
6719c82450 | |||
ec2e3e479a | |||
8e4182f20d | |||
65a9f4e78d | |||
78e0acfb3e | |||
207ffb07fe | |||
8e57299a0d | |||
ac12976f0c | |||
6e98292821 | |||
2f6875518e | |||
25f3c4d083 | |||
e94f86571c | |||
d1c0f958d1 | |||
04582e9001 | |||
e569e3e248 | |||
83e41055ab | |||
645bca4810 | |||
0a61ecef35 | |||
85d93ffc0a | |||
c98baa7a80 | |||
3190ba863d | |||
b6ef297564 | |||
fc62013fd1 | |||
d13d7c2735 | |||
092245dfbb | |||
a575759c40 | |||
1464a05933 | |||
a7174b7c1d | |||
244a425efd | |||
f47117134d | |||
4b519f7c62 | |||
344a1bd43c | |||
f2de1e7e19 | |||
73caae9772 | |||
14e34fb10b | |||
9e0dd96e7e | |||
7bfef7d50c | |||
ac2da047ac | |||
53c173e9ef | |||
d8c189b669 | |||
ea4db9b8fb | |||
5632c6bc02 | |||
03d06d3bcd | |||
1597a21326 | |||
4efd7d9926 | |||
5602945e9f | |||
8839b7f109 | |||
83729bd430 | |||
18960ce0c9 | |||
c6a6e54d05 | |||
af2efbb59b | |||
795d73c6d8 | |||
0cae9008f0 | |||
d83e24d9d5 | |||
1032d22152 | |||
b5d9f4a1cf | |||
ce1d588f07 | |||
6b495bcf16 | |||
7029665482 | |||
1410224cf4 | |||
6c49f40b6e | |||
35597435d0 | |||
5725ee4f9f | |||
527647677a | |||
df7a887cb5 | |||
b0d342028d | |||
aacabd0bd6 | |||
040f3be59e | |||
a42d37ac3f | |||
9f8e92bae3 | |||
34c0b26193 | |||
fcc26f54a0 | |||
257b00f357 | |||
2ac4cc6595 | |||
f1e81e6eb9 | |||
eeefb022eb | |||
284b39f9c8 | |||
0d8924d880 | |||
f239b5a9f3 | |||
c5381e0f36 | |||
4727663931 | |||
aa11f9a826 | |||
7bb756fad7 | |||
0d29bb72a1 | |||
b808e7678d | |||
6e651aaf4e | |||
a41991a3f9 | |||
0b327a4c3a | |||
40368a29a1 | |||
d8b36d23fa | |||
7f44929ed9 | |||
0be783b30e | |||
b29769a391 | |||
12f69c5ef1 | |||
38eaf3e13f | |||
50fcce54e0 | |||
f0334b86dd | |||
62a437dd88 | |||
527690c7bf | |||
3ed5c9e3cd | |||
29ef574b3f | |||
c98ba03493 | |||
3384e4a709 | |||
77a2c67dfe | |||
9e90807b40 | |||
2f1b51ac2b | |||
e28133a994 | |||
50a44350ee | |||
5f5fd853ed | |||
b20aac0721 | |||
9e20e2f158 | |||
a08328ecff | |||
6df3870012 | |||
5193312e1e | |||
50526d5a30 | |||
5c7311a524 | |||
b5f580e03c | |||
b38d6bbe1c | |||
3cea0594df | |||
7c36dc12df | |||
1b85692fc4 | |||
4c2389e28c | |||
96a480d507 | |||
55a890fe3a | |||
3d8b6e25bb | |||
bf355e7159 | |||
54e0fd21b1 | |||
2c707160a9 | |||
995a7e25a1 | |||
3dea2b63ee | |||
88991caf00 | |||
e8e0418d98 | |||
2d7d0d0e66 | |||
67888e26e6 | |||
21974ab86d | |||
6c46b6f84c | |||
1464b0edea | |||
9f7df5c18a | |||
5e6c30bc42 | |||
04540f1549 | |||
b524d2bb1f | |||
a9d225b3e8 | |||
82689d2ac8 | |||
f78ade3e31 | |||
4ed9f9a507 | |||
2b2ade9638 | |||
22d4397913 | |||
554713ee0a | |||
90cdf705aa | |||
4fe4661d4e | |||
412679d892 | |||
5abf040265 | |||
3d9fa08bf1 | |||
d7511f8054 | |||
78a0160bed | |||
aec4d81e65 | |||
fbb568347d | |||
49da0cfe46 | |||
f9bc5baee5 | |||
8586b4020d | |||
77a23d10bf | |||
bc2c12c728 | |||
5c9d82bd73 | |||
d0d445564c | |||
a4e75ab0cd | |||
f8051e7c8b | |||
d5fc04bdc9 | |||
5b10ec4361 | |||
397b46c172 | |||
914a568ec4 | |||
f3d65e4998 | |||
a9a48b6839 | |||
fe9d2119a6 | |||
087fe9fe27 | |||
5a66334911 | |||
d7388d13f7 | |||
160fc4736b | |||
cbe2fd351c | |||
edac4ef6d4 | |||
23e88135bb | |||
9e1fab0076 | |||
d4367505f1 | |||
6017abbc2c | |||
2736c82956 | |||
507a98b689 | |||
2b5be8857b | |||
89815c96a6 | |||
0d76194a1b | |||
a568d605e9 | |||
b57f22fc5b | |||
184c794086 | |||
8aa087ece6 | |||
09e032e59f | |||
215ac3bc40 | |||
f5dd7b6eb9 | |||
8963f7d40b | |||
2d35cf8689 | |||
cbd4ee73d7 | |||
1b940d17a8 | |||
1627e2f158 | |||
1fa72d5fe1 | |||
8661fe220d | |||
b3e9aaf62b | |||
70907b00e6 | |||
444fda4528 | |||
d49c8cfbf1 | |||
cbbce66baf | |||
2e9315c4c6 | |||
0f5a17e980 | |||
53b465d1c1 | |||
1f500845b4 | |||
9a0d4f8620 | |||
0262ffa85c | |||
e1a7a26f5e | |||
c70505acee | |||
24b4af668b | |||
eafe7989ac | |||
e7881ed447 | |||
dd0066a919 | |||
8269692517 | |||
69c0b19ae1 | |||
fdcbae0a9b | |||
902518e983 | |||
c5e28abaf8 | |||
1cd013bec5 | |||
0655f78041 | |||
0a9eea0f5b | |||
6065f616eb | |||
33b0f15434 | |||
c3a6d4b2c7 | |||
071754c9dc | |||
9eaca7dcf4 | |||
37164ff609 | |||
c200e8c7cd | |||
3cc2c38d50 | |||
9f6cdbaaf5 | |||
a6f02a8c49 | |||
d79b87a1d6 | |||
34672f2bc4 | |||
5e60637ef6 | |||
f2a295a5b6 | |||
c1f58e68fb | |||
dbf74dc80a | |||
8b522db474 | |||
5b5c52e8de | |||
b544fe48af | |||
68e597d81e | |||
3ff948651a | |||
394bd94e0c | |||
0082a3e59e | |||
0258465373 | |||
e50f546e01 | |||
310c7637da | |||
72e49cef80 | |||
e4e08f2bfe | |||
65d0ef7cbd | |||
0310fe7bdc | |||
da4d9da51a | |||
77f4b7fe0c | |||
3603960d4d | |||
ccb1119738 | |||
6ad856825a | |||
71b546773d | |||
e828554ee0 | |||
bdd863689d | |||
160cb331fc | |||
83a2a007c7 | |||
bd0a222ab4 | |||
fc38e88341 | |||
441c63d5f0 | |||
5b511f98b5 | |||
fd3dde3e33 | |||
05b883ed24 | |||
93122a7e77 | |||
b043277866 | |||
2aba15fce1 | |||
a266299490 | |||
7d520ff98f | |||
ebeec5aed3 | |||
b86d2b0935 | |||
bd8e6dd2ca | |||
99af210456 | |||
ce19f4f8ad | |||
12b376c87f | |||
8f594b7319 | |||
bd21476f99 | |||
955ce24afc | |||
43439f6d49 | |||
11298542cd | |||
4a30d42c4a | |||
d9e543a5f9 | |||
f56d65266c | |||
bfa46e25e0 | |||
3a7825983c | |||
9d50efe19d | |||
f3b1a53858 | |||
91893ee785 | |||
28b68ae4fe | |||
466a378b9a | |||
05fa5b2450 | |||
468c46df25 | |||
b11b731e80 | |||
7c80de6328 | |||
ba4a4909a8 | |||
8ae391d199 | |||
8ccc8fdf26 | |||
0141f0d6b8 | |||
e61391738f | |||
e874b1c179 | |||
6f1754d090 | |||
a64b4f4548 | |||
d5a45470c8 | |||
6267cc523b | |||
0310279411 | |||
308c1b7976 | |||
e836d11214 | |||
4622a2fe82 | |||
6c02ca6962 | |||
90f01ece00 | |||
2c70708a78 | |||
5ec02680eb | |||
278ad21fa9 | |||
cbcd8a02fc | |||
fc66ab6959 | |||
92f46aaac7 | |||
f209b18df3 | |||
7d1a137b84 | |||
e738a7e337 | |||
d3108d6c89 | |||
9572dd8953 | |||
71e86d66a6 | |||
6871d51125 | |||
d3d50e027f | |||
e866a2fde4 | |||
cb2080f551 | |||
08e5b65f46 | |||
6a8990110e | |||
79b4df2d08 | |||
9a264d7ac9 | |||
fe152de697 | |||
28371e2826 | |||
a8ddc89d27 | |||
da59ca94cf | |||
db3047c57b | |||
e153a35029 | |||
14cd17a5fb | |||
ebf800c538 | |||
f27662f5ba | |||
6fe3c06614 | |||
8cc39a5fae | |||
97f0d81503 | |||
63837b0af0 | |||
385ce9f4f8 | |||
f92f27370d | |||
cbcbb6767e | |||
84fa224b53 | |||
2f30e8ca03 | |||
ae2a522827 | |||
3e33be2e69 | |||
6642b44b29 | |||
9d7431c848 | |||
7bbf45ed3f | |||
76b8bc2201 | |||
72f4dda6b7 | |||
d3318cfe49 | |||
062b92ef65 | |||
10ae1cf2cd | |||
29a52c8308 | |||
162a737599 | |||
973c9d45ad | |||
430f1c5764 | |||
239c966e48 | |||
0a9ac9f4fb | |||
7a957543b5 | |||
84275161a9 | |||
0d0f43f9d3 | |||
7fa445e385 | |||
cc2708797e | |||
ec05de6f54 | |||
9ab02cb5fc | |||
67e1d359de | |||
ffc505b995 | |||
82654b3fe6 | |||
a0cb713ce2 | |||
8cb8374e3c | |||
5d92aa5882 | |||
9f3bc37102 | |||
7f454e4cbd | |||
1ca6b531ee | |||
0117e4eae3 | |||
6791ad221b | |||
6fe7986daf | |||
ac02814478 | |||
dd558fd0cf | |||
f2e2b9688e | |||
2436ac037b | |||
6f44874598 | |||
90f71918fb | |||
eef615c0f5 | |||
a10229269a | |||
eef5cadca8 | |||
488bbe2c88 | |||
e3fd00f9e8 | |||
0263e0ff65 | |||
3827f56fe1 | |||
3398f3152c | |||
9190345bf0 | |||
7a25fb8e69 | |||
3fc04842cb | |||
521a03f303 | |||
8066fda9ed | |||
8972750b26 | |||
8f8cb95fe9 | |||
01490258bb | |||
7b4d67cf42 | |||
84641c8183 | |||
6c4028dd3d | |||
e70a3f8822 | |||
8a285fd8a5 | |||
c037695c19 | |||
8f7e2a3add | |||
08de7d6bbd | |||
28d0408409 | |||
5a6daa6b72 | |||
92eab64a43 | |||
985d956833 | |||
97321db21d | |||
2560ad3233 | |||
bc744f5893 | |||
a693fa06cd | |||
17df7d634d | |||
c47ed6e8c3 | |||
5ed4d63fe1 | |||
aa752158a6 | |||
cbbdcb330d | |||
3502960e50 | |||
30c3f91d33 | |||
36858208e6 | |||
8e391d3452 | |||
095bbf969d | |||
cf5d58328f | |||
3e69c0a077 | |||
389cb30ced | |||
fcbf18c5df | |||
bf69622256 | |||
3e4a14e153 | |||
2a507f734e | |||
9f7b36a540 | |||
947dc64d21 | |||
4fc4a37038 | |||
9cc148d8c5 | |||
0088b3df28 | |||
fb620109a4 | |||
63032439f4 | |||
2ac743330c | |||
8fed9d638d | |||
f50ea988b0 | |||
dadcbfbe8c | |||
fe6070f728 | |||
7ea4372d82 | |||
a45f8959c0 | |||
c1040f3ef4 | |||
df0481e9e1 | |||
a79803cf29 | |||
1fed53f08a | |||
9f8ac64bae | |||
9eabeb53ab | |||
09917e10cb | |||
320ad9351b | |||
b4b73d4995 | |||
9e5bc74cc7 | |||
6034b0f184 | |||
ec1926aaff | |||
d888990cdc | |||
059c7910eb | |||
7f8767de63 | |||
944d00b28c | |||
77f340a707 | |||
e26e9b556d | |||
3704b6d4ab | |||
dbe8415245 | |||
14ee0f94f3 | |||
075ad63a4f | |||
c90a9e68b7 | |||
79a812e536 | |||
5611cfd55f | |||
2ffd219886 | |||
469a99b5c8 | |||
13b9149bab | |||
8b4a9380b5 | |||
e92c84050b | |||
70d73a85bf | |||
5dbe45e0f5 | |||
188f1bd5b8 | |||
e4ab31bc7f | |||
fa2db84a47 | |||
78efb84509 | |||
59143bbebd | |||
819d872606 | |||
1d9b059c52 | |||
4e8baf9202 | |||
4b6ff98e84 | |||
4eedd938fa | |||
b9a5152cfa | |||
5c2d1906d9 | |||
00e58c35c6 | |||
9357ac3860 | |||
e16971ac64 | |||
5c80519466 | |||
d5faa90df5 | |||
dc667980f8 | |||
33f234e356 | |||
b37d4b95d3 | |||
e5397bd116 | |||
94ce8c3b3d | |||
bf089d2a62 | |||
cbc29a2160 | |||
eac283fb0c | |||
a01138b7a4 | |||
72cd6b0d01 | |||
362ec8dee2 | |||
5b6ec3e4dc | |||
2cc126be2c | |||
b22dc1daf4 | |||
e68ef7d75c | |||
f580d9ffef | |||
42aa2cb94a | |||
965439be12 | |||
d6ffbf0e43 | |||
b9365ef377 | |||
cfb0b6a8ff | |||
4c9622a7d0 | |||
d2ec82d137 | |||
e1194ae6b6 | |||
227225b4ac | |||
30935b6038 | |||
d354c08f9c | |||
62a5ca4843 | |||
138c1b864b | |||
ffbb4b2b11 | |||
578a4d2b6a | |||
038cef9dff | |||
46a8cbd92d | |||
90df916683 | |||
d32bb116f0 | |||
b53858bace | |||
3f1de9add9 | |||
efe581254e | |||
3f561a8e08 | |||
6147314344 | |||
604a104a1c | |||
bf38d58420 | |||
e0ce60c744 | |||
e1db55b43e | |||
42f795904c | |||
232d8a8eb5 | |||
e4478637bd | |||
7af8aca246 | |||
4b290b7b6f | |||
11334729c9 | |||
adcb870837 | |||
3e314636a6 | |||
b27b0fd2ac | |||
7ded1afe0a | |||
7223bfa47e | |||
9b4f221026 | |||
522ba1ba27 | |||
c004ae5656 | |||
04bf41b5aa | |||
41e66ac38f | |||
fd19075045 | |||
4cee40a19d | |||
a5314b62b6 | |||
8b8b271f12 | |||
3b8b00fd39 | |||
d5689dd289 | |||
2aaf7c0a1d | |||
2ead363340 | |||
9bf45b43ee | |||
685dbe14e9 | |||
ae763de649 | |||
49d74de969 | |||
9faab3122e | |||
7377cda608 | |||
d1095c7ed7 | |||
0aed4e577d | |||
8e251f7fce | |||
6f58b991de | |||
ce3a9740f1 | |||
d6331e0884 | |||
950305de0a | |||
72464a4795 | |||
87feced195 | |||
6b8305d240 | |||
b73d2476dc | |||
63975f0e68 | |||
587699822c | |||
63c0dc9dba | |||
e31506cd51 | |||
44f14509ed | |||
8262a2c718 | |||
37509d7b0c | |||
2bfaabc610 | |||
90d00dea55 | |||
2d49f220ea | |||
4744ca7d05 | |||
c766d7ca56 | |||
f223863261 | |||
5e0033987e | |||
a266d1e63a | |||
a1ddd2a15d | |||
288426d35c | |||
f710bf65dc | |||
a2118c7b54 | |||
d89d086045 | |||
5b24c6d304 | |||
2b2dc0c6ae | |||
12d48cdf67 | |||
0b418bd287 | |||
f60ce24ad0 | |||
fb256a3c10 | |||
51f016409a | |||
a6fba3b07c | |||
727fc397eb | |||
7f53ec6bfc | |||
dcc1355de7 | |||
299689c85f | |||
bbb8123d66 | |||
ceeeadb890 | |||
bda02b0f2b | |||
8c8b34996d | |||
d838c8f4f4 | |||
3a8edc1f00 | |||
4b37326e9f | |||
854848c39d | |||
1447c4310e | |||
249bb8df0a | |||
7a04222903 | |||
e298391337 | |||
08b5ef4834 | |||
30a9475192 | |||
a820caeef4 | |||
11e4618794 | |||
ac3d4dc6ef | |||
90fe567fa9 | |||
b77668cbdb | |||
faccd0cf7c | |||
e621638453 | |||
527a4f37db | |||
f2042099cc | |||
e96941d952 | |||
d20d818b8c | |||
c185cc69f3 | |||
6fc7e414f4 | |||
2016d8157c | |||
06639f2abf | |||
5acea15d63 | |||
463e44bedb | |||
52082be9d6 | |||
7a04d05f1d | |||
e9984c8e4f | |||
7979bf5d0d | |||
88352c550d | |||
06c022f3a1 | |||
cce822840d | |||
7524b5e970 | |||
c59d4821e2 | |||
b449b9c182 | |||
726282b44f | |||
f2f53c447a | |||
27bf0c8efc | |||
66dc7261e2 | |||
f81944f9c9 | |||
60a208e43f | |||
6745056a06 | |||
1f8af4f49b | |||
4e86131462 | |||
c4a5acdabc | |||
d9352e69db | |||
8d67da6b0d | |||
30f583264d | |||
89d5c2b6e4 | |||
1aeccd1440 | |||
54e1f59215 | |||
7f6335324b | |||
d0aa999b57 | |||
16e410669a | |||
fb623a02c5 | |||
7b27f4b62f | |||
aa99830c06 | |||
0af1926353 | |||
54b2716990 | |||
59a863e14a | |||
494f319be7 | |||
35a77428b2 | |||
3b264d0074 | |||
b0e169ac85 | |||
a5bb31f069 | |||
e335c2e02f | |||
b9a7d779b3 | |||
3c667a2e7d | |||
afaa3d0356 | |||
53a69507c4 | |||
19df8d85e0 | |||
1c3fef2ca9 | |||
26d1652715 | |||
30b854dccd | |||
9765394663 | |||
88d4e82b33 | |||
93d483db89 | |||
60d4f2411c | |||
0a304f65a2 | |||
cada76333f | |||
481ab24f46 | |||
7e6ee912c6 | |||
b5e4e34418 | |||
833b5b33d2 | |||
5b3a0ff4f1 | |||
11bda4d41c | |||
abb3757847 | |||
6e536bcca8 | |||
20be04a153 | |||
799437578a | |||
1d28668296 | |||
7581352759 | |||
b734ae2e8a | |||
431741bf00 | |||
407d552e0c | |||
86b3bf10e6 | |||
83b33f62cf | |||
360695ba9e | |||
9863e3a8b7 | |||
efc40090f5 | |||
58222d156a | |||
4929c358cc | |||
ad87b2a039 | |||
5ec975e31a | |||
806554237b | |||
3f929020c2 | |||
4b5c8b5541 | |||
0f3ef704bb | |||
4b34193d59 | |||
fc33235f82 | |||
eb7fc4aead | |||
69ba8f1863 | |||
02d4b7278d | |||
326a499f6f | |||
68e5fd2a5c | |||
9958731815 | |||
9cf3298360 | |||
58d39d07a1 | |||
7cb103461a | |||
f52e4a03ec | |||
882a5687e6 | |||
301c7e67bf | |||
70ddbd8ce1 | |||
ccfaf253b5 | |||
392bcca0c9 | |||
9f55574c90 | |||
2bb09b418f | |||
c1ba1d1e15 | |||
efb583a6e9 | |||
b89624c558 | |||
0b11ff8aa8 | |||
0808992441 | |||
1fa35859fe | |||
6e8d38ec4e | |||
ab2ad3f2f9 | |||
dfcd739fc7 | |||
be34b500a6 | |||
53b99a84a5 | |||
edecf46187 | |||
3b24bb6fc8 | |||
0ed02d00cb | |||
aef9ac97c7 | |||
8975e7b025 | |||
cf0ac156c4 | |||
37a42da465 | |||
b70c66b00d | |||
11ca2ae167 | |||
9c8ce3e423 | |||
473969163d | |||
7698a55202 | |||
8725c0af09 | |||
6577ec4de4 | |||
ae63c1e013 | |||
319a91f894 | |||
3b3bbd4fba | |||
73968fd14b | |||
500c245f3c | |||
415b598742 | |||
d2becae223 | |||
34cf7ccebc | |||
2871e0e78c | |||
95bab4077e | |||
9f0c000227 | |||
0359d9dde3 | |||
3e959d8e2a | |||
8971ccd576 | |||
78463a7d26 | |||
1366e4438d | |||
18b1984f86 | |||
e2f6c7fb99 | |||
b0e8c7c437 | |||
07e8cd5348 | |||
c3d92f0c73 | |||
b20c1023d6 | |||
b4a4f59dd2 | |||
156bc6f47a | |||
6c2568f4f5 | |||
ba9f82ed73 | |||
6d402acbc0 | |||
ce0e2a0140 | |||
a5f4781d81 | |||
2b3416134f | |||
411e7607d6 | |||
768f59a32f | |||
bbbdba1e50 | |||
310e050b24 | |||
7128063ecc | |||
0cf0849cff | |||
5ea556eeb0 | |||
407b866a3e | |||
4ae3e41deb | |||
6646cb0972 | |||
e310c7747a | |||
60d89e287d | |||
8053595370 | |||
075df92298 | |||
61a77d6fcc | |||
612ae2ec7c | |||
05ea79cf53 | |||
3554888f25 | |||
e5b9dda758 | |||
d09064e432 | |||
1a43de16bb | |||
871f62c376 | |||
fbdab90b57 | |||
e6174d3e28 | |||
7335225600 | |||
063e933194 | |||
e37e668e5a | |||
02d5faa992 | |||
006acd3c28 | |||
029069960e | |||
9f963d3325 | |||
b4b8c1d174 | |||
dc2f0e39ae | |||
20f580b6f9 | |||
8e60571f6e | |||
c88a4794c8 | |||
2f7d4c362c | |||
ac0d2ee2de | |||
258ceb7507 | |||
823e73e143 | |||
c65f1f95dc | |||
be96c62b1e | |||
ac17fad84e | |||
9e7c99dcae | |||
fd76c5e540 | |||
5f43369bec | |||
40ed6f2f78 | |||
96c704a167 | |||
94be1f7399 | |||
5590d9aa75 | |||
60d800537b | |||
1ba42a9ca2 | |||
db202bad09 | |||
339fa7389b | |||
7614099b8e | |||
58a706af96 | |||
0348bbe971 | |||
597922ecb4 | |||
f1a0049599 | |||
19a60a4b5d | |||
25a2ca9628 | |||
b5eae2868b | |||
0d5ac7440a | |||
1f2c59b099 | |||
b521f8acc6 | |||
90b0d85e73 | |||
bf3466beb2 | |||
03e74ba5de | |||
e99d634ae2 | |||
201b1a8380 | |||
4792f8f5eb | |||
d8279fdb6d | |||
1bdbcd7510 | |||
ba49d859ee | |||
d51449d017 | |||
06b35e5ced | |||
27dc761d08 | |||
90381231ea | |||
6dbf4c8f03 | |||
19e22f554e | |||
920d2b77f2 | |||
684739a476 | |||
5005ef98b4 | |||
9cc2a6a0c3 | |||
5f28d73db6 | |||
873accd4a8 | |||
03902a01da | |||
263e2e15ba | |||
5d207ce654 | |||
1d70a331cb | |||
a5768f535b | |||
f6cf4927e2 | |||
51eef4ed73 | |||
643c82e996 | |||
666c4caccb | |||
458e7dff6d | |||
a7a2784528 | |||
aab8bb2bdf | |||
8ff80b269d | |||
ed6604d1f5 | |||
eab9e86733 | |||
8c0dda2183 | |||
1bfb74c14c | |||
be58923fed | |||
871c8734b9 | |||
57550a28b8 | |||
e92abdf207 | |||
96fd529a92 | |||
819c206742 | |||
a32df26ec0 | |||
2db7790795 | |||
2c6fcab228 | |||
bc5214342f | |||
ebd234e059 | |||
6fd9adbecb | |||
2a8ceefb27 | |||
8f0b3e546a | |||
ac4e4b423f | |||
9c2d15ff7f | |||
3378de12f6 | |||
e60155ff13 | |||
fb2f356d89 | |||
4dcccc8365 | |||
1861ca4bb8 | |||
3f56b87c51 | |||
3bcb6c7319 | |||
8d4176109d | |||
63ee16075e | |||
92c1546c01 | |||
44df56edce | |||
1f4b3cdeb0 | |||
a25eaffb69 | |||
733c462c13 | |||
c8e309779f | |||
c16fc8a49c | |||
7626e4b3ae | |||
39dbb86bbe | |||
0c5dd9febb | |||
da3375ed41 | |||
80835a10e1 | |||
32be9f9045 | |||
fc6a4c6c49 | |||
77a63ef0fd | |||
9ac91d220f | |||
ca128a0eb4 | |||
5b7daa224c | |||
81ab88b416 | |||
d57c1286de | |||
c99bd4a6c9 | |||
c521d1587c | |||
000193aa90 | |||
eb66233b5c | |||
87cc889e8b | |||
83f0c699c7 | |||
8b1ee26ac1 | |||
f018a0d735 | |||
702e60ad8a | |||
aaea66aca8 | |||
d071c4d3c3 | |||
4c0cea2147 | |||
555c3b1d9b | |||
cb795f0ff9 | |||
ed098694b0 | |||
261226dd42 | |||
ca36aedb4e | |||
ccbe5307d8 | |||
e5655a11d2 | |||
aca5d18efd | |||
18582237ac | |||
4e2f5fd141 | |||
b13bd1efcf | |||
5bd4adf542 | |||
370b8b6cef | |||
e4031c558d | |||
a45e840309 | |||
dddd1cc691 | |||
7aa3372ce2 | |||
690b6bcb49 | |||
131d9f5190 | |||
b69bbfe1ef | |||
f91bcb310b | |||
4b7f3151a8 | |||
3ff7bcf10e | |||
99e0c7ddc1 | |||
b6265139c7 | |||
0c2724c844 | |||
0180e43f3d | |||
2854f40668 | |||
ee65079c96 | |||
5548ce5896 | |||
41376c6d1a | |||
d1b2699685 | |||
fbc36dc4b0 | |||
d0e18ff0cb | |||
88b9738fa2 | |||
8f7a2482ae | |||
77cc3267fc | |||
e49ce2604f | |||
7df9cd5ee2 | |||
2fa5c020a4 | |||
4865983a70 | |||
fc15ca44f4 | |||
c2423e498d | |||
d32b44645f | |||
e2a26a647b | |||
a58d7020fd | |||
5275b60ebd | |||
7c9ad7efdb | |||
f219cd8342 | |||
0dd92f8222 | |||
0938be9269 | |||
d161a2fafd | |||
490546f191 | |||
1dac89633e | |||
028c0b640f | |||
cc05e311a2 | |||
be710767fd | |||
30c5d21891 | |||
fa0080d187 | |||
3da27ab681 | |||
035096c6f0 | |||
8c6d1610d1 | |||
5a401ae262 | |||
388e551dc3 | |||
342d0a8365 | |||
d579a502d0 | |||
9cd8afdc3c | |||
362a156867 | |||
d5dda47db8 | |||
2b93bebc02 | |||
c07fb75c90 | |||
0f9c8b3aa5 | |||
f8c147431e | |||
22bf6fbcba | |||
0a6f82835e | |||
85e4c43b02 | |||
362bcee0f4 | |||
cced3469c5 | |||
bb25c59e90 | |||
3bfd3cfdee | |||
eb53793fdb | |||
55f11e29e4 | |||
36592bfe40 | |||
2f60c83f44 | |||
b8ebeba4a2 | |||
3447db5fe4 | |||
f950a7ec67 | |||
dfca1697fc | |||
14efbb464e | |||
3fc368d09b | |||
27413d3219 | |||
d8a722cb61 | |||
3f5bfbd4d1 | |||
80bd8e43b0 | |||
8b5cd49b5a | |||
c9ebf8d501 | |||
1c065b311b | |||
cdd9f5cb72 | |||
e0d749c23b | |||
6252b601c9 | |||
5a85d134b1 | |||
1c661b92bc | |||
f463dc0947 | |||
e9b937352e | |||
8742e2a923 | |||
cbd0bd8155 | |||
7a066ecb41 | |||
51c8373593 | |||
0647f614cd | |||
fc161cbb36 | |||
ff17b31dfb | |||
8ad2b8be25 | |||
46eaa5a1ba | |||
12beaea5e2 | |||
64a6b6cb1f | |||
1502494cba | |||
f944e619dd | |||
541f2f74a3 | |||
5d1a328e88 | |||
b349f258a9 | |||
d7775b763f | |||
1c2b1b977a | |||
748bfac734 | |||
75594e9ff7 | |||
e4156c33bd | |||
b8b117c7e7 | |||
6549661b9c | |||
d25e2f6c80 | |||
298d34d8ff | |||
8690746efb | |||
d02f3303d9 | |||
122e4ebd7d | |||
e5ec50c236 | |||
a3cb322018 | |||
743159396a | |||
ec0fb40893 | |||
c8027454ba | |||
92717ff3e4 | |||
10240510a7 | |||
1d7b7f6e7a | |||
7fbcdb3f9a | |||
5200063114 | |||
72fc9a3e26 | |||
4b683b85a8 | |||
28cb14bf13 | |||
60795784b7 | |||
7938ebc7d7 | |||
754de4da37 | |||
804b3bd10f | |||
fd3c727ed9 | |||
7ef7596569 | |||
e019bd910f | |||
4735b1c01b | |||
2ce386a3c2 | |||
2d90ddd2d2 | |||
a79e01bf71 | |||
bf90b14d6a | |||
5cb7599ca1 | |||
8015482f67 | |||
0fed84b8c4 | |||
d121a117cc | |||
cd91db953c | |||
c410542007 | |||
8274c2926f | |||
0f651650f3 | |||
e5aa5ae1ba | |||
a01ee36288 | |||
fcd7d0518c | |||
9c0b8ef83c | |||
6fde4c56b0 | |||
336ed66e35 | |||
4ed3116f33 | |||
a1ef21301b | |||
292afef2fb | |||
eb17b475c8 | |||
201acca634 | |||
11c1b94d03 | |||
186250f68e | |||
98b0a98891 | |||
b0334e13ba | |||
5ed3cb99ac | |||
4236187dea | |||
dcf80ab025 | |||
308540de80 | |||
08e8e47d03 | |||
66039a5cb8 | |||
864d1cfeca | |||
b4093dca8d | |||
79a3de16a1 | |||
475978875d | |||
c3cc158408 | |||
7ad46df850 | |||
9fec889e82 | |||
c9d598a581 | |||
8ca0b21060 | |||
33f64b5d78 | |||
3c5b803bdb | |||
563fc0889f | |||
7c79d8302b | |||
73cd3e704f | |||
47c4bf5571 | |||
5f027fa4c2 | |||
8840bcfa86 | |||
410af46cd6 | |||
19b2599cb5 | |||
d9f1b04ec5 | |||
78c615c332 | |||
9366885a42 | |||
7f4395f40e | |||
07201d7a0f | |||
3b616e4bde | |||
a545d30831 | |||
a5cb5649fb | |||
426e07aaf2 | |||
033038fd48 | |||
623da4bc5d | |||
d944f1797f | |||
121bc7a674 | |||
c1d227d312 | |||
1ba86f685b | |||
aec3b1f7d7 | |||
828a36e325 | |||
6c61b4b3ac | |||
2617073ee0 | |||
2e800038ab | |||
1b89f5eeab | |||
042edd389b | |||
4b58d14fa7 | |||
e3a1247b15 | |||
8395165eee | |||
c92524d488 | |||
70fea013c7 | |||
eea0657044 | |||
c33f6e047f | |||
92c4bc19e9 | |||
c06c0ce559 | |||
600e70dd52 | |||
e1b1bc94c8 | |||
9b54dfa1d0 | |||
aa03f30e6e | |||
8e1ea525d1 | |||
ad7c8ffba9 | |||
8b70772ab4 | |||
4b5998917e | |||
b68679bcdc | |||
875d0c22b8 | |||
1e633e88dd | |||
1fa45b1460 | |||
b026c7c65a | |||
3999aa6cdb | |||
86e53267c4 | |||
a903ea8d62 | |||
8678d47deb | |||
b2545cc3c6 | |||
3992da034f | |||
28276fc834 | |||
f459a4084e | |||
39c64b0bdd | |||
39a8040ddc | |||
aa78c9ea4a | |||
1a8b50089d | |||
f8f8615eef | |||
e05aafbc67 | |||
2ee4c0d7f4 | |||
fed1a1a8b0 | |||
4df75dc498 | |||
3b4c45efa2 | |||
c4e0b0a313 | |||
c6880b3e9d | |||
0b493bbb9e | |||
43810cb179 | |||
4cdd0979ca | |||
dc92cea680 | |||
6856ae468e | |||
32aed01c6a | |||
b05e540217 | |||
43e601312b | |||
d04c06b472 | |||
44097e21cc | |||
404a42bb3a | |||
266c136304 | |||
f58fb59ea0 | |||
3ecee09ebb | |||
97dd498815 | |||
ad1da3a326 | |||
eeb4705fff | |||
9d63a6b46d | |||
7f29896c77 | |||
c6c9b9cf48 | |||
c95f507fc7 | |||
f4779e8679 | |||
b36100faf4 | |||
ee73594575 | |||
299cb4bb8a | |||
8e0f9f30f6 | |||
40488bdcd1 | |||
68aed150b9 | |||
9209817ace | |||
627371722c | |||
856731d3ba | |||
f23794cf04 | |||
e10efa3a03 | |||
9da0279e1a | |||
e4d27f6b4f | |||
af0b00fa4d | |||
60296aec76 | |||
5bb89e7f0c | |||
27dd66aca7 | |||
3406a4afef | |||
463939f7a6 | |||
f2a2ea2490 | |||
93fe99fec5 | |||
2afb5cf8b1 | |||
4d761db7e8 | |||
9526c5deda | |||
dc87025ce4 | |||
6727276a65 | |||
aab188174f | |||
b369dde9b1 | |||
9440c53567 | |||
70a2ddc5ac | |||
05dfe3177d | |||
320f2c1f06 | |||
ae0d8d69db | |||
1057519074 | |||
dc0c081001 | |||
d04957970c | |||
f8d47455f7 | |||
657edbeea4 | |||
0cded1f116 | |||
4cba419676 | |||
62669a24ea | |||
7f844ab8b7 | |||
4fb3a40679 | |||
80518ee512 | |||
2ee5dcb153 | |||
bfb18e10bc | |||
3c830ea7e7 | |||
52785ab327 | |||
7e396f380e | |||
be50ab0878 | |||
1a8c0defd7 | |||
f0a8850259 | |||
eb9edb143e | |||
4ca3873457 | |||
63b9e791bc | |||
23cf3391ed | |||
911db1f997 | |||
2a16331f8c | |||
2d28c4cff4 | |||
e83d30bb5a | |||
f0eb1925e4 | |||
592b0ad3ef | |||
41e9ad6564 | |||
2539a67273 | |||
056d552357 | |||
b3ced6a67b | |||
1f5a34454d | |||
b2280149c0 | |||
00ff21f6da | |||
07169e5ba5 | |||
d9e459428d | |||
5127cb8b16 | |||
c3cedcc127 | |||
ae437c575f | |||
b132bf5a87 | |||
327f1058d2 | |||
923b175f7e | |||
dd9f635a60 | |||
e1af5b8d26 | |||
49f0a40da5 | |||
80370ff991 | |||
7c4956df35 | |||
fe87d76c2f | |||
de49833268 | |||
b1f648fc5c | |||
eca423b44f | |||
5ae96aa171 | |||
36839296d7 | |||
df33ef2355 | |||
75cf456674 | |||
32c26493fb | |||
456f8dc0a9 | |||
b56d596905 | |||
1cbf9eb5ef | |||
476ca3a0b6 | |||
2ad859988b | |||
452441d465 | |||
5ad8a36fa7 | |||
e5d3992639 | |||
d16ef4d21e | |||
bd2da5a4b5 | |||
ac1b1dd83e | |||
26058dca96 | |||
4ceac7c141 | |||
3655bcaec7 | |||
53b0f14b70 | |||
759ae2d993 | |||
694cbc0ddc | |||
1d418281e0 | |||
43092765e4 | |||
98369131d7 | |||
8e6d5f2937 | |||
b7a68d5b05 | |||
53c4db0555 | |||
4ad85ed156 | |||
e4a7d9f693 | |||
3b72f64513 | |||
000003ea1e | |||
e828663392 | |||
cecd7af959 | |||
4ce4afa9d9 | |||
89db2255d0 | |||
d52df3cd84 | |||
15da174652 | |||
014c88923a | |||
8fadf5aabf | |||
64c363b1a3 | |||
f4178a06d6 | |||
bbed4d9ff0 | |||
d555d6a88c | |||
764b987a6f | |||
82a0a63f99 | |||
05ef94795f | |||
15d6240c1d | |||
aa87b6d9f3 | |||
796c567b1c | |||
b91e518062 | |||
cf081ab58c | |||
28668cded4 | |||
0d707303ee | |||
0900bd0927 | |||
d7468bfb27 | |||
551216a4d1 | |||
1d8494116f | |||
299f3f834f | |||
668132a47c | |||
55a044c8ab | |||
978d85e15e | |||
cb5961d148 | |||
0c9bdc456e | |||
8605782c2b | |||
bb86e17e2d | |||
85c681e279 | |||
d429c1a842 | |||
f90e3b9975 | |||
66b0c5e884 | |||
285cbb38f7 | |||
1bea841b2f | |||
1c97793b79 | |||
8e2101d438 | |||
47fd4fa617 | |||
90041ef886 | |||
dd70d28ef7 | |||
78cb41798e | |||
1ba8a50df3 | |||
d10a10befd | |||
f0b6b30c46 | |||
803bd3c682 | |||
7fdd1faf2d | |||
99b2f30bd0 | |||
144c5aeca2 | |||
9256e51f48 | |||
2e29c3b0d5 | |||
62e883d73b | |||
b656e9b71e | |||
07de908373 | |||
4c875c8a5d | |||
d04b388381 | |||
6d7996439f | |||
48b2b2b8c1 | |||
b87effe1dd | |||
b1c7ed326a | |||
6da1710fbc | |||
d5f24dd99b | |||
0f51ff72e4 | |||
7dcfd1b56a | |||
c9458ddb67 | |||
ceb87150d4 | |||
55ccd5b873 | |||
8da998c2b0 | |||
8283ae6bab | |||
913ea9278f | |||
2afee12991 | |||
c5428a990a | |||
0245f43bcd | |||
ba616438e9 | |||
a662648a7f | |||
e905753afd | |||
48fc1640a8 | |||
c19140b49f | |||
644a512e56 | |||
8cc80d5e50 | |||
a2e431331c | |||
196e9c0021 | |||
1860cd460a | |||
81a2f45bd2 | |||
21910f00de | |||
7337bdcbca | |||
48697fe009 | |||
4c44108423 | |||
3b6d80fcb0 | |||
d230dd27d8 | |||
12016969c5 | |||
85a4463976 | |||
a0ef678798 | |||
3c16fe4fad | |||
b126380b00 | |||
1440f6765c | |||
32d512854a | |||
3b0d040c11 | |||
086c5e6fc8 | |||
93d56f5165 | |||
fc83588e85 | |||
28d4c2e907 | |||
f67f3a6626 | |||
b44b68bd1c | |||
149b2dcb46 | |||
65993e8233 | |||
4ddbc8b6ed | |||
774073dd0f | |||
14025bd5cc | |||
eb7a1dd80e | |||
90aeb4d1b5 | |||
c9689e0591 | |||
7452a2fdef | |||
2d5b252fd2 | |||
8c4ad359fb | |||
92d7027b40 | |||
3f18e272c0 | |||
50cca76e54 | |||
9c9353422e | |||
ad9cd687b8 | |||
73f8986ad2 | |||
3221771a72 | |||
5e5f07ff35 | |||
c33d5ad156 | |||
70823a046e | |||
0a859522ed | |||
cc69f7b4e5 | |||
638172b44e | |||
f5b3a49b76 | |||
bf4e71e1b3 | |||
000549266e | |||
9f4835ec2b | |||
0fc1f2fb6f | |||
dda2de81c7 | |||
830c77eede | |||
d234484f31 | |||
ae096be00c | |||
0c12abe462 | |||
3818d03fa2 | |||
97b4224943 | |||
028e527cbd | |||
a360aad2bc | |||
8b7bda40f1 | |||
d2a00d7a1c | |||
3cb8abd1b6 | |||
0a490d246c | |||
cbcce2415b | |||
c94b38ec13 | |||
78546c5134 | |||
d3a74bb4fe | |||
e0ca33ce86 | |||
bcab8b0a41 | |||
9618706da6 | |||
4a7325228f | |||
bea01e32b2 | |||
12faea3095 | |||
5e0db58533 | |||
be842cb72d | |||
b2eafa666c | |||
14adb7eaa9 | |||
2f6d5551b0 | |||
0d431acf6c | |||
c01a49fb3f | |||
275f150752 | |||
3813822886 | |||
18ad7fa51f | |||
c7a7531cee | |||
9a3b8bdb5b | |||
90ca7f491f | |||
eb8e8df92a | |||
85e981c8c9 | |||
762fa823b0 | |||
119ace0908 | |||
2b9035ed6e | |||
bd409ad69f | |||
d329417062 | |||
b9042cb942 | |||
7b58f9413d | |||
4cc87d4e35 | |||
6c5f47b50c | |||
1594e8ff9c | |||
e2d0ba0acb | |||
48dd9fe21f | |||
dff9994b96 | |||
bb98887522 | |||
77a062e98c | |||
80bc091564 | |||
29ed4f56b5 | |||
69fb7d2a99 | |||
d32d2c3fdd | |||
3af09bb16f | |||
b728e2ccbc | |||
9f8f11513a | |||
37ac368c78 | |||
e046b71ba6 | |||
51593dd0c6 | |||
c29c12376f | |||
7fe5ea4e6e | |||
d196e04e22 | |||
65bec1c996 | |||
0b1ec5ad77 | |||
a6ebe08333 | |||
9c88fb8df0 | |||
3b9cc859ff | |||
2bcaba0fd4 | |||
693f4a4179 | |||
9bc041187d | |||
08d5be59be | |||
1916f8969b | |||
dcae8074bf | |||
f290e6298f | |||
176d005c64 | |||
a151c22b34 | |||
1452c80ee9 | |||
ddc2a30737 | |||
86ea251ba0 | |||
9efb7f93e9 | |||
8107cef319 | |||
942c199341 | |||
6796f4b3cd | |||
60752e724c | |||
57907fcebf | |||
e3dd57e106 | |||
e563815e05 | |||
ad7b2e23ab | |||
cb287987a1 | |||
3b9041a563 | |||
aa8f165b49 | |||
e05f4dc7d4 | |||
e21698bcb7 | |||
143c6d8a74 | |||
13989fadc3 | |||
39fd923b0b | |||
7f94b405be | |||
b69549bb07 | |||
d8f461f25a | |||
bb56ad449c | |||
87093758c5 | |||
e87ec095a4 | |||
b4e28dfbf8 | |||
90e56267cf | |||
aa902036d0 | |||
819d676fed | |||
d980339aca | |||
6aa6f1f874 | |||
8f1853c4b0 | |||
cfdcfdb515 | |||
ec17902485 | |||
0c1d2eba0d | |||
c06f4f88a4 | |||
5885ba822c | |||
38819a4507 | |||
24230f6cd7 | |||
a3759e3a7b | |||
abfacd863d | |||
27ce8e3296 | |||
eaa165dfb4 | |||
deff53c8e9 | |||
721cb8a717 | |||
653eb15ccd | |||
e912e3ee56 | |||
9c69369805 | |||
31206c7156 | |||
3bc42efb45 | |||
91c8ccd99e | |||
24bb8036c9 | |||
5eeead2d73 | |||
ceb409a2a6 | |||
a41b12cd7b | |||
7749c34a11 | |||
7bcef3a406 | |||
49ae596a59 | |||
6dbec2d81b | |||
c30981c952 | |||
d24e5f15f2 | |||
51c3ae4330 | |||
9bed96eb56 | |||
404a5c3b60 | |||
5a5e4d05eb | |||
a244eb3dad | |||
746e598d07 | |||
ac8e1062cb | |||
367298b2b4 | |||
d5ffa6e1b3 | |||
2875df1c9e | |||
6fd87ffe2e | |||
1df3b70c6a | |||
ad8cf6209f | |||
b6feee0c74 | |||
30201d4ab3 | |||
d592909014 | |||
384e2c9218 | |||
2574590f8c | |||
a15a7a5c13 | |||
150c438334 | |||
e541268b0a | |||
a4dd33cc8b | |||
a3022056a2 | |||
6ea24ffa8f | |||
59236d526a | |||
388c88b72c | |||
e5954bad5b | |||
f1da909dd4 | |||
11178bd305 | |||
eaf2ae764e | |||
d8c4799b89 | |||
899d5bdefa | |||
9a9d10f7f5 | |||
f4fa906270 | |||
5b40682313 | |||
bed0965442 | |||
eb9337c9cc | |||
ac66bda47c | |||
8beb5ba230 | |||
2a66dd2cc2 | |||
83b6283e61 | |||
2a59db7573 | |||
1bda1c356a | |||
89f182ae12 | |||
54a4f172d8 | |||
a6a2f9372c | |||
65605276a4 | |||
cf0f7ed3ee | |||
83aac13590 | |||
07674db240 | |||
96c25cded4 | |||
363cd1d886 | |||
c5fb088d0e | |||
166d930e7a | |||
8fd5823c50 | |||
6d92ab8932 | |||
7aee5c67a1 | |||
43f0dcbb77 | |||
d8b8cc04f3 | |||
5ad4dcba85 | |||
eca8faa176 | |||
90341c18a3 | |||
afb7a81478 | |||
5b52592773 | |||
e32fa4e152 | |||
736de9f246 | |||
4e9687c416 | |||
e1528fe358 | |||
98c987a65a | |||
8daa12f7e0 | |||
228d0e5078 | |||
041fcf5902 | |||
847378609c | |||
0921cb792d | |||
d2718c9381 | |||
056f81988f | |||
6e36ee2544 | |||
c96d12e5ec | |||
f9cc6374f2 | |||
cd9596b459 | |||
0b555abc2e | |||
6c22be6298 | |||
65880b6868 | |||
c32f0a4c50 | |||
67f80fb8f5 | |||
deb80ea807 | |||
e07229dea9 | |||
a8e24f648f | |||
f852137c81 | |||
7b54c15a67 | |||
e7ef6c380d | |||
1d69099115 | |||
3dc0294381 | |||
77e27a7bb0 | |||
e104934a23 | |||
ffa710b9dd | |||
414d7e4642 | |||
8aad2cafed | |||
cd08099908 | |||
9c7c09fbfa | |||
160b3d7e9d | |||
053fe8a3b2 | |||
b2353a7bdc | |||
77025b3f56 | |||
02bab4ddcf | |||
958ab46dda | |||
5559a449d4 | |||
ad700565ef | |||
a396c0a7ee | |||
fd8840880d | |||
ef04f4e3d3 | |||
e0836b0fcb | |||
90883287b5 | |||
1d7ba15aa2 | |||
e915cfc0d8 | |||
a91c919611 | |||
4dfdce4223 | |||
1ba3833ba3 | |||
d703c5b1b3 | |||
2178b7286b | |||
19c5cd210d | |||
c27571dbc0 | |||
d1ccecf6ea | |||
851fe8334e | |||
bcc2c729dd | |||
28d10a2384 | |||
05a8c0aa69 | |||
c5b22c8097 | |||
d5fde1c922 | |||
ab6ecb4d08 | |||
bfb3b460ed | |||
0b3512b495 | |||
1d68d6d14d | |||
41934bfe94 | |||
2276ffa380 | |||
3299b2ded5 | |||
988da3142d | |||
45701fd96e | |||
a4cad368a2 | |||
8fcc246a56 | |||
6e57b1cf6d | |||
7fe005ff30 | |||
108570654e | |||
739c503404 | |||
89ed790028 | |||
ec886ec6fa | |||
f2a59a4de2 | |||
316d59c1aa | |||
c0d4eeb387 | |||
4bf419fbf7 | |||
f08fbf882a | |||
92dd678d6a | |||
e0b0697fed | |||
6f42678460 | |||
751bc69c18 | |||
04394d69d4 | |||
4e0cd82b5b | |||
b5fa9c8200 | |||
d058131586 | |||
173493784d | |||
0c1879ff38 | |||
c7fe0bd8d6 | |||
a815272b7b | |||
e693b1d549 | |||
a2bb4553a5 | |||
2719a451c3 | |||
bc9757ff17 | |||
c44ccf143b | |||
199a69292d | |||
c56b90703f | |||
8aa86c9c1b | |||
e4b22e7f19 | |||
7a1ebf9b8f | |||
ca55343b76 | |||
e21866781f | |||
4d5c4e069c | |||
88264ef30b | |||
52919523c1 | |||
0da148e326 | |||
49641cadea | |||
81066b7ce7 | |||
9c1c00968c | |||
c787a246f9 | |||
3de90d1344 | |||
b7594b09b5 | |||
12bee2af23 | |||
159d0f0ed7 | |||
2f1739ada8 | |||
bf9bc50ec1 | |||
bd84485017 | |||
12404e04c8 | |||
29a4df43ce | |||
cace1ebd92 | |||
1fc43aa6f2 | |||
e8c8283a26 | |||
defdc8539b | |||
33aa115574 | |||
b0586d9911 | |||
45caf972ed | |||
ad3dceae30 | |||
19895f8013 | |||
f86cc2579b | |||
7450790558 | |||
0e0273a015 | |||
3d813cbede | |||
79dba4aadc | |||
5474f8e3cf | |||
cc6c41f8d8 | |||
55fefbe39d | |||
cc72e15c26 | |||
c759e5e27a | |||
ce25b947e0 | |||
0cc63ccaa2 | |||
7245a098d0 | |||
536e9651ed | |||
fc24da940d | |||
b5f9e5ce83 | |||
8bf197653f | |||
20905cfe26 | |||
96b32f194b | |||
a3c33c6e21 | |||
4bcb63bdd8 | |||
d4eb14aa3c | |||
0e6cb83abb | |||
92fb91935b | |||
cac990f186 | |||
8aca8da2ea | |||
1e8ef3c458 | |||
01707406a1 | |||
3ea036f9ce | |||
94e0a10f00 | |||
5567bb5c25 | |||
b7db12bf7e | |||
053b972a2a | |||
92887375c5 | |||
026e940f03 | |||
e2497d0181 | |||
b7184e28ba | |||
5ba154a597 | |||
6aa9d66873 | |||
239272e43d | |||
e58c6f5dfa | |||
6d097b831b | |||
fc726b9888 | |||
f672f7ff7d | |||
d1c590a666 | |||
4bc8dfb820 | |||
96a80133e1 | |||
37799b3439 | |||
c05a3f86ab | |||
9dfd6150bd | |||
579ccdf9c9 | |||
9e757a0ab0 | |||
8f917b1d4b | |||
ce3e6380b9 | |||
4a2f08c846 | |||
cff4d1649f | |||
1850396dc4 | |||
d19332ca3a | |||
302a1437cd | |||
5cd8c7c3e6 | |||
ecec9474d8 | |||
f4fa1e1d06 | |||
90de10c17a | |||
653d8717ba | |||
69356489fe | |||
92e4ca6a38 | |||
0ccfa6805f | |||
e0e28908d2 | |||
fe6526512a | |||
aaf5b09a5a | |||
c0c951630a | |||
b9bbed2c41 | |||
b053583a1c | |||
e16692ed07 | |||
20245aa622 | |||
e284bd672c | |||
215e7fc399 | |||
93d678f8be | |||
c7d6d7a971 | |||
c49d07c2fd | |||
2a01fb6410 | |||
e053493717 | |||
ac01106743 | |||
4337a9acaa | |||
d4efb330c1 | |||
e18cdf4d93 | |||
9addda3c41 | |||
c642a0d894 | |||
a457e35237 | |||
10993c4ad4 | |||
0814357646 | |||
93d9517795 | |||
67573371d5 | |||
4500893062 | |||
3ab19b32a2 | |||
16fe1e0246 | |||
9333b74229 | |||
8bf160a9a6 | |||
64943a3155 | |||
e2a2877adf | |||
e9d1d70c7f | |||
0a760cd05b | |||
0ddc2459bc | |||
6b2be99eb1 | |||
3896576a16 | |||
b278838fd2 | |||
eef0152cc4 | |||
6b297c07c3 | |||
a9713c11c0 | |||
c8b7215639 | |||
a64748c202 | |||
092ef11a12 | |||
c6ee65f543 | |||
dde6b8a89c | |||
4ecc903222 | |||
5da541f9e7 | |||
922c67bd35 | |||
12a13e1f30 | |||
27126f135d | |||
9c20ad6da2 | |||
2aedc9776a | |||
3e034b6e9a | |||
c435d3daa7 | |||
683ac6f204 | |||
e968e3762e | |||
6588652ef5 | |||
935495f3e7 | |||
e1574e31f6 | |||
d3d316a28f | |||
114cf22e8d | |||
6880aec670 | |||
a3bd96fe36 | |||
7eaac6cdc1 | |||
6d9f243835 | |||
e2f5fb2549 | |||
13cd145e02 | |||
bdd3d5f3de | |||
c3be055fbe | |||
e231949b78 | |||
32b93c94e0 | |||
7bef2eeb8e | |||
31d6cd7495 | |||
3a713c0060 | |||
6362de3829 | |||
46f8073249 | |||
a717e2f896 | |||
f01884e48c | |||
028b8e440b | |||
42d5294793 | |||
7d6dae6870 | |||
5f9f77672d | |||
a9eec2cc2f | |||
25ec615408 | |||
decf7dc4f8 | |||
1343bc394b | |||
92bcc4f792 | |||
879c4de66f | |||
4ea1d166a5 | |||
bea5ce7a4b | |||
9630ced250 | |||
3c13da7897 | |||
bf2f91c87c | |||
42609d807b | |||
5e007808cd | |||
95c42c3b04 | |||
80e2dd8854 | |||
821b1e2f28 | |||
1756e10a34 | |||
a1e578cc15 | |||
8d481b4e9a | |||
27c9762f95 | |||
23ade0ee15 | |||
e2379969e5 | |||
d9da698bbd | |||
5ea5336b6e | |||
b96d9b6e2f | |||
efcfaa8b6c | |||
5fdf2760a5 | |||
bd615d6f93 | |||
048d9b5cba | |||
91dfb92038 | |||
aff69be254 | |||
87aecf811d | |||
ffe90c528b | |||
57c8143350 | |||
0901d03085 | |||
3c0486913f | |||
d05b15e860 | |||
c379d46c1c | |||
441e191530 | |||
b84bd303ee | |||
3715785a49 | |||
70b73cfc78 | |||
a5f9a4ae91 | |||
ce036bd176 | |||
7884c22f1f | |||
9a5dd7accf | |||
2a28c81614 | |||
71a22e3cfc | |||
dcc2eb9a93 | |||
a9d3e652f7 | |||
82ec61e9d7 | |||
8079c5c1c2 | |||
553a22e316 | |||
56e889cedb | |||
a223e65db2 | |||
e7e6c4e1d7 | |||
e52edfcbff | |||
8466ac0bae | |||
229616419d | |||
c96292492c | |||
d6326a0faa | |||
7a83582e77 | |||
73030c8c54 | |||
6fcfca54c6 | |||
21f01c5a53 | |||
fc7a28e8a0 | |||
5a917eb979 | |||
b66e2504a2 | |||
6c0ed00367 | |||
91f8417786 | |||
9399de9bb7 | |||
c8e4dcb569 | |||
e37f7f055f | |||
c04654d9ce | |||
ae010c619f | |||
afeb7b3f68 | |||
ff7b9970f4 | |||
91484ede5e | |||
598ec6af98 | |||
b82b4314ad | |||
e5ef197726 | |||
a4c0e1a51f | |||
470f319b9b | |||
7b7581f120 | |||
250a7ac1f5 | |||
1f10db2828 | |||
abe549cac7 | |||
32c505715c | |||
9ccd3114ff | |||
4a6c0a368e | |||
9f78127b61 | |||
172bcc835f | |||
6c3a89c431 | |||
ca4164e629 | |||
5c10704f58 | |||
0f82309562 | |||
87af90e18d | |||
cbdd890e41 | |||
3b8b14dc27 | |||
4b3c063afd | |||
fc8da0010b | |||
44d5347ed1 | |||
c508894faf | |||
bcb3d03973 | |||
1e5edb48c3 | |||
12baa811f0 | |||
b7107864b7 | |||
f871278675 | |||
ff1c5bec03 | |||
061f0d205b | |||
2577407d03 | |||
98b7033f07 | |||
a020903307 | |||
552ce003a5 | |||
e9b0db388c | |||
148f8397d2 | |||
4276050d13 | |||
7417bb0e5a | |||
ec321094f6 | |||
56642930ab | |||
4907e62893 | |||
dcc0bb9b62 | |||
1b446cd4cf | |||
5817c56d19 | |||
722e610fbc | |||
07b7fc1bca | |||
146d0c202d | |||
54f7847262 | |||
75f75bf285 | |||
29c4d1b717 | |||
23a60fa65b | |||
a83a7db804 | |||
0aabd07c95 | |||
a76a64833b | |||
6489a19c78 | |||
21f50a8fd4 | |||
a4be3e7d7f | |||
8437ac5623 | |||
7fc2281715 | |||
ea63f80e10 | |||
0c0faf43c9 | |||
28bb308a7a | |||
0358f7dada | |||
6d412d738c | |||
253b7d22fe | |||
6217a15674 | |||
c25c1ebd9e | |||
f48acbda7b | |||
af56a77915 | |||
89739baf53 | |||
4d2db06ab5 | |||
4aea6915a0 | |||
604295e508 | |||
f04b262710 | |||
a92acecb54 | |||
416644085a | |||
7d964aed3b | |||
ffa58cfc12 | |||
b3b13efde6 | |||
5ffb5a76c6 | |||
55b1dbef3d | |||
a5a8e0962a | |||
7cf47cfda4 | |||
10be338b52 | |||
be4376c6c6 | |||
acdf5fd66e | |||
f09b4b6bee | |||
5a1e2d3f63 | |||
0b6f35d798 | |||
87fafcaa8b | |||
3a658add7d | |||
8d55f167bf | |||
eb8bfd0828 | |||
0199d3bd7f | |||
c731788929 | |||
8dcccea8e4 | |||
36b569af55 | |||
f1a18b20bb | |||
1d6484a858 | |||
f50b6625d9 | |||
582472c158 | |||
a29f9e51b0 | |||
a634dab1a6 | |||
d8f4436005 | |||
a7d9266832 | |||
7cf1f203e9 | |||
6f739184dd | |||
273c348884 | |||
e70b259047 | |||
f35cbae938 | |||
3a7389ef10 | |||
4e58ce1535 | |||
1d0154cee0 | |||
c4d4b54314 | |||
ea07702f62 | |||
baebe2afc1 | |||
c5bcd28554 | |||
5bcd35d6a5 | |||
1fb17d65cf | |||
31929bf489 | |||
41b1edf58b | |||
12baf2057c | |||
c685607e4d | |||
a81c8ee3a1 | |||
e94a528765 | |||
5e01c4b3fd | |||
b046bfa830 | |||
06e44a862e | |||
0ee86f01f2 | |||
e80d17f602 | |||
e4109ff54f | |||
7cd8c79177 | |||
c354599a53 | |||
81bebc8374 | |||
beaf9443aa | |||
e4d31061d7 | |||
e1d1fe454c | |||
eecd6843a2 | |||
28db21c462 | |||
e65280cbef | |||
dd46dfa703 | |||
1a62150709 | |||
60f178db65 | |||
0b5a6143ea | |||
d46c023a22 | |||
16fd9d6864 | |||
ae9ddd465d | |||
68c7eff5fe | |||
97f69a1a94 | |||
ac2282e907 | |||
464519769b | |||
579e096ec8 | |||
e220e31127 | |||
ad247ac5d8 | |||
dfa051a21d | |||
06299a776f | |||
97b5b3b3ca | |||
fb2e71137a | |||
ab83b43b34 | |||
9857c90685 | |||
7f107b472a | |||
a319ac3a19 | |||
8ced938763 | |||
4eed5e9057 | |||
8be5b59a41 | |||
e4c0555230 | |||
1e1515fc9d | |||
1ba6201518 | |||
f9e12e82f7 | |||
46c2d91a79 | |||
728c0787f2 | |||
be2d6541b9 | |||
77b89c8b18 | |||
e00db59c7c | |||
311ddbd193 | |||
d54c9b0fef | |||
d90616278c | |||
dcee4b6fa9 | |||
2978502705 | |||
7f892b51f4 | |||
fd4fbe8148 | |||
65e1117741 | |||
ac16650e0c | |||
6f48626a82 | |||
86db2c74ff | |||
a19d98647b | |||
a2b04f45c0 | |||
b73dd9c97e | |||
625af2b194 | |||
0de0fe1104 | |||
b8d6af9569 | |||
9862138b67 | |||
b45ed65ef0 | |||
b086728094 | |||
918073d9bf | |||
21b303dc54 | |||
c529e6ca7c | |||
3915627615 | |||
e8156ad981 | |||
df96d4db84 | |||
0cd80270d1 | |||
25a0b0ac5e | |||
7777e1c30b | |||
60c619f6a3 | |||
03ed5bff5c | |||
bfd6521ce7 | |||
3580d816e6 | |||
ce55b36c99 | |||
0ecb7857ce | |||
2b3a500fed | |||
973b2aaa24 | |||
8d5cedf046 | |||
27387c3cf5 | |||
4cdc698707 | |||
bc792af28e | |||
b0b7c351d7 | |||
b622d4b27b | |||
f6b2e6f836 | |||
b4b4e32e4c | |||
48833363da | |||
f662020a4d | |||
5ad4dabfa1 | |||
d4fb407158 | |||
a1dcb994d7 | |||
002e5e057c | |||
04071f43bc | |||
f2c13bd905 | |||
9c4f97ac28 | |||
1659724375 | |||
7a2cb35262 | |||
53a343e65b | |||
c274be5fc4 | |||
64285775a0 | |||
d39e6b6d81 | |||
90e9f54726 | |||
492d801aab | |||
1eb095402e | |||
de7092b8a3 | |||
ec0551c6b0 | |||
3c7888bf29 | |||
767467dc67 | |||
51e138c25b | |||
b21bffae0c |
@ -20,6 +20,8 @@
|
||||
--ignore SPDX_LICENSE_TAG
|
||||
--ignore UNDOCUMENTED_DT_STRING
|
||||
--ignore PRINTK_WITHOUT_KERN_LEVEL
|
||||
--ignore ASSIGN_IN_IF
|
||||
--ignore UNNECESSARY_ELSE
|
||||
|
||||
# FILE_PATH_CHANGES seems to not be working correctly. It will
|
||||
# choke on added / deleted files even if the MAINTAINERS file
|
||||
@ -30,5 +32,8 @@
|
||||
# some commits unnecessarily.
|
||||
--ignore EXECUTE_PERMISSIONS
|
||||
|
||||
# Exclude the vendorcode directory
|
||||
--exclude src/vendorcode
|
||||
# Exclude vendorcode directories that don't follow coreboot's coding style.
|
||||
--exclude src/vendorcode/amd
|
||||
--exclude src/vendorcode/cavium
|
||||
--exclude src/vendorcode/intel
|
||||
--exclude src/vendorcode/mediatek
|
||||
|
103
.gitignore
vendored
@ -1,6 +1,3 @@
|
||||
payloads/libpayload/install/
|
||||
payloads/nvramcui/build
|
||||
payloads/nvramcui/libpayload
|
||||
junit.xml
|
||||
abuild*.xml
|
||||
.config
|
||||
@ -11,46 +8,8 @@ defconfig
|
||||
.ccwrap
|
||||
build/
|
||||
coreboot-builds/
|
||||
payloads/coreinfo/lpbuild/
|
||||
payloads/coreinfo/lp.config*
|
||||
payloads/external/depthcharge/depthcharge/
|
||||
payloads/external/FILO/filo/
|
||||
payloads/external/GRUB2/grub2/
|
||||
payloads/external/LinuxBoot/linuxboot/
|
||||
payloads/external/SeaBIOS/seabios/
|
||||
payloads/external/tianocore/tianocore/
|
||||
payloads/external/tint/tint/
|
||||
payloads/external/U-Boot/u-boot/
|
||||
payloads/external/Memtest86Plus/memtest86plus/
|
||||
payloads/external/iPXE/ipxe/
|
||||
util/crossgcc/acpica-unix-*/
|
||||
util/crossgcc/binutils-*/
|
||||
util/crossgcc/build-*BINUTILS/
|
||||
util/crossgcc/build-*EXPAT/
|
||||
util/crossgcc/build-*GCC/
|
||||
util/crossgcc/build-*GDB/
|
||||
util/crossgcc/build-*GMP/
|
||||
util/crossgcc/build-*LIBELF/
|
||||
util/crossgcc/build-*MPC/
|
||||
util/crossgcc/build-*MPFR/
|
||||
util/crossgcc/build-*PYTHON/
|
||||
util/crossgcc/build-*LVM/
|
||||
util/crossgcc/build-*IASL/
|
||||
util/crossgcc/expat-*/
|
||||
util/crossgcc/gcc-*/
|
||||
util/crossgcc/gdb-*/
|
||||
util/crossgcc/gmp-*/
|
||||
util/crossgcc/libelf-*/
|
||||
util/crossgcc/mingwrt-*/
|
||||
util/crossgcc/mpc-*/
|
||||
util/crossgcc/mpfr-*/
|
||||
util/crossgcc/Python-*/
|
||||
util/crossgcc/*.src/
|
||||
util/crossgcc/tarballs/
|
||||
util/crossgcc/w32api-*/
|
||||
util/crossgcc/xgcc/
|
||||
util/crossgcc/xgcc-*/
|
||||
util/crossgcc/xgcc
|
||||
coreboot-builds*/
|
||||
|
||||
site-local
|
||||
|
||||
*.\#
|
||||
@ -59,13 +18,15 @@ site-local
|
||||
*.debug
|
||||
!Kconfig.debug
|
||||
*.elf
|
||||
*.fd
|
||||
*.o
|
||||
*.o.d
|
||||
*.out
|
||||
*.pyc
|
||||
*.sw[po]
|
||||
/*.rom
|
||||
coreboot-builds*/
|
||||
.test
|
||||
.dependencies
|
||||
|
||||
# Development friendly files
|
||||
tags
|
||||
@ -75,61 +36,9 @@ tags
|
||||
xgcc/
|
||||
tarballs/
|
||||
|
||||
#
|
||||
# KDE editors create lots of backup files whenever
|
||||
# a file is edited, so just ignore them
|
||||
# editor backup files, temporary files, IDE project files
|
||||
*~
|
||||
*.kate-swp
|
||||
# Ignore Kdevelop project file
|
||||
*.kdev4
|
||||
|
||||
util/*/.dependencies
|
||||
util/*/.test
|
||||
util/amdfwtool/amdfwtool
|
||||
util/archive/archive
|
||||
util/bincfg/bincfg
|
||||
util/board_status/board-status
|
||||
util/bucts/bucts
|
||||
util/cbfstool/cbfs-compression-tool
|
||||
util/cbfstool/cbfstool
|
||||
util/cbfstool/fmaptool
|
||||
util/cbfstool/ifwitool
|
||||
util/cbfstool/rmodtool
|
||||
util/cbmem/.dependencies
|
||||
util/cbmem/cbmem
|
||||
util/dumpmmcr/dumpmmcr
|
||||
util/ectool/ectool
|
||||
util/futility/futility
|
||||
util/genprof/genprof
|
||||
util/getpir/getpir
|
||||
util/ifdtool/ifdtool
|
||||
util/intelmetool/intelmetool
|
||||
util/inteltool/.dependencies
|
||||
util/inteltool/inteltool
|
||||
util/intelvbttool/intelvbttool
|
||||
util/k8resdump/k8resdump
|
||||
util/lbtdump/lbtdump
|
||||
util/mptable/mptable
|
||||
util/msrtool/Makefile
|
||||
util/msrtool/Makefile.deps
|
||||
util/msrtool/msrtool
|
||||
util/nvramtool/.dependencies
|
||||
util/nvramtool/nvramtool
|
||||
util/optionlist/Options.wiki
|
||||
util/pmh7tool/pmh7tool
|
||||
util/runfw/googlesnow
|
||||
util/superiotool/superiotool
|
||||
util/vgabios/testbios
|
||||
util/autoport/autoport
|
||||
util/kbc1126/kbc1126_ec_dump
|
||||
util/kbc1126/kbc1126_ec_insert
|
||||
|
||||
Documentation/*.aux
|
||||
Documentation/*.idx
|
||||
Documentation/*.log
|
||||
Documentation/*.toc
|
||||
Documentation/*.out
|
||||
Documentation/*.pdf
|
||||
Documentation/_build
|
||||
|
||||
doxygen/*
|
||||
|
8
.gitmodules
vendored
@ -9,6 +9,7 @@
|
||||
[submodule "vboot"]
|
||||
path = 3rdparty/vboot
|
||||
url = ../vboot.git
|
||||
branch = main
|
||||
[submodule "arm-trusted-firmware"]
|
||||
path = 3rdparty/arm-trusted-firmware
|
||||
url = ../arm-trusted-firmware.git
|
||||
@ -51,3 +52,10 @@
|
||||
url = ../qc_blobs.git
|
||||
update = none
|
||||
ignore = dirty
|
||||
[submodule "3rdparty/intel-sec-tools"]
|
||||
path = 3rdparty/intel-sec-tools
|
||||
url = ../9esec-security-tooling.git
|
||||
[submodule "3rdparty/stm"]
|
||||
path = 3rdparty/stm
|
||||
url = ../STM
|
||||
branch = stmpe
|
||||
|
2
3rdparty/amd_blobs
vendored
2
3rdparty/arm-trusted-firmware
vendored
2
3rdparty/blobs
vendored
2
3rdparty/chromeec
vendored
2
3rdparty/fsp
vendored
2
3rdparty/intel-microcode
vendored
1
3rdparty/intel-sec-tools
vendored
Submodule
2
3rdparty/libgfxinit
vendored
2
3rdparty/qc_blobs
vendored
1
3rdparty/stm
vendored
Submodule
2
3rdparty/vboot
vendored
7
Documentation/.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
*.aux
|
||||
*.idx
|
||||
*.log
|
||||
*.toc
|
||||
*.out
|
||||
*.pdf
|
||||
_build
|
98
Documentation/RFC/intel-gpio-cleanup.md
Normal file
@ -0,0 +1,98 @@
|
||||
# Background
|
||||
|
||||
CB:31250 ("soc/intel/cannonlake: Configure GPIOs again after FSP-S is
|
||||
done") introduced a workaround in coreboot for `soc/intel/cannonlake`
|
||||
platforms to save and restore GPIO configuration performed by
|
||||
mainboard across call to FSP Silicon Init (FSP-S). This workaround was
|
||||
required because FSP-S was configuring GPIOs differently than
|
||||
mainboard resulting in boot and runtime issues because of
|
||||
misconfigured GPIOs. This issue was observed on `google/hatch`
|
||||
mainboard and was raised with Intel to get the FSP behavior
|
||||
fixed. Until the fix in FSP was available, this workaround was used to
|
||||
ensure that the mainboards can operate correctly and were not impacted
|
||||
by the GPIO misconfiguration in FSP-S.
|
||||
|
||||
The issues observed on `google/hatch` mainboard were fixed by adding
|
||||
(if required) and initializing appropriate FSP UPDs. This UPD
|
||||
initialization ensured that FSP did not configure any GPIOs
|
||||
differently than the mainboard configuration. Fixes included:
|
||||
* CB:31375 ("soc/intel/cannonlake: Configure serial debug uart")
|
||||
* CB:31520 ("soc/intel/cannonlake: Assign FSP UPDs for HPD and Data/CLK of DDI ports")
|
||||
* CB:32176 ("mb/google/hatch: Update GPIO settings for SD card and SPI1 Chip select")
|
||||
* CB:34900 ("soc/intel/cnl: Add provision to configure SD controller write protect pin")
|
||||
|
||||
With the above changes merged, it was verified on `google/hatch`
|
||||
mainboard that the workaround for GPIO reconfiguration was not
|
||||
needed. However, at the time, we missed dropping the workaround in
|
||||
'soc/intel/cannonlake`. Currently, this workaround is used by the
|
||||
following mainboards:
|
||||
* `google/drallion`
|
||||
* `google/sarien`
|
||||
* `purism/librem_cnl`
|
||||
* `system76/lemp9`
|
||||
|
||||
As verified on `google/hatch`, FSP v1263 included all UPD additions
|
||||
that were required for addressing this issue.
|
||||
|
||||
# Proposal
|
||||
|
||||
* The workaround can be safely dropped from `soc/intel/cannonlake`
|
||||
only after the above mainboards have verified that FSP-S does not
|
||||
configure any pads differently than the mainboard in coreboot. Since
|
||||
the fix included initialization of FSP UPDs correctly, the above
|
||||
mainboards can use the following diff to check what pads change
|
||||
after FSP-S has run:
|
||||
|
||||
```
|
||||
diff --git a/src/soc/intel/common/block/gpio/gpio.c b/src/soc/intel/common/block/gpio/gpio.c
|
||||
index 28e78fb366..0cce41b316 100644
|
||||
--- a/src/soc/intel/common/block/gpio/gpio.c
|
||||
+++ b/src/soc/intel/common/block/gpio/gpio.c
|
||||
@@ -303,10 +303,10 @@ static void gpio_configure_pad(const struct pad_config *cfg)
|
||||
/* Patch GPIO settings for SoC specifically */
|
||||
soc_pad_conf = soc_gpio_pad_config_fixup(cfg, i, soc_pad_conf);
|
||||
|
||||
- if (CONFIG(DEBUG_GPIO))
|
||||
+ if (soc_pad_conf != pad_conf)
|
||||
printk(BIOS_DEBUG,
|
||||
- "gpio_padcfg [0x%02x, %02zd] DW%d [0x%08x : 0x%08x"
|
||||
- " : 0x%08x]\n",
|
||||
+ "%d: gpio_padcfg [0x%02x, %02zd] DW%d [0x%08x : 0x%08x"
|
||||
+ " : 0x%08x]\n", cfg->pad,
|
||||
comm->port, relative_pad_in_comm(comm, cfg->pad), i,
|
||||
pad_conf,/* old value */
|
||||
cfg->pad_config[i],/* value passed from gpio table */
|
||||
```
|
||||
|
||||
Depending upon the pads that are misconfigured by FSP-S, these
|
||||
mainboards will have to set UPDs appropriately. Once this is verified
|
||||
by the above mainboards, the workaround implemented in CB:31250 can be
|
||||
dropped.
|
||||
|
||||
* The fix implemented in FSP/coreboot for `soc/intel/cannonlake`
|
||||
platforms is not really the right long term solution for the
|
||||
problem. Ideally, FSP should not be touching any GPIO configuration
|
||||
and letting coreboot configure the pads as per mainboard
|
||||
design. This recommendation was accepted and implemented by Intel
|
||||
starting with Jasper Lake and Tiger Lake platforms using a single
|
||||
UPD `GpioOverride` that coreboot can set so that FSP does not change
|
||||
any GPIO configuration. However, this implementation is not
|
||||
backported to any older platforms. Given the issues that we have
|
||||
observed across different platforms, the second proposal is to:
|
||||
|
||||
- Add a Kconfig `CHECK_GPIO_CONFIG_CHANGES` that enables checks
|
||||
in coreboot to stash GPIO pad configuration before various calls
|
||||
to FSP and compares the configuration on return from FSP.
|
||||
- This will have to be implemented as part of
|
||||
drivers/intel/fsp/fsp2_0/ to check for the above config selection
|
||||
and make callbacks `gpio_snapshot()` and `gpio_verify_snapshot()`
|
||||
to identify and print information about pads that have changed
|
||||
configuration after calls to FSP.
|
||||
- This config can be kept disabled by default and mainboard
|
||||
developers can enable them as and when required for debug.
|
||||
- This will be helpful not just for the `soc/intel/cannonlake`
|
||||
platforms that want to get rid of the above workaround, but also
|
||||
for all future platforms using FSP to identify and catch any GPIO
|
||||
misconfigurations that might slip in to any platforms (in case the
|
||||
`GpioOverride` UPD is not honored by any code path within FSP).
|
||||
|
@ -30,7 +30,7 @@ device pci 15.0 on
|
||||
chip drivers/i2c/generic
|
||||
register "hid" = ""ELAN0000""
|
||||
register "desc" = ""ELAN Touchpad""
|
||||
register "irq" = "ACPI_IRQ_WAKE_EDGE_LOW(GPP_A21_IRQ)"
|
||||
register "irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPP_A21_IRQ)"
|
||||
register "wake" = "GPE0_DW0_21"
|
||||
device i2c 15 on end
|
||||
end
|
||||
@ -60,12 +60,12 @@ Scope (\_SB.PCI0.I2C0)
|
||||
I2cSerialBusV2 (0x0015, ControllerInitiated, 400000,
|
||||
AddressingMode7Bit, "\\_SB.PCI0.I2C0",
|
||||
0x00, ResourceConsumer, , Exclusive, )
|
||||
Interrupt (ResourceConsumer, Edge, ActiveLow, ExclusiveAndWake, ,, )
|
||||
Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake, ,, )
|
||||
{
|
||||
0x0000002D,
|
||||
}
|
||||
})
|
||||
Name (_S0W, 0x04) // _S0W: S0 Device Wake State
|
||||
Name (_S0W, ACPI_DEVICE_SLEEP_D3_HOT) // _S0W: S0 Device Wake State
|
||||
Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake
|
||||
{
|
||||
0x15, // GPE #21
|
||||
@ -136,7 +136,7 @@ corresponds to **const char *desc** and in ASL:
|
||||
It also adds the interrupt,
|
||||
|
||||
```
|
||||
Interrupt (ResourceConsumer, Edge, ActiveLow, ExclusiveAndWake, ,, )
|
||||
Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake, ,, )
|
||||
{
|
||||
0x0000002D,
|
||||
}
|
||||
@ -145,15 +145,15 @@ It also adds the interrupt,
|
||||
which comes from:
|
||||
|
||||
```
|
||||
register "irq" = "ACPI_IRQ_WAKE_EDGE_LOW(GPP_A21_IRQ)"
|
||||
register "irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPP_A21_IRQ)"
|
||||
```
|
||||
|
||||
The GPIO pin IRQ settings control the "Edge", "ActiveLow", and
|
||||
"ExclusiveAndWake" settings seen above (edge means it is an edge-triggered
|
||||
interrupt as opposed to level-triggered; active low means the interrupt is
|
||||
triggered on a falling edge).
|
||||
The GPIO pin IRQ settings control the "Level", "ActiveLow", and
|
||||
"ExclusiveAndWake" settings seen above (level means it is a level-triggered
|
||||
interrupt as opposed to edge-triggered; active low means the interrupt is
|
||||
triggered when the signal is low).
|
||||
|
||||
Note that the ACPI_IRQ_WAKE_EDGE_LOW macro informs the platform that the GPIO
|
||||
Note that the ACPI_IRQ_WAKE_LEVEL_LOW macro informs the platform that the GPIO
|
||||
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
|
||||
@ -196,7 +196,7 @@ for more details on ACPI methods)
|
||||
|
||||
### _S0W (S0 Device Wake State)
|
||||
_S0W indicates the deepest S0 sleep state this device can wake itself from,
|
||||
which in this case is 4, representing _D3cold_.
|
||||
which in this case is ACPI_DEVICE_SLEEP_D3_HOT, representing _D3hot_.
|
||||
|
||||
### _PRW (Power Resources for Wake)
|
||||
_PRW indicates the power resources and events required for wake. There are no
|
||||
|
@ -159,7 +159,6 @@ for the GPIO.
|
||||
*/
|
||||
acpigen_write_if_and(Local5, TX_BIT);
|
||||
acpigen_write_store_args(ONE_OP, LOCAL0_OP);
|
||||
acpigen_pop_len();
|
||||
acpigen_write_else();
|
||||
acpigen_write_store_args(ZERO_OP, LOCAL0_OP);
|
||||
acpigen_pop_len();
|
||||
|
@ -5,18 +5,21 @@ This section contains documentation about coreboot on x86 architecture.
|
||||
* [x86 PAE support](pae.md)
|
||||
|
||||
## State of x86_64 support
|
||||
At the moment there's no single board that supports x86_64 or to be exact
|
||||
`ARCH_RAMSTAGE_X86_64` and `ARCH_ROMSTAGE_X86_64`.
|
||||
At the moment there's only experimental x86_64 support.
|
||||
The `emulation/qemu-i440fx` and `emulation/qemu-q35` boards do support
|
||||
*ARCH_RAMSTAGE_X86_64* , *ARCH_POSTCAR_X86_64* and *ARCH_ROMSTAGE_X86_64*.
|
||||
|
||||
In order to add support for x86_64 the following assumptions are made:
|
||||
In order to add support for x86_64 the following assumptions were made:
|
||||
* The CPU supports long mode
|
||||
* All memory returned by malloc must be below 4GiB in physical memory
|
||||
* All code that is to be run must be below 4GiB in physical memory
|
||||
* The high dword of pointers is always zero
|
||||
* The reference implementation is qemu
|
||||
* The CPU supports 1GiB hugepages
|
||||
* x86 payloads are loaded below 4GiB in physical memory and are jumped
|
||||
to in *protected mode*
|
||||
|
||||
## Assuptions for all stages using the reference implementation
|
||||
## Assumptions for all stages using the reference implementation
|
||||
* 0-4GiB are identity mapped using 2MiB-pages as WB
|
||||
* Memory above 4GiB isn't accessible
|
||||
* page tables reside in memory mapped ROM
|
||||
@ -37,18 +40,16 @@ The page tables contains the following structure:
|
||||
|
||||
At the moment *$n* is 4, which results in identity mapping the lower 4 GiB.
|
||||
|
||||
## Steps to add basic support for x86_64
|
||||
* Add x86_64 toolchain support - *DONE*
|
||||
* Fix compilation errors - *DONE*
|
||||
* Fix linker errors - *TODO*
|
||||
* Add x86_64 rmodule support - *DONE*
|
||||
* Add x86_64 exception handlers - *DONE*
|
||||
* Setup page tables for long mode - *DONE*
|
||||
* Add assembly code for long mode - *DONE*
|
||||
* Add assembly code for SMM - *DONE*
|
||||
* Add assembly code for postcar stage - *TODO*
|
||||
* Add assembly code to return to protected mode - *TODO*
|
||||
* Implement reference code for mainboard `emulation/qemu-q35` - *TODO*
|
||||
## Basic x86_64 support
|
||||
Basic support for x86_64 has been implemented for QEMU mainboard target.
|
||||
|
||||
## Reference implementation
|
||||
The reference implementation is
|
||||
* [QEMU i440fx](../../mainboard/emulation/qemu-i440fx.md)
|
||||
* [QEMU Q35](../../mainboard/emulation/qemu-q35.md)
|
||||
|
||||
## TODO
|
||||
* Identity map memory above 4GiB in ramstage
|
||||
|
||||
## Future work
|
||||
|
||||
@ -64,3 +65,33 @@ At the moment *$n* is 4, which results in identity mapping the lower 4 GiB.
|
||||
* Test how well CAR works with x86_64 and paging
|
||||
* Improve mode switches
|
||||
* Test libgfxinit / VGA Option ROMs / FSP
|
||||
|
||||
## Known bugs on real hardware
|
||||
|
||||
According to Intel x86_64 mode hasn't been validated in CAR environments.
|
||||
Until now it could be verified on various Intel platforms and no issues have
|
||||
been found.
|
||||
|
||||
## Known bugs on KVM enabled qemu
|
||||
|
||||
The `x86_64` reference code runs fine in qemu soft-cpu, but has serious issues
|
||||
when using KVM mode on some machines. The workaround is to *not* place
|
||||
page-tables in ROM, as done in
|
||||
[CB:49228](https://review.coreboot.org/c/coreboot/+/49228).
|
||||
|
||||
Here's a list of known issues:
|
||||
|
||||
* After entering long mode, the FPU doesn't work anymore, including accessing
|
||||
MMX registers. It works fine before entering long mode. It works fine when
|
||||
switching back to protected mode. Other registers, like SSE registers, are
|
||||
working fine.
|
||||
* Reading from virtual memory, when the page tables are stored in ROM, causes
|
||||
the MMU to abort the "page table walking" mechanism when the lower address
|
||||
bits of the virtual address to be translated have a specific pattern.
|
||||
Instead of loading the correct physical page, the one containing the
|
||||
page tables in ROM will be loaded and used, which breaks code and data as
|
||||
the page table doesn't contain the expected data. This in turn leads to
|
||||
undefined behaviour whenever the 'wrong' address is being read.
|
||||
* Disabling paging in compability mode crashes the CPU.
|
||||
* Returning from long mode to compability mode crashes the CPU.
|
||||
* Entering long mode crashes on AMD host platforms.
|
||||
|
5
Documentation/cbfstool/index.md
Normal file
@ -0,0 +1,5 @@
|
||||
# cbfstool
|
||||
|
||||
Contents:
|
||||
|
||||
* [Handling memory mapped boot media](mmap_windows.md)
|
77
Documentation/cbfstool/mmap_windows.md
Normal file
@ -0,0 +1,77 @@
|
||||
# cbfstool: Handling memory mapped boot media
|
||||
|
||||
`cbfstool` is a utility used for managing coreboot file system (CBFS)
|
||||
components in a ROM image. x86 platforms are special since they have
|
||||
the SPI flash boot media memory mapped into host address space at
|
||||
runtime. This requires `cbfstool` to deal with two separate address
|
||||
spaces for any CBFS components that are eXecute-In-Place (XIP) - one
|
||||
is the SPI flash address space and other is the host address space
|
||||
where the SPI flash gets mapped.
|
||||
|
||||
By default, all x86 platforms map a maximum of 16MiB of SPI flash at
|
||||
the top of 4G in host address space. If the flash is greater than
|
||||
16MiB, then only the top 16MiB of the flash is mapped in the host
|
||||
address space. If the flash is smaller than 16MiB, then the entire SPI
|
||||
flash is mapped at the top of 4G and the rest of the space remains
|
||||
unused.
|
||||
|
||||
In more recent platforms like Tiger Lake (TGL), it is possible to map
|
||||
more than 16MiB of SPI flash. Since the host address space has legacy
|
||||
fixed device addresses mapped below `4G - 16M`, the SPI flash is split
|
||||
into separate windows when being mapped to the host address space.
|
||||
Default decode window of maximum 16MiB size still lives just below the
|
||||
4G boundary. The additional decode window is free to live in any
|
||||
available MMIO space that the SoC chooses.
|
||||
|
||||
Following diagram shows different combinations of SPI flash being
|
||||
mapped into host address space when using multiple windows:
|
||||
|
||||
![MMAP window combinations with different flash sizes][mmap_windows]
|
||||
|
||||
*(a) SPI flash of size 16MiB (b) SPI flash smaller than 16MiB (c) SPI flash
|
||||
of size (16MiB+ext window size) (d) SPI flash smaller than (16MiB+ext
|
||||
window size)*
|
||||
|
||||
The location of standard decode window is fixed in host address space
|
||||
`(4G - 16M) to 4G`. However, the platform is free to choose where the
|
||||
extended window lives in the host address space. Since `cbfstool`
|
||||
needs to know the exact location of the extended window, it allows the
|
||||
platform to pass in two parameters `ext-win-base` and `ext-win-size`
|
||||
that provide the base and the size of the extended window in host
|
||||
address space.
|
||||
|
||||
`cbfstool` creates two memory map windows using the knowledge about the
|
||||
standard decode window and the information passed in by the platform
|
||||
about the extended decode window. These windows are useful in
|
||||
converting addresses from one space to another (flash space and host
|
||||
space) when dealing with XIP components.
|
||||
|
||||
## Assumptions
|
||||
|
||||
1. Top 16MiB is still decoded in the fixed decode window just below 4G
|
||||
boundary.
|
||||
1. Rest of the SPI flash below the top 16MiB is mapped at the top of
|
||||
the extended window. Even though the platform might support a
|
||||
larger extended window, the SPI flash part used by the mainboard
|
||||
might not be large enough to be mapped in the entire window. In
|
||||
such cases, the mapping is assumed to be in the top part of the
|
||||
extended window with the bottom part remaining unused.
|
||||
|
||||
## Example
|
||||
|
||||
If the platform supports extended window and the SPI flash size is
|
||||
greater, then `cbfstool` creates a mapping for the extended window as
|
||||
well.
|
||||
|
||||
```
|
||||
ext_win_base = 0xF8000000
|
||||
ext_win_size = 32 * MiB
|
||||
ext_win_limit = ext_win_base + ext_win_size - 1 = 0xF9FFFFFF
|
||||
```
|
||||
|
||||
If SPI flash is 32MiB, then top 16MiB is mapped from `0xFF000000 -
|
||||
0xFFFFFFFF` whereas the bottom 16MiB is mapped from `0xF9000000 -
|
||||
0xF9FFFFFF`. The extended window `0xF8000000 - 0xF8FFFFFF` remains
|
||||
unused.
|
||||
|
||||
[mmap_windows]: mmap_windows.svg
|
1
Documentation/cbfstool/mmap_windows.svg
Normal file
After Width: | Height: | Size: 230 KiB |
@ -16,3 +16,20 @@ read its
|
||||
We also have a
|
||||
[real time chat](https://webchat.freenode.net?channels=%23coreboot)
|
||||
on the Freenode IRC network's #coreboot channel.
|
||||
|
||||
## Fortnightly coreboot leadership meeting
|
||||
|
||||
There's a leadership meeting held every 14 days (currently every other
|
||||
Wednesday at 10am Pacific Time, usually 18:00 UTC with some deviation
|
||||
possible due to daylight saving time related shifts). The meeting
|
||||
is open to everyone and provides a forum to discuss general coreboot
|
||||
topics, including community and technical matters that benefit from
|
||||
an official decision.
|
||||
|
||||
We tried a whole lot of different tools, but so far the meetings worked
|
||||
best with [Google Meet](https://meet.google.com/syn-toap-agu),
|
||||
using [Google Docs](https://docs.google.com/document/d/1NRXqXcLBp5pFkHiJbrLdv3Spqh1Hu086HYkKrgKjeDQ/edit)
|
||||
for the agenda and meeting minutes. Neither the video conference nor
|
||||
the document require a Google account to participate, although editing
|
||||
access to the document is limited to adding comments - any desired
|
||||
agenda item added that way will be approved in time before the meeting.
|
||||
|
136
Documentation/community/language_style.md
Normal file
@ -0,0 +1,136 @@
|
||||
# Language style
|
||||
|
||||
Following our [Code of Conduct](code_of_conduct.md) the project aims to
|
||||
be a space where people are considerate in natural language communication:
|
||||
|
||||
There are terms in computing that were probably considered benign when
|
||||
introduced but are uncomfortable to some. The project aims to de-emphasize
|
||||
such terms in favor of alternatives that are at least as expressive -
|
||||
but often manage to be even more descriptive.
|
||||
|
||||
## Political Correctness
|
||||
|
||||
A common thread in discussions was that the project merely follows some
|
||||
fad, or that this is a "political correctness" measure, designed to please
|
||||
one particular "team". While the project doesn't exist in a vacuum and
|
||||
so there are outside influences on project members, the proposal wasn't
|
||||
made with the purpose of demonstrating allegiance to any given cause -
|
||||
except one:
|
||||
|
||||
There are people who feel uncomfortable with some terms being used,
|
||||
_especially_ when that use takes them out of their grave context
|
||||
(e.g. slave when discussing slavery) and applies them to a rather benign
|
||||
topic (e.g. coordination of multiple technical systems), taking away
|
||||
the gravity of the term.
|
||||
|
||||
That gets especially jarring when people aren't exposed to such terms
|
||||
in abstract sociological discussions but when they stand for real issues
|
||||
they encountered.
|
||||
|
||||
When having to choose between using a well-established term that
|
||||
affects people negatively who could otherwise contribute more happily
|
||||
and undisturbed or an alternative just-as-good term that doesn't, the
|
||||
decision should be simple.
|
||||
|
||||
## Token gesture
|
||||
|
||||
The other major point of contention is that such decisions are a token
|
||||
gesture that doesn't change anything. It's true: No slave is freed
|
||||
because coreboot rejects the use of the word.
|
||||
|
||||
coreboot is ambitious enough as-is, in that the project offers
|
||||
an alternative approach to firmware, sometimes against the vested
|
||||
interests (and deep pockets) of the leaders of a multi-billion dollar
|
||||
industry. Changing the preferred vocabulary isn't another attempt at
|
||||
changing the world, it's one thing we do to try to make coreboot (and
|
||||
coreboot only) a comfortable environment for everybody.
|
||||
|
||||
## For everybody
|
||||
|
||||
For everybody, but with a qualifier: We have certain community etiquette,
|
||||
and we define some behavior we don't accept in our community, both
|
||||
detailed in the Code of Conduct.
|
||||
|
||||
Other than that, we're trying to accommodate people: The CoC lays out
|
||||
that language should be interpreted as friendly by default, and to be
|
||||
graceful in light of accidents. This also applies to the use of terms
|
||||
that the project tries to avoid: The consequence of the use of such
|
||||
terms (unless obviously employed to provoke a reaction - in that case,
|
||||
please contact the arbitration team as outlined in the Code of Conduct)
|
||||
should be a friendly reminder. The project is slow to sanction and that
|
||||
won't change just because the wrong kind of words is used.
|
||||
|
||||
## Interfacing with the world
|
||||
|
||||
The project doesn't exist in a vacuum, and that also applies to the choice
|
||||
of words made by other initiatives in low-level technology. When JEDEC
|
||||
calls the participants of a SPI transaction "master" and "slave", there's
|
||||
little we can do about that. We _could_ decide to use different terms,
|
||||
but that wouldn't make things easier but harder, because such a deliberate
|
||||
departure means that the original terms (and their original use) gain
|
||||
lots of visibility every time (so there's no practical advantage) while
|
||||
adding confusion, and therefore even more attention, to that situation.
|
||||
|
||||
Sometimes there are abbreviations that can be used as substitutes,
|
||||
and in that case the recommendation is to do that.
|
||||
|
||||
As terms that we found to be best avoided are replaced in such
|
||||
initiatives, we can follow up. Members of the community with leverage
|
||||
in such organizations are encouraged to raise the concern there.
|
||||
|
||||
## Dealing with uses
|
||||
|
||||
There are existing uses in our documentation and code. When we decide to
|
||||
retire a term that doesn't mean that everybody is supposed to stop doing
|
||||
whatever they're doing and spend their time on purging terms. Instead,
|
||||
ongoing development should look for alternatives (and so this could come
|
||||
up in review).
|
||||
|
||||
People can go through existing code and docs and sort out older instances,
|
||||
and while that's encouraged it's no "stop the world" event. Changes
|
||||
in flight in review may still be merged with such terms intact, but if
|
||||
there's more work required for other reasons, we'd encourage moving away
|
||||
from such terms.
|
||||
|
||||
This document has a section on retired terms, presenting the rationale
|
||||
as well as alternative terms that could be used instead. The main goal is
|
||||
to be expressive: There's no point in just picking any alternative term,
|
||||
choose something that explains the purpose well.
|
||||
|
||||
As mentioned, missteps will happen. Point them out, but assume no ill
|
||||
intent for as long as you can manage.
|
||||
|
||||
## Discussing words to remove from active use
|
||||
|
||||
There ought to be some process when terminology is brought up as a
|
||||
negative to avoid. Do not to tell people that "they're feeling wrong"
|
||||
when they have a negative reaction to certain terms, but also try to
|
||||
avoid being offended for the sake of others.
|
||||
|
||||
When bringing up a term, on the project's mailing list or, if you don't
|
||||
feel safe doing that, by contacting the arbitration team, explain what's
|
||||
wrong with the term and offer alternatives for uses within coreboot.
|
||||
|
||||
With a term under discussion, see if there's particular value for us to
|
||||
continue using the term (maybe in limited situations, like continuing
|
||||
to use "slave" in SPI related code).
|
||||
|
||||
Once the arbitration team considers the topic discussed completely and
|
||||
found a consensus, it will present a decision in a leadership meeting. It
|
||||
should explain why a term should or should not be used and in the latter
|
||||
case offer alternatives. These decisions shall then be added to this
|
||||
document.
|
||||
|
||||
## Retired terminology
|
||||
|
||||
### slave
|
||||
|
||||
Replacing this term for something else had the highest approval rating
|
||||
in early discussions, so it seems pretty universally considered a bad
|
||||
choice and therefore should be avoided where possible.
|
||||
|
||||
An exception is made where it's a term used in current standards and data
|
||||
sheets: Trying to "hide" the term in such cases only puts a spotlight
|
||||
on it every time code and data sheet are compared.
|
||||
|
||||
Alternatives: subordinate, secondary, follower
|
@ -48,7 +48,7 @@ try:
|
||||
except ImportError:
|
||||
print("Error: Please install sphinxcontrib.ditaa for ASCII art conversion\n")
|
||||
else:
|
||||
extensions += 'sphinxcontrib.ditaa'
|
||||
extensions += ['sphinxcontrib.ditaa']
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
@ -5,12 +5,26 @@ coreboot project. It is in many ways exactly the same as the Linux
|
||||
kernel coding style. In fact, most of this document has been copied from
|
||||
the [Linux kernel coding style](http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/Documentation/CodingStyle?id=HEAD)
|
||||
|
||||
Please at least consider the points made here.
|
||||
The guidelines in this file should be seen as a strong suggestion, and
|
||||
should overrule personal preference. But they may be ignored in
|
||||
individual instances when there are good practical reasons to do so, and
|
||||
reviewers are in agreement.
|
||||
|
||||
First off, I'd suggest printing out a copy of the GNU coding standards,
|
||||
and NOT read it. Burn them, it's a great symbolic gesture.
|
||||
Any style questions that are not mentioned in here should be decided
|
||||
between the author and reviewers on a case-by-case basis. When modifying
|
||||
existing files, authors should try to match the prevalent style in that
|
||||
file -- otherwise, they should try to match similar existing files in
|
||||
coreboot.
|
||||
|
||||
Anyway, here goes:
|
||||
Bulk style changes to existing code ("cleanup patches") should avoid
|
||||
changing existing style choices unless they actually violate this style
|
||||
guide, or there is broad consensus that the new version is an
|
||||
improvement. By default the style choices of the original author should
|
||||
be honored. (Note that `checkpatch.pl` is not part of this style guide,
|
||||
and neither is `clang-format`. These tools can be useful to find
|
||||
potential issues or simplify formatting in new submissions, but they
|
||||
were not designed to directly match this guide and may have false
|
||||
positives. They should not be bulk-applied to change existing code.)
|
||||
|
||||
## Indentation
|
||||
|
||||
@ -530,7 +544,7 @@ than desirable (in fact, they are worse than random typing - an infinite
|
||||
number of monkeys typing into GNU emacs would never make a good program).
|
||||
|
||||
So, you can either get rid of GNU emacs, or change it to use saner values.
|
||||
To do the latter, you can stick the following in your .emacs file:
|
||||
To do the latter, you can stick the following in your .emacs file:
|
||||
|
||||
```lisp
|
||||
(defun c-lineup-arglist-tabs-only (ignored)
|
||||
@ -834,22 +848,53 @@ subject to this rule. Generally they indicate failure by returning some
|
||||
out-of-range result. Typical examples would be functions that return
|
||||
pointers; they use NULL or the ERR_PTR mechanism to report failure.
|
||||
|
||||
Don't re-invent the kernel macros
|
||||
----------------------------------
|
||||
Headers and includes
|
||||
---------------
|
||||
|
||||
The header file include/linux/kernel.h contains a number of macros that
|
||||
you should use, rather than explicitly coding some variant of them
|
||||
yourself. For example, if you need to calculate the length of an array,
|
||||
take advantage of the macro
|
||||
Headers should always be included at the top of the file. Includes should
|
||||
always use the `#include <file.h>` notation, except for rare cases where a file
|
||||
in the same directory that is not part of a normal include path gets included
|
||||
(e.g. local headers in mainboard directories), which should use `#include
|
||||
"file.h"`. Local "file.h" includes should always come separately after all
|
||||
<file.h> includes. Headers that can be included from both assembly files and
|
||||
.c files should keep all C code wrapped in `#ifndef __ASSEMBLER__` blocks,
|
||||
including includes to other headers that don't follow that provision. Where a
|
||||
specific include order is required for technical reasons, it should be clearly
|
||||
documented with comments.
|
||||
|
||||
Files should generally include every header they need a definition from
|
||||
directly (and not include any unnecessary extra headers). Excepted from
|
||||
this are certain headers that intentionally chain-include other headers
|
||||
which logically belong to them and are just factored out into a separate
|
||||
location for implementation or organizatory reasons. This could be
|
||||
because part of the definitions is generic and part SoC-specific (e.g.
|
||||
`<gpio.h>` chain-including `<soc/gpio.h>`), architecture-specific (e.g.
|
||||
`<device/mmio.h>` chain-including `<arch/mmio.h>`), separated out into
|
||||
commonlib[/bsd] for sharing/license reasons (e.g. `<cbfs.h>`
|
||||
chain-including `<commonlib/bsd/cbfs_serialized.h>`) or just split out
|
||||
to make organizing subunits of a larger header easier. This can also
|
||||
happen when certain definitions need to be in a specific header for
|
||||
legacy POSIX reasons but we would like to logically group them together
|
||||
(e.g. `uintptr_t` is in `<stdint.h>` and `size_t` in `<stddef.h>`, but
|
||||
it's nicer to be able to just include `<types.h>` and get all the common
|
||||
type and helper function stuff we need everywhere).
|
||||
|
||||
The headers `<kconfig.h>`, `<rules.h>` and `<commonlib/bsd/compiler.h>`
|
||||
are always automatically included in all compilation units by the build
|
||||
system and should not be included manually.
|
||||
|
||||
Don't re-invent common macros
|
||||
-----------------------------
|
||||
|
||||
The header file `src/commonlib/bsd/include/commonlib/bsd/helpers.h`
|
||||
contains a number of macros that you should use, rather than explicitly
|
||||
coding some variant of them yourself. For example, if you need to
|
||||
calculate the length of an array, take advantage of the macro
|
||||
|
||||
```c
|
||||
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
|
||||
```
|
||||
|
||||
There are also min() and max() macros that do strict type checking if
|
||||
you need them. Feel free to peruse that header file to see what else is
|
||||
already defined that you shouldn't reproduce in your code.
|
||||
|
||||
Editor modelines and other cruft
|
||||
--------------------------------
|
||||
|
@ -4,6 +4,9 @@ The drivers can be found in `src/drivers`. They are intended for onboard
|
||||
and plugin devices, significantly reducing integration complexity and
|
||||
they allow to easily reuse existing code accross platforms.
|
||||
|
||||
* [Intel DPTF](dptf.md)
|
||||
* [IPMI KCS](ipmi_kcs.md)
|
||||
* [SMMSTORE](smmstore.md)
|
||||
* [SoundWire](soundwire.md)
|
||||
* [SMMSTOREv2](smmstorev2.md)
|
||||
* [USB4 Retimer](retimer.md)
|
||||
|
40
Documentation/drivers/retimer.md
Normal file
@ -0,0 +1,40 @@
|
||||
# USB4 Retimers
|
||||
|
||||
# Introduction
|
||||
As USB speeds continue to increase (up to 5G, 10G, and even 20G or higher in
|
||||
newer revisions of the spec), it becomes more difficult to maintain signal
|
||||
integrity for longer traces. Devices such as retimers and redrivers can be used
|
||||
to help signals maintain their integrity over long distances.
|
||||
|
||||
A redriver is a device that boosts the high-frequency content of a signal in
|
||||
order to compensate for the attenuation typically caused by travelling through
|
||||
various circuit components (PCB, connectors, CPU, etc.). Redrivers are not
|
||||
protocol-aware, which makes them relatively simple. However, their effectiveness
|
||||
is limited, and may not work at all in some scenarios.
|
||||
|
||||
A retimer is a device that retransmits a fresh copy of the signal it receives,
|
||||
by doing CDR and retransmitting the data (i.e., it is protocol-aware). Since
|
||||
this is a digital component, it may have firmware.
|
||||
|
||||
|
||||
# Driver Usage
|
||||
|
||||
Some operating systems may have the ability to update firmware on USB4 retimers,
|
||||
and ultimately will need some way to power the device on and off so that its new
|
||||
firmware can be loaded. This is achieved by providing a GPIO signal that can be
|
||||
used for this purpose; its active state must be the one in which power is
|
||||
applied to the retimer. This driver will generate the required ACPI AML code
|
||||
which will toggle the GPIO in response to the kernel's request (through the
|
||||
`_DSM` ACPI method). Simply put something like the following in your devicetree:
|
||||
|
||||
```
|
||||
device pci 0.0 on
|
||||
chip drivers/intel/usb4/retimer
|
||||
register "power_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_A0)"
|
||||
device generic 0 on end
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
replacing the GPIO with the appropriate pin and polarity.
|
||||
|
221
Documentation/drivers/smmstorev2.md
Normal file
@ -0,0 +1,221 @@
|
||||
# SMM based flash storage driver Version 2
|
||||
|
||||
This documents the API exposed by the x86 system management based
|
||||
storage driver.
|
||||
|
||||
## SMMSTOREv2
|
||||
|
||||
SMMSTOREv2 is a [SMM] mediated driver to read from, write to and erase
|
||||
a predefined region in flash. It can be enabled by setting
|
||||
`CONFIG_SMMSTORE=y` and `CONFIG_SMMSTORE_V2=y` in menuconfig.
|
||||
|
||||
This can be used by the OS or the payload to implement persistent
|
||||
storage to hold for instance configuration data, without needing to
|
||||
implement a (platform specific) storage driver in the payload itself.
|
||||
|
||||
### Storage size and alignment
|
||||
|
||||
SMMSTORE version 2 requires a minimum alignment of 64 KiB, which should
|
||||
be supported by all flash chips. Not having to perform read-modify-write
|
||||
operations is desired, as it reduces complexity and potential for bugs.
|
||||
|
||||
This can be used by a FTW (FaultTolerantWrite) implementation that uses
|
||||
at least two regions in an A/B update scheme. The FTW implementation in
|
||||
EDK2 uses three different regions in the store:
|
||||
|
||||
- The variable store
|
||||
- The FTW spare block
|
||||
- The FTW working block
|
||||
|
||||
All regions must be block-aligned, and the FTW spare size must be larger
|
||||
than that of the variable store. FTW working block can be much smaller.
|
||||
With 64 KiB as block size, the minimum size of the FTW-enabled store is:
|
||||
|
||||
- The variable store: 1 block = 64 KiB
|
||||
- The FTW spare block: 2 blocks = 2 * 64 KiB
|
||||
- The FTW working block: 1 block = 64 KiB
|
||||
|
||||
Therefore, the minimum size for EDK2 FTW is 4 blocks, or 256 KiB.
|
||||
|
||||
## API
|
||||
|
||||
The API provides read and write access to an unformatted block storage.
|
||||
|
||||
### Storage region
|
||||
|
||||
By default SMMSTOREv2 will operate on a separate FMAP region called
|
||||
`SMMSTORE`. The default generated FMAP will include such a region. On
|
||||
systems with a locked FMAP, e.g. in an existing vboot setup with a
|
||||
locked RO region, the option exists to add a cbfsfile called `smm_store`
|
||||
in the `RW_LEGACY` (if CHROMEOS) or in the `COREBOOT` FMAP regions. It
|
||||
is recommended for new builds using a handcrafted FMD that intend to
|
||||
make use of SMMSTORE to include a sufficiently large `SMMSTORE` FMAP
|
||||
region. It is mandatory to align the `SMMSTORE` region to 64KiB for
|
||||
compatibility with the largest flash erase operation.
|
||||
|
||||
When a default generated FMAP is used, the size of the FMAP region is
|
||||
equal to `CONFIG_SMMSTORE_SIZE`. UEFI payloads expect at least 64 KiB.
|
||||
To support a fault tolerant write mechanism, at least a multiple of
|
||||
this size is recommended.
|
||||
|
||||
### Communication buffer
|
||||
|
||||
To prevent malicious ring0 code to access arbitrary memory locations,
|
||||
SMMSTOREv2 uses a communication buffer in CBMEM/HOB for all transfers.
|
||||
This buffer has to be at least 64 KiB in size and must be installed
|
||||
before calling any of the SMMSTORE read or write operations. Usually,
|
||||
coreboot will install this buffer to transfer data between ring0 and
|
||||
the [SMM] handler.
|
||||
|
||||
In order to get the communication buffer address, the payload or OS
|
||||
has to read the coreboot table with tag `0x0039`, containing:
|
||||
|
||||
```C
|
||||
struct lb_smmstorev2 {
|
||||
uint32_t tag;
|
||||
uint32_t size;
|
||||
uint32_t num_blocks; /* Number of writeable blocks in SMM */
|
||||
uint32_t block_size; /* Size of a block in byte. Default: 64 KiB */
|
||||
uint32_t mmap_addr; /* MMIO address of the store for read only access */
|
||||
uint32_t com_buffer; /* Physical address of the communication buffer */
|
||||
uint32_t com_buffer_size; /* Size of the communication buffer in byte */
|
||||
uint8_t apm_cmd; /* The command byte to write to the APM I/O port */
|
||||
uint8_t unused[3]; /* Set to zero */
|
||||
};
|
||||
```
|
||||
|
||||
The absence of this coreboot table entry indicates that there's no
|
||||
SMMSTOREv2 support.
|
||||
|
||||
### Blocks
|
||||
|
||||
The SMMSTOREv2 splits the SMMSTORE FMAP partition into smaller chunks
|
||||
called *blocks*. Every block is at least the size of 64KiB to support
|
||||
arbitrary NOR flash erase ops. A payload or OS must make no further
|
||||
assumptions about the block or communication buffer size.
|
||||
|
||||
### Generating the SMI
|
||||
|
||||
SMMSTOREv2 is called via an SMI, which is generated via a write to the
|
||||
IO port defined in the smi_cmd entry of the FADT ACPI table. `%al`
|
||||
contains `APM_CNT_SMMSTORE=0xed` and is written to the smi_cmd IO
|
||||
port. `%ah` contains the SMMSTOREv2 command. `%ebx` contains the
|
||||
parameter buffer to the SMMSTOREv2 command.
|
||||
|
||||
### Return values
|
||||
|
||||
If a command succeeds, SMMSTOREv2 will return with
|
||||
`SMMSTORE_RET_SUCCESS=0` in `%eax`. On failure SMMSTORE will return
|
||||
`SMMSTORE_RET_FAILURE=1`. For unsupported SMMSTORE commands
|
||||
`SMMSTORE_REG_UNSUPPORTED=2` is returned.
|
||||
|
||||
**NOTE 1**: The caller **must** check the return value and should make
|
||||
no assumption on the returned data if `%eax` does not contain
|
||||
`SMMSTORE_RET_SUCCESS`.
|
||||
|
||||
**NOTE 2**: If the SMI returns without changing `%ax`, it can be assumed
|
||||
that the SMMSTOREv2 feature is not installed.
|
||||
|
||||
### Calling arguments
|
||||
|
||||
SMMSTOREv2 supports 3 subcommands that are passed via `%ah`, the
|
||||
additional calling arguments are passed via `%ebx`.
|
||||
|
||||
**NOTE**: The size of the struct entries are in the native word size of
|
||||
smihandler. This means 32 bits in almost all cases.
|
||||
|
||||
#### - SMMSTORE_CMD_INIT = 4
|
||||
|
||||
This installs the communication buffer to use and thus enables the
|
||||
SMMSTORE handler. This command can only be executed once and is done
|
||||
by the firmware. Calling this function at runtime has no effect.
|
||||
|
||||
The additional parameter buffer `%ebx` contains a pointer to the
|
||||
following struct:
|
||||
|
||||
```C
|
||||
struct smmstore_params_init {
|
||||
uint32_t com_buffer;
|
||||
uint32_t com_buffer_size;
|
||||
} __packed;
|
||||
```
|
||||
|
||||
INPUT:
|
||||
- `com_buffer`: Physical address of the communication buffer (CBMEM)
|
||||
- `com_buffer_size`: Size in bytes of the communication buffer
|
||||
|
||||
#### - SMMSTORE_CMD_RAW_READ = 5
|
||||
|
||||
SMMSTOREv2 allows reading arbitrary data. It is up to the caller to
|
||||
initialize the store with meaningful data before using it.
|
||||
|
||||
The additional parameter buffer `%ebx` contains a pointer to the
|
||||
following struct:
|
||||
|
||||
```C
|
||||
struct smmstore_params_raw_read {
|
||||
uint32_t bufsize;
|
||||
uint32_t bufoffset;
|
||||
uint32_t block_id;
|
||||
} __packed;
|
||||
```
|
||||
|
||||
INPUT:
|
||||
- `bufsize`: Size of data to read within the communication buffer
|
||||
- `bufoffset`: Offset within the communication buffer
|
||||
- `block_id`: Block to read from
|
||||
|
||||
#### - SMMSTORE_CMD_RAW_WRITE = 6
|
||||
|
||||
SMMSTOREv2 allows writing arbitrary data. It is up to the caller to
|
||||
erase a block before writing it.
|
||||
|
||||
The additional parameter buffer `%ebx` contains a pointer to
|
||||
the following struct:
|
||||
|
||||
```C
|
||||
struct smmstore_params_raw_write {
|
||||
uint32_t bufsize;
|
||||
uint32_t bufoffset;
|
||||
uint32_t block_id;
|
||||
} __packed;
|
||||
```
|
||||
|
||||
INPUT:
|
||||
- `bufsize`: Size of data to write within the communication buffer
|
||||
- `bufoffset`: Offset within the communication buffer
|
||||
- `block_id`: Block to write to
|
||||
|
||||
#### - SMMSTORE_CMD_RAW_CLEAR = 7
|
||||
|
||||
SMMSTOREv2 allows clearing blocks. A cleared block will read as `0xff`.
|
||||
By providing multiple blocks the caller can implement a fault tolerant
|
||||
write mechanism. It is up to the caller to clear blocks before writing
|
||||
to them.
|
||||
|
||||
|
||||
```C
|
||||
struct smmstore_params_raw_clear {
|
||||
uint32_t block_id;
|
||||
} __packed;
|
||||
```
|
||||
|
||||
INPUT:
|
||||
- `block_id`: Block to erase
|
||||
|
||||
#### Security
|
||||
|
||||
Pointers provided by the payload or OS are checked to not overlap with
|
||||
SMM. This protects the SMM handler from being compromised.
|
||||
|
||||
As all information is exchanged using the communication buffer and
|
||||
coreboot tables, there's no risk that a malicious application capable
|
||||
of issuing SMIs could extract arbitrary data or modify the currently
|
||||
running kernel.
|
||||
|
||||
## External links
|
||||
|
||||
* [A Tour Beyond BIOS Implementing UEFI Authenticated Variables in SMM with EDKI](https://software.intel.com/sites/default/files/managed/cf/ea/a_tour_beyond_bios_implementing_uefi_authenticated_variables_in_smm_with_edkii.pdf)
|
||||
Note that this differs significantly from coreboot's implementation.
|
||||
|
||||
[SMM]: ../security/smm.md
|
@ -43,15 +43,42 @@ employer is aware and you are authorized to submit the code. For
|
||||
clarification, see the Developer's Certificate of Origin in the coreboot
|
||||
[Signed-off-by policy](https://www.coreboot.org/Development_Guidelines#Sign-off_Procedure).
|
||||
|
||||
* Let non-trivial patches sit in a review state for at least 24 hours
|
||||
before submission. Remember that there are coreboot developers in timezones
|
||||
all over the world, and everyone should have a chance to contribute.
|
||||
Trivial patches would be things like whitespace changes or spelling fixes,
|
||||
in general those that don’t impact the final binary output. The
|
||||
24-hour period would start at submission, and would be restarted at any
|
||||
update which significantly changes any part of the patch. Patches can be
|
||||
'Fast-tracked' and submitted in under 24 hours with the agreement of at
|
||||
least 3 +2 votes.
|
||||
* In general, patches should remain open for review for at least 24 hours
|
||||
since the last significant modification to the change. The purpose is to
|
||||
let coreboot developers around the world have a chance to review. Complex
|
||||
reworks, even if they don't change the purpose of the patch but the way
|
||||
it's implemented, should restart the wait period.
|
||||
|
||||
* A change can go in without the wait period if its purpose is to fix
|
||||
a recently-introduced issue (build, boot or OS-level compatibility, not
|
||||
necessarily identified by coreboot.org facilities). Its commit message
|
||||
has to explain what change introduced the problem and the nature of
|
||||
the problem so that the emergency need becomes apparent. The change
|
||||
itself should be as limited in scope and impact as possible to make it
|
||||
simple to assess the impact. Such a change can be merged early with 3
|
||||
Code-Review+2. For emergency fixes that affect a single project (SoC,
|
||||
mainboard, ...) it's _strongly_ recommended to get a review by somebody
|
||||
not involved with that project to ensure that the documentation of the
|
||||
issue is clear enough.
|
||||
|
||||
* Trivial changes that deal with minor issues like inconsistencies in
|
||||
whitespace or spelling fixes that don't impact the final binary output
|
||||
also don't need to wait. Such changes should point out in their commit
|
||||
messages how the the author verified that the binary output is identical
|
||||
(e.g. a TIMELESS build for a given configuration). When submitting
|
||||
such changes early, the submitter must be different from the author
|
||||
and must document the intent in the Gerrit discussion, e.g. "landed the
|
||||
change early because it's trivial". Note that trivial fixes shouldn't
|
||||
necessarily be expedited: Just like they're not critical enough for
|
||||
things to go wrong because of them, they're not critical enough to
|
||||
require quick handling. This exception merely serves to acknowledge that
|
||||
a round-the-world review just isn't necessary for some types of changes.
|
||||
|
||||
* As explained in our Code of Conduct, we try to assume the best of each
|
||||
other in this community. It's okay to discuss mistakes (e.g. isolated
|
||||
instances of non-trivial and non-critical changes submitted early) but
|
||||
try to keep such inquiries blameless. If a change leads to problems with
|
||||
our code, the focus should be on fixing the issue, not on assigning blame.
|
||||
|
||||
* Do not +2 patches that you authored or own, even for something as trivial
|
||||
as whitespace fixes. When working on your own patches, it’s easy to
|
||||
@ -293,6 +320,35 @@ is criticising your code, but the whole idea is to get better code into our
|
||||
codebase. Again, this also applies in the other direction: review code,
|
||||
criticize code, but don’t make it personal.
|
||||
|
||||
Gerrit user roles
|
||||
-----------------
|
||||
There are a few relevant roles a user can have on Gerrit:
|
||||
|
||||
- The anonymous user can check out source code.
|
||||
- A registered user can also comment and give "+1" and "-1" code reviews.
|
||||
- A reviewer can also give "+2" code reviews.
|
||||
- A core developer can also give "-2" (that is, blocking) code reviews
|
||||
and submit changes.
|
||||
|
||||
Anybody can register an account on our instance, using either an
|
||||
OpenID provider or OAuth through GitHub or Google.
|
||||
|
||||
The reviewer group is still quite open: Any core developer can add
|
||||
registered users to that group and should do so once some activity
|
||||
(commits, code reviews, and so on) has demonstrated rough knowledge
|
||||
of how we handle things.
|
||||
|
||||
A core developer should be sufficiently well established in the
|
||||
community so that they feel comfortable when submitting good patches,
|
||||
when asking for improvements to less good patches and reasonably
|
||||
uncomfortable when -2'ing patches. They're typically the go-to
|
||||
person for _some_ part of the coreboot tree and ideally listed as its
|
||||
maintainer in our MAINTAINERS registry. To become part of this group,
|
||||
a candidate developer who already demonstrated proficiency with the
|
||||
code base as a reviewer should be nominated, by themselves or others,
|
||||
at the regular [coreboot leadership meetings](../community/forums.md)
|
||||
where a decision is made.
|
||||
|
||||
|
||||
Requests for clarification and suggestions for updates to these guidelines
|
||||
should be sent to the coreboot mailing list at <coreboot@coreboot.org>.
|
||||
|
@ -88,11 +88,6 @@ configurations together into a set of macros, e.g.,
|
||||
```C
|
||||
/* Native function configuration */
|
||||
#define PAD_CFG_NF(pad, pull, rst, func)
|
||||
/*
|
||||
* Set native function with RX Level/Edge configuration and disable
|
||||
* input/output buffer if necessary
|
||||
*/
|
||||
#define PAD_CFG_NF_BUF_TRIG(pad, pull, rst, func, bufdis, trig)
|
||||
/* General purpose output, no pullup/down. */
|
||||
#define PAD_CFG_GPO(pad, val, rst)
|
||||
/* General purpose output, with termination specified */
|
||||
@ -134,3 +129,13 @@ If no pullup or pulldown is declared with these, they may end up "floating",
|
||||
i.e., not at logical high or logical low. This can cause problems such as
|
||||
unwanted power consumption or not reading the pin correctly, if it was intended
|
||||
to be strapped.
|
||||
|
||||
## Pad-related known issues and workarounds
|
||||
|
||||
### LPC_CLKRUNB blocks S0ix states when board uses eSPI
|
||||
|
||||
When using eSPI, the pad implementing `LPC_CLKRUNB` must be set to GPIO mode.
|
||||
Other pin settings i.e. Rx path enable/disable, Tx path enable/disable, pull up
|
||||
enable/disable etc are ignored. Leaving this pin in native mode will keep the
|
||||
LPC Controller awake and prevent S0ix entry. This issues is know at least on
|
||||
Apollolake and Geminilake.
|
||||
|
@ -52,7 +52,7 @@ command line.
|
||||
not have an answer yet, it stops and queries the user for the desired value.
|
||||
- olddefconfig - Generates a config, using the default value for any symbols not
|
||||
listed in the .config file.
|
||||
- savedefconfig - Creates a ‘mini-config’ file, stripping out all of the symbols
|
||||
- savedefconfig - Creates a ‘defconfig’ file, stripping out all of the symbols
|
||||
that were left as default values. This is very useful for debugging, and is
|
||||
how config files should be saved.
|
||||
- silentoldconfig - This evaluates the .config file the same way that the
|
||||
@ -398,6 +398,8 @@ default <expr> \[if <expr>\]
|
||||
- If there is no 'default' entry for a symbol, it gets set to 'n', 0, 0x0, or
|
||||
“” depending on the type, however the 'bool' type is the only type that
|
||||
should be left without a default value.
|
||||
- If possible, the declaration should happen before all default entries to make
|
||||
it visible in Kconfig tools like menuconfig.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -605,7 +607,7 @@ int <expr> \[if <expr>\]
|
||||
|
||||
|
||||
##### Example:
|
||||
config PRE_GRAPHICS_DELAY
|
||||
config PRE_GRAPHICS_DELAY_MS
|
||||
int "Graphics initialization delay in ms"
|
||||
default 0
|
||||
help
|
||||
|
@ -19,7 +19,7 @@ way to categorize anything required by the SoC but not provided by coreboot.
|
||||
| IFD Region | IFD Region name | FMAP Name | Notes |
|
||||
| index | | | |
|
||||
+============+==================+===========+===========================================+
|
||||
| 0 | Flash Descriptor | SI_DESC | Always the top 4KB of flash |
|
||||
| 0 | Flash Descriptor | SI_DESC | Always the top 4 KiB of flash |
|
||||
+------------+------------------+-----------+-------------------------------------------+
|
||||
| 1 | BIOS | SI_BIOS | This is the region that contains coreboot |
|
||||
+------------+------------------+-----------+-------------------------------------------+
|
||||
@ -40,9 +40,9 @@ way to categorize anything required by the SoC but not provided by coreboot.
|
||||
The ifdtool can be used to manipulate a firmware image with a IFD. This tool
|
||||
will not take into account the FMAP while modifying the image which can lead to
|
||||
unexpected and hard to debug issues with the firmware image. For example if the
|
||||
ME region is defined at 6 MB in the IFD but the FMAP only allocates 4 MB for the
|
||||
ME, then when the ME is added by the ifdtool 6 MB will be written which could
|
||||
overwrite 2 MB of the BIOS.
|
||||
ME region is defined at 6 MiB in the IFD but the FMAP only allocates 4 MiB for
|
||||
the ME, then when the ME is added by the ifdtool 6 MiB will be written which
|
||||
could overwrite 2 MiB of the BIOS.
|
||||
|
||||
In order to validate that the FMAP and the IFD are compatible the ifdtool
|
||||
provides --validate (-t) option. `ifdtool -t` will read both the IFD and the
|
||||
@ -75,4 +75,4 @@ Region mismatch between pd and SI_PDR
|
||||
FMAP area SI_PDR:
|
||||
offset: 0x007fc000
|
||||
length: 0x00004000
|
||||
```
|
||||
```
|
||||
|
@ -162,10 +162,11 @@ Contents:
|
||||
|
||||
* [Getting Started](getting_started/index.md)
|
||||
* [Tutorial](tutorial/index.md)
|
||||
* [Coding Style](coding_style.md)
|
||||
* [Coding Style](contributing/coding_style.md)
|
||||
* [Project Ideas](contributing/project_ideas.md)
|
||||
* [Documentation Ideas](contributing/documentation_ideas.md)
|
||||
* [Code of Conduct](community/code_of_conduct.md)
|
||||
* [Language style](community/language_style.md)
|
||||
* [Community forums](community/forums.md)
|
||||
* [Project services](community/services.md)
|
||||
* [coreboot at conferences](community/conferences.md)
|
||||
@ -186,5 +187,6 @@ Contents:
|
||||
* [SuperIO](superio/index.md)
|
||||
* [Vendorcode](vendorcode/index.md)
|
||||
* [Utilities](util.md)
|
||||
* [coreboot infrastructure](infrastructure/index.md)
|
||||
* [Release notes for past releases](releases/index.md)
|
||||
* [Flashing firmware tutorial](flash_tutorial/index.md)
|
||||
|
392
Documentation/infrastructure/builders.md
Normal file
@ -0,0 +1,392 @@
|
||||
# Jenkins builder setup and configuration
|
||||
|
||||
## How to set up a new jenkins builder
|
||||
|
||||
### Contact a jenkins admin
|
||||
|
||||
Let a jenkins admin know that you’re interested in setting up a jenkins
|
||||
build system.
|
||||
|
||||
For a permanent build system, this should generally be a dedicated
|
||||
machine that is not generally being used for other purposes. The
|
||||
coreboot builds are very intensive.
|
||||
|
||||
It's also best to be aware that although we don't know of any security
|
||||
issues, the jenkins-node image is run with the privileged flag which
|
||||
gives the container root access to the build machine. See
|
||||
[this article](https://blog.trendmicro.com/trendlabs-security-intelligence/why-running-a-privileged-container-in-docker-is-a-bad-idea/)
|
||||
about why this is discouraged.
|
||||
|
||||
It's recommended that you give an admin root access on your machine so
|
||||
that they can reset it in case of a failure. This is not a requirement,
|
||||
as the system can just be disabled until someone is available to fix any
|
||||
issues.
|
||||
|
||||
Currently active Jenkins admins:
|
||||
* Patrick Georgi:
|
||||
* Email: [patrick@georgi-clan.de](mailto:patrick@georgi-clan.de)
|
||||
* IRC: pgeorgi
|
||||
|
||||
|
||||
### Build Machine requirements
|
||||
|
||||
For a builder, we need a fast system with lots of threads and plenty of
|
||||
RAM. The builder builds and stores the git repos and output in tmpfs
|
||||
along with the ccache save area, so if there isn't enough memory, the
|
||||
builds will slow down because of smaller ccache areas and can run into
|
||||
"out of storage space" errors.
|
||||
|
||||
#### Current Build Machines
|
||||
|
||||
To give an idea of what a suitable build machine might be, currently the
|
||||
coreboot project has 3 active jenkins build machines.
|
||||
|
||||
* Congenialbuilder - 128 threads, 256GiB RAM
|
||||
* Fastest Passing coreboot gerrit build: 4 min, 30 sec
|
||||
* Slowest Passing coreboot gerrit build: 9 min, 56 sec
|
||||
|
||||
|
||||
* Gleeful builder - 64 thread, 64GiB RAM
|
||||
* Fastest Passing coreboot gerrit build: 6 min, 6 sec
|
||||
* Slowest Passing coreboot gerrit build, 34 min
|
||||
|
||||
|
||||
* Ultron (9elements) - 48 threads, 128GiB RAM
|
||||
* Fastest Passing coreboot gerrit build: 6 min, 32 sec
|
||||
* Slowest Passing coreboot gerrit build: 44 min
|
||||
|
||||
|
||||
### Jenkins Builds
|
||||
|
||||
There are a number of builds handled by the coreboot jenkins builders,
|
||||
for a number of different projects - coreboot, flashrom, memtest86+,
|
||||
em100, etc. Many of these have builders for their current master branch
|
||||
as well as gerrit and coverity builds.
|
||||
|
||||
You can see all the builds here:
|
||||
[https://qa.coreboot.org/](https://qa.coreboot.org/)
|
||||
|
||||
Most of the time on the builders is taken up by the coreboot master and
|
||||
gerrit builds.
|
||||
|
||||
* [coreboot gerrit build](https://qa.coreboot.org/job/coreboot-gerrit/)
|
||||
([Time trend](https://qa.coreboot.org/job/coreboot-gerrit/buildTimeTrend))
|
||||
|
||||
|
||||
* [coreboot master build](https://qa.coreboot.org/job/coreboot/)
|
||||
([Time trend](https://qa.coreboot.org/job/coreboot/buildTimeTrend))
|
||||
|
||||
|
||||
### Stress test the machine
|
||||
|
||||
Test the machine to make sure that building won't stress the hardware
|
||||
too much. Install stress-ng, then run the stress test for at least an
|
||||
hour.
|
||||
|
||||
On a system with 32 cores, it was tested with this command:
|
||||
|
||||
```
|
||||
$ stress-ng --cpu 20 --io 6 --vm 6 --vm-bytes 1G --verify --metrics-brief -t 60m
|
||||
```
|
||||
|
||||
You can watch the temperature with the sensors package or with ‘acpi -t’
|
||||
if your machine supports that.
|
||||
|
||||
You can check for thermal throttling by running this command and seeing
|
||||
if the values go down on any of the cores after it's been running for a
|
||||
while.
|
||||
|
||||
```
|
||||
$ while [ true ]; do clear; cat /proc/cpuinfo | grep 'cpu MHz' ; sleep 1; done
|
||||
```
|
||||
|
||||
If the machine throttles or resets, you probably need to upgrade the
|
||||
cooling system.
|
||||
|
||||
|
||||
## jenkins-server docker installation
|
||||
|
||||
|
||||
### Manual Installation
|
||||
|
||||
If you’ve met all the above requirements, and an admin has agreed to set
|
||||
up the builder in jenkins, you’re ready to go on to the next steps.
|
||||
|
||||
|
||||
### Set up your network so jenkins can talk to the container
|
||||
|
||||
Expose a local port through any firewalls you might have on your router.
|
||||
This would generally be in the port forwarding section, and you'd just
|
||||
forward a port (typically 49151) from the internet directly to the
|
||||
builder’s IP address.
|
||||
|
||||
You might also want to set up a port to forward to port 22 on your
|
||||
machine and set up openssh so you or the jenkins admins can manage
|
||||
the machine remotely (if you allow them).
|
||||
|
||||
|
||||
### Install and set up docker
|
||||
|
||||
Install docker by following the
|
||||
[directions](https://docs.docker.com/engine/install/) on the docker
|
||||
site. These instructions keep changing, so just check the latest
|
||||
information.
|
||||
|
||||
|
||||
#### Set up environment variables
|
||||
|
||||
To make configuration and the later commands easier, these should go in
|
||||
your shell's .rc file. Note that you only need to set them if you're
|
||||
using something other than the default.
|
||||
|
||||
```
|
||||
# Set the port used on your machine to connect to jenkins.
|
||||
export COREBOOT_JENKINS_PORT=49151
|
||||
|
||||
# Set the revision of the container from docker hub
|
||||
export DOCKER_COMMIT=65718760fa
|
||||
|
||||
# Set the location of where the jenkins cache directory will be.
|
||||
export COREBOOT_JENKINS_CACHE_DIR="/srv/docker/coreboot-builder/cache"
|
||||
|
||||
# Set the name of the container
|
||||
export COREBOOT_JENKINS_CONTAINER="coreboot_jenkins"
|
||||
```
|
||||
|
||||
Make sure any variables needed are set in your environment before
|
||||
continuing to the next step.
|
||||
|
||||
|
||||
### Using the Makefile for docker installation
|
||||
|
||||
From the coreboot directory, run
|
||||
|
||||
```
|
||||
make -C util/docker help
|
||||
```
|
||||
|
||||
This will show you the available targets and variables needed:
|
||||
|
||||
```
|
||||
Commands for working with docker images:
|
||||
coreboot-sdk - Build coreboot-sdk container
|
||||
upload-coreboot-sdk - Upload coreboot-sdk to hub.docker.com
|
||||
coreboot-jenkins-node - Build coreboot-jenkins-node container
|
||||
upload-coreboot-jenkins-node - Upload coreboot-jenkins-node to hub.docker.com
|
||||
doc.coreboot.org - Build doc.coreboot.org container
|
||||
clean-coreboot-containers - Remove all docker coreboot containers
|
||||
clean-coreboot-images - Remove all docker coreboot images
|
||||
docker-clean - Remove docker coreboot containers & images
|
||||
|
||||
Commands for using docker images
|
||||
docker-build-coreboot - Build coreboot under coreboot-sdk
|
||||
<BUILD_CMD=target>
|
||||
docker-abuild - Run abuild under coreboot-sdk
|
||||
<ABUILD_ARGS='-a -B'>
|
||||
docker-what-jenkins-does - Run 'what-jenkins-does' target
|
||||
docker-shell - Bash prompt in coreboot-jenkins-node
|
||||
<USER=root or USER=coreboot>
|
||||
docker-jenkins-server - Run coreboot-jenkins-node image (for server)
|
||||
docker-jenkins-attach - Open shell in running jenkins server
|
||||
docker-build-docs - Build the documentation
|
||||
docker-livehtml-docs - Run sphinx-autobuild
|
||||
|
||||
Variables:
|
||||
COREBOOT_JENKINS_PORT=49151
|
||||
COREBOOT_JENKINS_CACHE_DIR=/srv/docker/coreboot-builder/cache
|
||||
COREBOOT_JENKINS_CONTAINER=coreboot_jenkins
|
||||
COREBOOT_IMAGE_TAG=f2741aa632f
|
||||
DOCKER_COMMIT=65718760fa
|
||||
```
|
||||
|
||||
### Set up the system for the jenkins builder
|
||||
|
||||
As a regular user - *Not root*, run:
|
||||
|
||||
```
|
||||
sudo mkdir -p ${COREBOOT_JENKINS_CACHE_DIR}
|
||||
sudo mkdir -p ${COREBOOT_JENKINS_CCACHE_DIR}
|
||||
sudo chown $(whoami):$(whoami) ${COREBOOT_JENKINS_CCACHE_DIR}
|
||||
sudo chown $(whoami):$(whoami) ${COREBOOT_JENKINS_CACHE_DIR}
|
||||
wget http://www.dediprog.com/save/78.rar/to/EM100Pro.rar
|
||||
mv EM100Pro.rar ${COREBOOT_JENKINS_CACHE_DIR}
|
||||
```
|
||||
|
||||
### Install the coreboot jenkins builder
|
||||
|
||||
```
|
||||
make -C util/docker docker-jenkins-server
|
||||
```
|
||||
|
||||
Your installation is complete on your side.
|
||||
|
||||
### Tell the Admins that the machine is set up
|
||||
Let the admins know that the builder is set up so they can set up the
|
||||
machine profile on qa.coreboot.org.
|
||||
|
||||
They need to know:
|
||||
* Your external IP address or domain name. If you don’t have a static
|
||||
IP, make sure you have a dynamic dns hostname configured.
|
||||
* The port on your machine and firewall that’s exposed for jenkins:
|
||||
`$COREBOOT_JENKINS_PORT`
|
||||
* The core count of the machine.
|
||||
* How much memory is available on the machine. This helps determine
|
||||
the amount of memory used for ccache.
|
||||
|
||||
|
||||
### First build
|
||||
On the first build after a machine is reset, it will frequently take
|
||||
20-25 minutes to do the entire what-jenkins-does build while the ccache
|
||||
is getting filled up and the entire coreboot repo gets downloaded. As
|
||||
the ccache gets populated, the build time will drop.
|
||||
|
||||
|
||||
## Additional Information
|
||||
|
||||
|
||||
### How to log in to the docker instance for debugging
|
||||
```
|
||||
$ make -C util/docker docker-jenkins-attach
|
||||
$ su coreboot
|
||||
$ cd ~/slave-root/workspace
|
||||
$ bash
|
||||
```
|
||||
|
||||
|
||||
WARNING: This should not be used to make changes to the build system,
|
||||
but just to debug issues. Changes to the build system are highly
|
||||
discouraged as it leads to situations where patches can pass the build
|
||||
testing on one builder and fail on another builder. Any changes that are
|
||||
made in the image will be lost on the next update, so if you
|
||||
accidentally change something, you can remove the containers and images
|
||||
and update to get a fresh installation.
|
||||
|
||||
|
||||
### How to download containers/images for a fresh installation and remove old containers
|
||||
|
||||
To delete the old containers & images:
|
||||
|
||||
```
|
||||
$ docker stop $COREBOOT_JENKINS_CONTAINER
|
||||
$ docker rm $COREBOOT_JENKINS_CONTAINER
|
||||
$ docker images # lists all existing images
|
||||
$ docker rmi XXXX # Use the image ID found in the above command.
|
||||
```
|
||||
|
||||
To get and run the new coreboot-jenkins image, change the value in the
|
||||
`DOCKER_COMMIT` variable to the new image value.
|
||||
|
||||
```
|
||||
$ make -C util/docker docker-jenkins-server
|
||||
```
|
||||
|
||||
#### Getting ready to push the docker images
|
||||
|
||||
Set up an account on hub.docker.com
|
||||
|
||||
Get an admin to add the account to the coreboot team on hub.docker.com
|
||||
|
||||
[https://hub.docker.com/u/coreboot/dashboard/teams/?team=owners](https://hub.docker.com/u/coreboot/dashboard/teams/?team=owners)
|
||||
|
||||
Make sure your credentials are configured on your host machine by
|
||||
running
|
||||
|
||||
```
|
||||
$ docker login
|
||||
```
|
||||
|
||||
This will prompt you for your docker username, password, and your email
|
||||
address, and write out to ~/.docker/config.json. Without this file, you
|
||||
won’t be able to push the images.
|
||||
|
||||
#### Updating the Dockerfiles:
|
||||
|
||||
The coreboot-sdk Dockerfile will need to be updated when any additional
|
||||
dependencies are added. Both the coreboot-sdk and the
|
||||
coreboot-jenkins-node Dockerfiles will need to be updated to the new
|
||||
version number and git commit id anytime the toolchain is updated. Both
|
||||
files are stored in the coreboot repo under coreboot/util/docker.
|
||||
|
||||
Read the [dockerfile best practices](https://docs.docker.com/v1.8/articles/dockerfile_best-practices/)
|
||||
page before updating the files.
|
||||
|
||||
#### Rebuilding the coreboot-sdk docker image to update the toolchain:
|
||||
|
||||
```
|
||||
$ make -C util/docker coreboot-sdk
|
||||
```
|
||||
|
||||
This takes a relatively long time.
|
||||
|
||||
#### Test the coreboot-sdk docker image:
|
||||
|
||||
There are two methods of running the docker image - interactively as a
|
||||
shell, or doing the build directly. Running interactively as a shell is
|
||||
useful for early testing, because it allows you to update the image
|
||||
(without any changes getting saved) and re-test builds. This saves the
|
||||
time of having to rebuild the image for every issue you find.
|
||||
|
||||
#### Running the docker image interactively:
|
||||
|
||||
Run:
|
||||
|
||||
```
|
||||
$ make -C util/docker docker-jenkins-server
|
||||
$ make -C util/docker docker-jenkins-attach
|
||||
```
|
||||
|
||||
#### Running the build directly:
|
||||
|
||||
From the coreboot directory:
|
||||
|
||||
```
|
||||
$ make -C util/docker docker-build-coreboot
|
||||
```
|
||||
|
||||
You’ll also want to test building the other projects and payloads:
|
||||
ChromeEC, flashrom, memtest86+, em100, Grub2, SeaBIOS, iPXE, coreinfo,
|
||||
nvramcui, tint...
|
||||
|
||||
#### Pushing the coreboot-sdk image to hub.docker.com for use:
|
||||
|
||||
When you’re satisfied with the testing, push the coreboot-sdk image to
|
||||
the hub.docker.com
|
||||
|
||||
```
|
||||
$ make -C util/docker upload-coreboot-sdk
|
||||
```
|
||||
|
||||
#### Building and pushing the coreboot-jenkins-node docker image:
|
||||
|
||||
This docker image is pretty simple, so there’s not really any testing
|
||||
that needs to be done.
|
||||
|
||||
```
|
||||
$ make -C util/docker coreboot-jenkins-node
|
||||
$ make -C util/docker upload-coreboot-jenkins-node
|
||||
```
|
||||
|
||||
### Coverity Setup
|
||||
|
||||
To run coverity jobs, the builder needs to have the tools available, and
|
||||
to be marked as a coverity builder.
|
||||
|
||||
|
||||
#### Set up the Coverity tools
|
||||
|
||||
Download the Linux-64 coverity build tool and decompress it into your
|
||||
cache directory as defined by the `$COREBOOT_JENKINS_CACHE_DIR` variable
|
||||
|
||||
[https://scan.coverity.com/download](https://scan.coverity.com/download)
|
||||
|
||||
Rename the directory from its original name
|
||||
(cov-analysis-linux64-7.7.0.4) to ‘coverity’, or better, create a
|
||||
symlink:
|
||||
|
||||
```
|
||||
ln -s cov-analysis-linux64-7.7.0.4 coverity
|
||||
```
|
||||
|
||||
|
||||
Let the admins know that the ‘coverity’ label can be added to the
|
||||
builder.
|
6
Documentation/infrastructure/index.md
Normal file
@ -0,0 +1,6 @@
|
||||
# coreboot infrastructure
|
||||
|
||||
This section contains documentation about coreboot infrastructure
|
||||
|
||||
## Jenkins builders and builds
|
||||
[Setting up Jenkins build machines](builders.md)
|
@ -73,18 +73,18 @@ return true.
|
||||
|
||||
## Firmware Configuration Value
|
||||
|
||||
The 32bit value used as the firmware configuration bitmask is meant to be determined at runtime
|
||||
The 64-bit value used as the firmware configuration bitmask is meant to be determined at runtime
|
||||
but could also be defined at compile time if needed.
|
||||
|
||||
There are two supported sources for providing this information to coreboot.
|
||||
|
||||
### CBFS
|
||||
|
||||
The value can be provided with a 32bit raw value in CBFS that is read by coreboot. The value
|
||||
The value can be provided with a 64-bit raw value in CBFS that is read by coreboot. The value
|
||||
can be set at build time but also adjusted in an existing image with `cbfstool`.
|
||||
|
||||
To enable this select the `CONFIG_FW_CONFIG_CBFS` option in the build configuration and add a
|
||||
raw 32bit value to CBFS with the name of the current prefix at `CONFIG_FW_PREFIX/fw_config`.
|
||||
raw 64-bit value to CBFS with the name of the current prefix at `CONFIG_FW_PREFIX/fw_config`.
|
||||
|
||||
When `fw_config_probe_device()` or `fw_config_probe()` is called it will look for the specified
|
||||
file in CBFS use the value it contains when matching fields and options.
|
||||
@ -121,12 +121,48 @@ Each field is defined by providing the field name and the start and end bit mark
|
||||
location in the bitmask. Field names must be at least three characters long in order to
|
||||
satisfy the sconfig parser requirements and they must be unique with non-overlapping masks.
|
||||
|
||||
field <name> <start-bit> <end-bit> [option...] end
|
||||
field <name> <start-bit> <end-bit> [option...] end
|
||||
|
||||
For single-bit fields only one number is needed:
|
||||
|
||||
field <name> <bit> [option...] end
|
||||
|
||||
A field definition can also contain multiple sets of bit masks, which can be dis-contiguous.
|
||||
They are treated as if they are contiguous when defining option values. This allows for
|
||||
extending fields even after the bits after its current masks are occupied.
|
||||
|
||||
field <name> <start-bit0> <end-bit0> | <start-bit1> <end-bit1> | ...
|
||||
|
||||
For example, if more audio options need to be supported:
|
||||
|
||||
field AUDIO 3 3
|
||||
option AUDIO_0 0
|
||||
option AUDIO_1 1
|
||||
end
|
||||
field OTHER 4 4
|
||||
...
|
||||
end
|
||||
|
||||
the following can be done:
|
||||
|
||||
field AUDIO 3 3 | 5 5
|
||||
option AUDIO_FOO 0
|
||||
option AUDIO_BLAH 1
|
||||
option AUDIO_BAR 2
|
||||
option AUDIO_BAZ 3
|
||||
end
|
||||
field OTHER 4 4
|
||||
...
|
||||
end
|
||||
|
||||
In that case, the AUDIO masks are extended like so:
|
||||
|
||||
#define FW_CONFIG_FIELD_AUDIO_MASK 0x28
|
||||
#define FW_CONFIG_FIELD_AUDIO_OPTION_AUDIO_FOO_VALUE 0x0
|
||||
#define FW_CONFIG_FIELD_AUDIO_OPTION_AUDIO_BLAH_VALUE 0x8
|
||||
#define FW_CONFIG_FIELD_AUDIO_OPTION_AUDIO_BAR_VALUE 0x20
|
||||
#define FW_CONFIG_FIELD_AUDIO_OPTION_AUDIO_BAz_VALUE 0x28
|
||||
|
||||
Each `field` definition starts a new block that can be composed of zero or more field options,
|
||||
and it is terminated with `end`.
|
||||
|
||||
@ -291,8 +327,8 @@ field and option to check.
|
||||
struct fw_config {
|
||||
const char *field_name;
|
||||
const char *option_name;
|
||||
uint32_t mask;
|
||||
uint32_t value;
|
||||
uint64_t mask;
|
||||
uint64_t value;
|
||||
};
|
||||
```
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
|
||||
## Supported architectures
|
||||
|
||||
* aarch32
|
||||
* aarch64
|
||||
* riscv
|
||||
|
||||
@ -26,6 +27,13 @@ The section must be named in order to be found by the FIT parser:
|
||||
|
||||
The FIT parser needs architecure support.
|
||||
|
||||
### aarch32
|
||||
The source code can be found in `src/arch/arm/fit_payload.c`.
|
||||
|
||||
On aarch32 the kernel (a section named 'kernel') must be in **Image**
|
||||
format and it needs a devicetree (a section named 'fdt') to boot.
|
||||
The kernel will be placed close to "*DRAMSTART*".
|
||||
|
||||
### aarch64
|
||||
The source code can be found in `src/arch/arm64/fit_payload.c`.
|
||||
|
||||
|
170
Documentation/mainboard/asus/a88xm-e.md
Normal file
@ -0,0 +1,170 @@
|
||||
# ASUS A88XM-E
|
||||
|
||||
This page describes how to run coreboot on the [ASUS A88XM-E].
|
||||
|
||||
## Technology
|
||||
|
||||
Both "Trinity" and "Richland" FM2 desktop processing units are working,
|
||||
the CPU architecture in these CPUs/APUs are [Piledriver],
|
||||
and their GPU is [TeraScale 3] (VLIW4-based).
|
||||
|
||||
Kaveri is non-working at the moment (FM2+),
|
||||
the CPU architecture in these CPUs/APUs are [Steamroller],
|
||||
and their GPU is [Sea Islands] (GCN2-based).
|
||||
|
||||
A10 Richland is recommended for the best performance and working IOMMU.
|
||||
|
||||
```eval_rst
|
||||
+------------------+--------------------------------------------------+
|
||||
| A88XM-E | |
|
||||
+------------------+--------------------------------------------------+
|
||||
| DDR voltage IC | Nuvoton 3101S |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Network | Realtek RTL8111G |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Northbridge | Integrated into CPU with IMC and GPU (APUs only) |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Southbridge | Bolton-D4 |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Sound IC | Realtek ALC887 |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Super I/O | ITE IT8603E |
|
||||
+------------------+--------------------------------------------------+
|
||||
| VRM controller | DIGI VRM ASP1206 |
|
||||
+------------------+--------------------------------------------------+
|
||||
```
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
```eval_rst
|
||||
+---------------------+------------+
|
||||
| Type | Value |
|
||||
+=====================+============+
|
||||
| Socketed flash | yes |
|
||||
+---------------------+------------+
|
||||
| Model | [GD25Q64] |
|
||||
+---------------------+------------+
|
||||
| Size | 8 MiB |
|
||||
+---------------------+------------+
|
||||
| Package | DIP-8 |
|
||||
+---------------------+------------+
|
||||
| Write protection | yes |
|
||||
+---------------------+------------+
|
||||
| Dual BIOS feature | no |
|
||||
+---------------------+------------+
|
||||
| Internal flashing | yes |
|
||||
+---------------------+------------+
|
||||
```
|
||||
|
||||
### Internal programming
|
||||
|
||||
The main SPI flash can be accessed using [flashrom], if the
|
||||
AmdSpiRomProtect modules have been deleted in the factory image previously.
|
||||
|
||||
### External flashing
|
||||
|
||||
Using a PLCC Extractor or any other appropriate tool, carefully remove the
|
||||
DIP-8 BIOS chip from its' socket while avoiding the bent pins, if possible.
|
||||
To flash it, use a [flashrom]-supported USB CH341A programmer - preferably with a
|
||||
green PCB - and double check that it's giving a 3.3V voltage on the socket pins.
|
||||
|
||||
## Integrated graphics
|
||||
|
||||
### Retrieve the VGA optionrom ("Retrieval via Linux kernel" method)
|
||||
|
||||
Make sure a proprietary UEFI is flashed and boot Linux with iomem=relaxed flag.
|
||||
Some Linux drivers (e.g. radeon for AMD) make option ROMs like the video blob
|
||||
available to user space via sysfs. To use that to get the blob you need to
|
||||
enable it first. To that end you need to determine the path within /sys
|
||||
corresponding to your graphics chip. It looks like this:
|
||||
|
||||
# /sys/devices/pci<domain>:<bus>/<domain>:<bus>:<slot>.<function>/rom.
|
||||
|
||||
You can get the respective information with lspci, for example:
|
||||
|
||||
# lspci -tv
|
||||
# -[0000:00]-+-00.0 Advanced Micro Devices, Inc. [AMD] Family 16h Processor Root Complex
|
||||
# +-01.0 Advanced Micro Devices, Inc. [AMD/ATI] Kabini [Radeon HD 8210]
|
||||
# ...
|
||||
|
||||
Here the the needed bits (for the ROM of the Kabini device) are:
|
||||
|
||||
# PCI domain: (almost always) 0000
|
||||
# PCI bus: (also very commonly) 00
|
||||
# PCI slot: 01 (logical slot; different from any physical slots)
|
||||
# PCI function: 0 (a PCI device might have multiple functions... shouldn't matter here)
|
||||
|
||||
To enable reading of the ROM you need to write 1 to the respective file, e.g.:
|
||||
|
||||
# echo 1 > /sys/devices/pci0000:00/0000:00:01.0/rom
|
||||
|
||||
The same file should then contain the video blob and it should be possible to simply copy it, e.g.:
|
||||
|
||||
# cp /sys/devices/pci0000:00/0000:00:01.0/rom vgabios.bin
|
||||
|
||||
romheaders should print reasonable output for this file.
|
||||
|
||||
This version is usable for all the GPUs.
|
||||
1002,9901 Trinity (Radeon HD 7660D)
|
||||
1002,9904 Trinity (Radeon HD 7560D)
|
||||
1002,990c Richland (Radeon HD 8670D)
|
||||
1002,990e Richland (Radeon HD 8570D)
|
||||
1002,9991 Trinity (Radeon HD 7540D)
|
||||
1002,9993 Trinity (Radeon HD 7480D)
|
||||
1002,9996 Richland (Radeon HD 8470D)
|
||||
1002,9998 Richland (Radeon HD 8370D)
|
||||
1002,999d Richland (Radeon HD 8550D)
|
||||
1002,130f Kaveri (Radeon R7)
|
||||
|
||||
## Known issues
|
||||
|
||||
- AHCI hot-plug
|
||||
- S3 resume (sometimes)
|
||||
- Windows 7 can't boot because of the incomplete ACPI implementation
|
||||
- XHCI
|
||||
|
||||
### XHCI ports can break after using any of the blobs, restarting the
|
||||
board with factory image makes it work again as fallback.
|
||||
Tested even with/without the Bolton and Hudson blobs.
|
||||
|
||||
## Untested
|
||||
|
||||
- audio over HDMI
|
||||
|
||||
## TODOs
|
||||
|
||||
- one ATOMBIOS module for all the integrated GPUs
|
||||
- manage to work with Kaveri/Godavary (they are using a binaryPI)
|
||||
- IRQ routing is done incorrect way - common problem of fam15h boards
|
||||
|
||||
## Working
|
||||
|
||||
- ACPI
|
||||
- CPU frequency scaling
|
||||
- flashrom under coreboot
|
||||
- Gigabit Ethernet
|
||||
- Hardware monitoring
|
||||
- Integrated graphics
|
||||
- KVM virtualization
|
||||
- Onboard audio
|
||||
- PCI
|
||||
- PCIe
|
||||
- PS/2 keyboard mouse (during payload, bootloader)
|
||||
- SATA
|
||||
- Serial port
|
||||
- SuperIO based fan control
|
||||
- USB (disabling XHCI controller makes to work as fallback USB2.0 ports)
|
||||
- IOMMU
|
||||
|
||||
## Extra resources
|
||||
|
||||
- [Board manual]
|
||||
|
||||
[ASUS A88XM-E]: https://www.asus.com/Motherboards/A88XME/
|
||||
[Board manual]: https://dlcdnets.asus.com/pub/ASUS/mb/SocketFM2/A88XM-E/E9125_A88XM-E.pdf
|
||||
[flashrom]: https://flashrom.org/Flashrom
|
||||
[GD25Q64]: http://www.elm-tech.com/ja/products/spi-flash-memory/gd25q64/gd25q64.pdf
|
||||
[Piledriver]: https://en.wikipedia.org/wiki/Piledriver_%28microarchitecture%29#APU_lines
|
||||
[Sea Islands]: https://en.wikipedia.org/wiki/Graphics_Core_Next#GCN_2nd_generation
|
||||
[Steamroller]: https://en.wikipedia.org/wiki/Steamroller_(microarchitecture)
|
||||
[TeraScale 3]: https://en.wikipedia.org/wiki/TeraScale_%28microarchitecture%29#TeraScale_3
|
@ -2,9 +2,7 @@
|
||||
|
||||
This page describes how to run coreboot on the [ASUS P5Q] desktop board.
|
||||
|
||||
## TODO
|
||||
|
||||
The following things are working in this coreboot port:
|
||||
## Working
|
||||
|
||||
+ PCI slots
|
||||
+ PCI-e slots
|
||||
@ -15,20 +13,21 @@ The following things are working in this coreboot port:
|
||||
+ All 4 DIMM slots
|
||||
+ S3 suspend and resume
|
||||
+ Red SATA ports
|
||||
+ Fan control through the W83667HG chip
|
||||
+ FireWire
|
||||
|
||||
The following things are still missing from this coreboot port:
|
||||
## Not working
|
||||
|
||||
+ PS/2 mouse support
|
||||
+ PATA aka IDE (because of buggy IDE controller)
|
||||
+ Fan control (will be working on 100% power)
|
||||
+ Fan profiles with Q-Fan
|
||||
+ TPM module (support not implemented)
|
||||
|
||||
The following things are untested on this coreboot port:
|
||||
## Untested
|
||||
|
||||
+ S/PDIF
|
||||
+ CD Audio In
|
||||
+ Floppy disk drive
|
||||
+ FireWire: PCI device shows up and driver loads, no further test
|
||||
|
||||
|
||||
## Flashing coreboot
|
||||
@ -73,5 +72,63 @@ You can flash coreboot into your motherboard using [this guide].
|
||||
+------------------+---------------------------------------------------+
|
||||
```
|
||||
|
||||
## Controlling fans
|
||||
|
||||
With vendor firmware, the P5Q uses the ATK0110 ACPI device to control its fans
|
||||
according to the parameters configured in the BIOS setup menu. With coreboot,
|
||||
one can instead control the Super I/O directly as described in the
|
||||
[kernel docs]:
|
||||
|
||||
+ pwm1 controls fan1 (CHA_FAN1) and fan4 (CHA_FAN2)
|
||||
+ pwm2 controls fan2 (CPU_FAN)
|
||||
+ fan3 (PWR_FAN) cannot be controlled
|
||||
+ temp1 (board) can be used to control fan1 and fan4
|
||||
+ temp2 (CPU) can be used to control fan2
|
||||
|
||||
### Manual fan speed
|
||||
|
||||
These commands set the chassis fans to a constant speed:
|
||||
|
||||
# Use PWM output
|
||||
echo 1 >/sys/class/hwmon/hwmon2/pwm1_mode
|
||||
# Set to manual mode
|
||||
echo 1 >/sys/class/hwmon/hwmon2/pwm1_enable
|
||||
# Set relative speed: 0 (stop) to 255 (full)
|
||||
echo 150 >/sys/class/hwmon/hwmon2/pwm1
|
||||
|
||||
### Automatic fan speed
|
||||
|
||||
The W83667HG can adjust fan speeds when things get too warm. These settings will
|
||||
control the chassis fans:
|
||||
|
||||
# Set to "Thermal Cruise" mode
|
||||
echo 2 >/sys/class/hwmon/hwmon2/pwm1_enable
|
||||
# Target temperature: 60°C
|
||||
echo 60000 >/sys/class/hwmon/hwmon2/pwm1_target
|
||||
# Minimum fan speed when spinning up
|
||||
echo 135 >/sys/class/hwmon/hwmon2/pwm1_start_output
|
||||
# Minimum fan speed when spinning down
|
||||
echo 135 >/sys/class/hwmon/hwmon2/pwm1_stop_output
|
||||
# Tolerance: 2°C
|
||||
echo 2000 >/sys/class/hwmon/hwmon2/pwm1_tolerance
|
||||
# Turn fans off after 600 seconds when below defined range
|
||||
echo 600000 >/sys/class/hwmon/hwmon2/pwm1_stop_time
|
||||
|
||||
You can also control the CPU fan with similar rules:
|
||||
|
||||
# Switch to "Thermal Cruise" mode
|
||||
echo 2 >/sys/class/hwmon/hwmon2/pwm2_enable
|
||||
# Target temperature: 55°C
|
||||
echo 55000 >/sys/class/hwmon/hwmon2/pwm2_target
|
||||
# Minimum fan speed when spinning down
|
||||
echo 50 >/sys/class/hwmon/hwmon2/pwm2_stop_output
|
||||
# Rate of fan speed change
|
||||
echo 50 >/sys/class/hwmon/hwmon2/pwm2_step_output
|
||||
# Maximum fan speed
|
||||
echo 200 >/sys/class/hwmon/hwmon2/pwm2_max_output
|
||||
# Tolerance: 2°C
|
||||
echo 2000 >/sys/class/hwmon/hwmon2/pwm1_tolerance
|
||||
|
||||
[ASUS P5Q]: https://www.asus.com/Motherboards/P5Q
|
||||
[this guide]: https://doc.coreboot.org/flash_tutorial/int_flashrom.html
|
||||
[kernel docs]: https://www.kernel.org/doc/Documentation/hwmon/w83627ehf.rst
|
||||
|
47
Documentation/mainboard/clevo/n130wu/index.md
Normal file
@ -0,0 +1,47 @@
|
||||
# Clevo N130WU
|
||||
|
||||
## Hardware
|
||||
### Technology
|
||||
```eval_rst
|
||||
+------------------+--------------------------------+
|
||||
| CPU | Intel i7-8550U |
|
||||
+------------------+--------------------------------+
|
||||
| PCH | Intel Sunrise Point LP |
|
||||
+------------------+--------------------------------+
|
||||
| EC / Super IO | ITE IT8587E |
|
||||
+------------------+--------------------------------+
|
||||
| Coprocessor | Intel ME |
|
||||
+------------------+--------------------------------+
|
||||
```
|
||||
|
||||
### Flash chip
|
||||
```eval_rst
|
||||
+---------------------+-----------------+
|
||||
| Type | Value |
|
||||
+=====================+=================+
|
||||
| Model | GD25Q64B |
|
||||
+---------------------+-----------------+
|
||||
| Socketed flash | no |
|
||||
+---------------------+-----------------+
|
||||
| Size | 8 MiB |
|
||||
+---------------------+-----------------+
|
||||
| In circuit flashing | Yes |
|
||||
+---------------------+-----------------+
|
||||
| Package | SOIC-8 |
|
||||
+---------------------+-----------------+
|
||||
| Write protection | No |
|
||||
+---------------------+-----------------+
|
||||
| Dual BIOS feature | No |
|
||||
+---------------------+-----------------+
|
||||
| Internal flashing | Yes |
|
||||
+---------------------+-----------------+
|
||||
```
|
||||
|
||||
## Board status
|
||||
### Working
|
||||
### Not Working
|
||||
### Work in progress
|
||||
### Untested
|
||||
|
||||
## Also known as
|
||||
* TUXEDO InfinityBook Pro 13 v3
|
64
Documentation/mainboard/emulation/qemu-i440fx.md
Normal file
@ -0,0 +1,64 @@
|
||||
# qemu i440fx mainboard
|
||||
|
||||
## Running coreboot in qemu
|
||||
Emulators like qemu don't need a firmware to do hardware init.
|
||||
The hardware starts in the configured state already.
|
||||
|
||||
The coreboot port allows to test non mainboard specific code.
|
||||
As you can easily attach a debugger, it's a good target for
|
||||
experimental code.
|
||||
|
||||
## coreboot x86_64 support
|
||||
coreboot historically runs in 32-bit protected mode, even though the
|
||||
processor supports x86_64 instructions (long mode).
|
||||
|
||||
The qemu-i440fx mainboard has been ported to x86_64 and will serve as
|
||||
reference platform to enable additional platforms.
|
||||
|
||||
To enable the support set the Kconfig option ``CONFIG_CPU_QEMU_X86_64=y``.
|
||||
|
||||
## Installing qemu
|
||||
|
||||
On debian you can install qemu by running:
|
||||
```bash
|
||||
$ sudo apt-get install qemu
|
||||
```
|
||||
|
||||
On redhat you can install qemu by running:
|
||||
```bash
|
||||
$ sudo dnf install qemu
|
||||
```
|
||||
|
||||
## Running coreboot
|
||||
|
||||
### To run the i386 version of coreboot (default)
|
||||
Running on qemu-system-i386 will require a 32 bit operating system.
|
||||
|
||||
```bash
|
||||
qemu-system-i386 -bios build/coreboot.rom -serial stdio -M pc
|
||||
```
|
||||
|
||||
### To run the experimental x86_64 version of coreboot
|
||||
Running on qemu-system-x86_64 allows to run a 32 bit or 64 bit operating system,
|
||||
as well as firmware.
|
||||
|
||||
```bash
|
||||
qemu-system-x86_64 -bios build/coreboot.rom -serial stdio -M pc
|
||||
```
|
||||
|
||||
## Finding bugs
|
||||
To test coreboot's x86 code it's recommended to run on a x86 host and enable KVM.
|
||||
It will not only run faster, but is closer to real hardware. If you see the
|
||||
following message:
|
||||
|
||||
KVM internal error. Suberror: 1
|
||||
emulation failure
|
||||
|
||||
something went wrong. The same bug will likely cause a FAULT on real hardware,
|
||||
too.
|
||||
|
||||
To enable KVM run:
|
||||
|
||||
```bash
|
||||
qemu-system-x86_64 -bios build/coreboot.rom -serial stdio -M pc -accel kvm -cpu host
|
||||
```
|
64
Documentation/mainboard/emulation/qemu-q35.md
Normal file
@ -0,0 +1,64 @@
|
||||
# qemu q35 mainboard
|
||||
|
||||
## Running coreboot in qemu
|
||||
Emulators like qemu don't need a firmware to do hardware init.
|
||||
The hardware starts in the configured state already.
|
||||
|
||||
The coreboot port allows to test non mainboard specific code.
|
||||
As you can easily attach a debugger, it's a good target for
|
||||
experimental code.
|
||||
|
||||
## coreboot x86_64 support
|
||||
coreboot historically runs in 32-bit protected mode, even though the
|
||||
processor supports x86_64 instructions (long mode).
|
||||
|
||||
The qemu-q35 mainboard has been ported to x86_64 and will serve as
|
||||
reference platform to enable additional platforms.
|
||||
|
||||
To enable the support set the Kconfig option ``CONFIG_CPU_QEMU_X86_64=y``.
|
||||
|
||||
## Installing qemu
|
||||
|
||||
On debian you can install qemu by running:
|
||||
```bash
|
||||
$ sudo apt-get install qemu
|
||||
```
|
||||
|
||||
On redhat you can install qemu by running:
|
||||
```bash
|
||||
$ sudo dnf install qemu
|
||||
```
|
||||
|
||||
## Running coreboot
|
||||
### To run the i386 version of coreboot (default)
|
||||
Running on qemu-system-i386 will require a 32 bit operating system.
|
||||
|
||||
```bash
|
||||
qemu-system-i386 -bios build/coreboot.rom -serial stdio -M q35
|
||||
```
|
||||
|
||||
### To run the experimental x86_64 version of coreboot
|
||||
Running on `qemu-system-x86_64` allows to run a 32 bit or 64 bit operating system
|
||||
and firmware.
|
||||
|
||||
```bash
|
||||
qemu-system-x86_64 -bios build/coreboot.rom -serial stdio -M q35
|
||||
```
|
||||
|
||||
## Finding bugs
|
||||
To test coreboot's x86 code it's recommended to run on a x86 host and enable KVM.
|
||||
It will not only run faster, but is closer to real hardware. If you see the
|
||||
following message:
|
||||
|
||||
KVM internal error. Suberror: 1
|
||||
emulation failure
|
||||
|
||||
something went wrong. The same bug will likely cause a FAULT on real hardware,
|
||||
too.
|
||||
|
||||
To enable KVM run:
|
||||
|
||||
```bash
|
||||
qemu-system-x86_64 -bios build/coreboot.rom -serial stdio -M q35 -accel kvm -cpu host
|
||||
```
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
This page describes how to run coreboot on the Facebook Monolith.
|
||||
|
||||
Please note: the coreboot implementation for this boards is in its
|
||||
Please note: the coreboot implementation for this board is in its
|
||||
Beta state and isn't fully tested yet.
|
||||
|
||||
## Required blobs
|
||||
@ -41,8 +41,8 @@ These can be extracted from the original flash image as follows:
|
||||
00003000:006FFFFF me
|
||||
00001000:00002fff gbe
|
||||
```
|
||||
3) Use `ifdtool -n <layout_file> <flash_image>` to resize the *bios* region from the default 6MB
|
||||
to 9 MB, this is required to create sufficient space for LinuxBoot.
|
||||
3) Use `ifdtool -n <layout_file> <flash_image>` to resize the *bios* region from the default 6 MiB
|
||||
to 9 MiB, this is required to create sufficient space for LinuxBoot.
|
||||
NOTE: Please make sure only the firmware descriptor (*fd*) region is changed. Older versions
|
||||
of the ifdtool corrupt the *me* region.
|
||||
4) Use `ifdtool -x <resized_flash_image>` to extract the components.
|
||||
@ -104,7 +104,7 @@ solution. Wires need to be connected to be able to flash using an external progr
|
||||
- SMBus
|
||||
- Initialization with FSP
|
||||
- SeaBIOS payload (commit a5cab58e9a3fb6e168aba919c5669bea406573b4)
|
||||
- TianoCore payload (commit a5cab58e9a3fb6e168aba919c5669bea406573b4)
|
||||
- TianoCore payload (commit 860a8d95c2ee89c9916d6e11230f246afa1cd629)
|
||||
- LinuxBoot (kernel kernel-4_19_97) (uroot commit 9c9db9dbd6b532f5f91a511a0de885c6562aadd7)
|
||||
- eMMC
|
||||
|
||||
|
283
Documentation/mainboard/gigabyte/ga-g41m-es2l.md
Normal file
@ -0,0 +1,283 @@
|
||||
# Gigabyte GA-G41M-ES2L rev 1.1
|
||||
|
||||
This page describes how to use coreboot on the [Gigabyte GA-G41M-ES2L rev 1.1](https://www.gigabyte.com/Motherboard/GA-G41M-ES2L-rev-11) mainboard.
|
||||
|
||||
This motherboard [also works with Libreboot](https://libreboot.org/docs/install/ga-g41m-es2l.html).
|
||||
|
||||
## Technology
|
||||
|
||||
```eval_rst
|
||||
+------------------+--------------------------------------------------+
|
||||
| Type | Value |
|
||||
+==================+==================================================+
|
||||
| BIOS flash chips | 2 x SST25VF080B (8 Mbit SPI) (DUAL BIOS) |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Northbridge | Intel G41 |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Southbridge | Intel ICH7 |
|
||||
+------------------+--------------------------------------------------+
|
||||
| CPU socket | LGA775 |
|
||||
+------------------+--------------------------------------------------+
|
||||
| RAM | 2 x DDR2 800, max. 8 GiB |
|
||||
+------------------+--------------------------------------------------+
|
||||
| SuperIO | ITE IT8718F-S |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Audio | Realtek ALC888B |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Network | Realtek RTL8111C PCIe Gigabit Ethernet |
|
||||
+------------------+--------------------------------------------------+
|
||||
```
|
||||
|
||||
## Preparation
|
||||
|
||||
```eval_rst
|
||||
For more datails how to get sources and build the toolchain, see :doc:`../../tutorial/part1`.
|
||||
```
|
||||
|
||||
### Devuan 4 Chimaera
|
||||
|
||||
This probably works also for any fresh Debian/Ubuntu-based distros.
|
||||
|
||||
Install tools and libraries needed for coreboot:
|
||||
|
||||
```shell
|
||||
sudo apt-get -V install bison build-essential curl flex git gnat libncurses5-dev m4 zlib1g-dev wget python2 python-is-python2 flashrom
|
||||
```
|
||||
|
||||
### Get sources
|
||||
|
||||
You need about 700 MB disk space for sources only and ~2GB disk space for sources + build results
|
||||
|
||||
```shell
|
||||
git clone --recursive https://review.coreboot.org/coreboot.git
|
||||
```
|
||||
|
||||
### Build toolchain
|
||||
|
||||
Your system compilers can be different with versions, tested by coreboot developers.
|
||||
So, it is recommended to build cross-compilers with special versions, which were tested with coreboot.
|
||||
|
||||
It is possible to skip this time-consuming part and use `ANY_TOOLCHAIN=y`, but this not recommended.
|
||||
|
||||
You can build them for all platforms: `make crossgcc CPUS=2` but this takes ~2 hours with Intel core2duo E8400.
|
||||
|
||||
The best way, probably, is to build cross-compilers for your platform (this takes ~20 minutes with Intel core2duo E8400):
|
||||
|
||||
```shell
|
||||
make crossgcc-i386 CPUS=2
|
||||
```
|
||||
|
||||
### Save MAC-address of internal LAN
|
||||
|
||||
Run `ip -c link show`, you will find MAC-address like 6c:f0:49:xx:xx:xx
|
||||
|
||||
```
|
||||
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
|
||||
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
||||
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
|
||||
link/ether 6c:f0:49:xx:xx:xx brd ff:ff:ff:ff:ff:ff
|
||||
```
|
||||
|
||||
## Configure
|
||||
|
||||
Create file `payloads/external/SeaBIOS/.config_seabios`:
|
||||
|
||||
```shell
|
||||
CONFIG_COREBOOT=y
|
||||
CONFIG_ATA_DMA=y
|
||||
CONFIG_VGA_COREBOOT=y
|
||||
```
|
||||
|
||||
Edit file `configs/config.gigabyte_ga-g41m-es2l`, replace `CONFIG_REALTEK_8168_MACADDRESS` value with your MAC-address.
|
||||
|
||||
Run
|
||||
|
||||
```shell
|
||||
make defconfig KBUILD_DEFCONFIG="configs/config.gigabyte_ga-g41m-es2l"
|
||||
```
|
||||
|
||||
## Build
|
||||
|
||||
Just execute:
|
||||
|
||||
```shell
|
||||
make
|
||||
```
|
||||
|
||||
It takes ~2 minutes with Intel core2duo E8400.
|
||||
|
||||
Example of last part in the output:
|
||||
|
||||
```
|
||||
CBFSPRINT coreboot.rom
|
||||
|
||||
FMAP REGION: COREBOOT
|
||||
Name Offset Type Size Comp
|
||||
cbfs master header 0x0 cbfs header 32 none
|
||||
fallback/romstage 0x80 stage 62316 none
|
||||
cpu_microcode_blob.bin 0xf480 microcode 180224 none
|
||||
fallback/ramstage 0x3b500 stage 98745 none
|
||||
vgaroms/seavgabios.bin 0x53700 raw 28672 none
|
||||
config 0x5a740 raw 301 none
|
||||
revision 0x5a8c0 raw 675 none
|
||||
build_info 0x5abc0 raw 103 none
|
||||
fallback/dsdt.aml 0x5ac80 raw 8447 none
|
||||
rt8168-macaddress 0x5cdc0 raw 17 none
|
||||
vbt.bin 0x5ce40 raw 802 LZMA (1899 decompressed)
|
||||
cmos.default 0x5d1c0 cmos_default 256 none
|
||||
cmos_layout.bin 0x5d300 cmos_layout 1040 none
|
||||
fallback/postcar 0x5d740 stage 20844 none
|
||||
fallback/payload 0x62900 simple elf 70270 none
|
||||
payload_config 0x73bc0 raw 1699 none
|
||||
payload_revision 0x742c0 raw 237 none
|
||||
(empty) 0x74400 null 482904 none
|
||||
bootblock 0xea280 bootblock 23360 none
|
||||
HOSTCC cbfstool/ifwitool.o
|
||||
HOSTCC cbfstool/ifwitool (link)
|
||||
|
||||
Built gigabyte/ga-g41m-es2l (GA-G41M-ES2L)
|
||||
```
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
```eval_rst
|
||||
In addition to the information here, please see the
|
||||
:doc:`../../flash_tutorial/index`.
|
||||
```
|
||||
|
||||
### Do backup
|
||||
|
||||
The above commands read the SPI flash chip(s), write into file and then verify content again with the chip:
|
||||
|
||||
```shell
|
||||
sudo flashrom -p internal:dualbiosindex=0 -r m_bios.rom
|
||||
sudo flashrom -p internal:dualbiosindex=0 -v m_bios.rom
|
||||
sudo flashrom -p internal:dualbiosindex=1 -r b_bios.rom
|
||||
sudo flashrom -p internal:dualbiosindex=1 -v b_bios.rom
|
||||
```
|
||||
|
||||
If access error appeared, then add `iomem=relaxed` to Linux kernel parameters and restart your Linux system.
|
||||
|
||||
You can also repeat backup and compare checksums manually.
|
||||
|
||||
Backup file should be stored elsewhere, so that in case the coreboot build is faulty, some external procedure can be used without having to extract the backup from the target device first.
|
||||
|
||||
### Write new flash image
|
||||
|
||||
Let's write new image into SPI flash chip, verify checksum again and erase second flash chip:
|
||||
|
||||
```shell
|
||||
sudo flashrom -p internal:dualbiosindex=0 -w build/coreboot.rom
|
||||
sudo flashrom -p internal:dualbiosindex=0 -v build/coreboot.rom
|
||||
sudo flashrom -p internal:dualbiosindex=1 -E
|
||||
```
|
||||
|
||||
## Set text mode for GRUB
|
||||
|
||||
Update your `/etc/default/grub` with:
|
||||
|
||||
```shell
|
||||
GRUB_TERMINAL=console
|
||||
```
|
||||
|
||||
And recreate GRUB configuration `/boot/grub/grub.cfg` by command
|
||||
|
||||
```shell
|
||||
sudo update-grub
|
||||
```
|
||||
|
||||
## Boot with new firmware
|
||||
|
||||
Restart your system:
|
||||
|
||||
```shell
|
||||
sudo shutdown -r now
|
||||
```
|
||||
|
||||
If it is needed, use <kbd>Esc</kbd> key to choose boot device.
|
||||
|
||||
Remove `iomem=relaxed` from Linux kernel parameters.
|
||||
|
||||
Enjoy!
|
||||
|
||||
## Status
|
||||
|
||||
```
|
||||
+-----------------------+--------------------------+--------+-------------------------------+
|
||||
| coreboot version | Date of sources checkout | Status | Comment |
|
||||
+-----------------------+--------------------------+--------+-------------------------------+
|
||||
| 4.13-1531-g2fae1c0494 | 2021-01-28 | Good | |
|
||||
+-----------------------+--------------------------+--------+-------------------------------+
|
||||
| 4.13-2182-g6410a0002f | 2021-02-18 | Good | |
|
||||
+-----------------------+--------------------------+--------+-------------------------------+
|
||||
```
|
||||
|
||||
### Known issues
|
||||
|
||||
Lm-sensors shows wrong values from it87:
|
||||
|
||||
```
|
||||
coretemp-isa-0000
|
||||
Adapter: ISA adapter
|
||||
Core 0: +27.0°C (high = +80.0°C, crit = +100.0°C)
|
||||
Core 1: +31.0°C (high = +80.0°C, crit = +100.0°C)
|
||||
|
||||
it8718-isa-0290
|
||||
Adapter: ISA adapter
|
||||
in0: 1.06 V (min = +0.00 V, max = +4.08 V)
|
||||
in1: 1.90 V (min = +0.00 V, max = +4.08 V)
|
||||
in2: 3.34 V (min = +0.00 V, max = +4.08 V)
|
||||
+5V: 2.96 V (min = +0.00 V, max = +4.08 V)
|
||||
in4: 224.00 mV (min = +0.00 V, max = +4.08 V)
|
||||
in5: 4.08 V (min = +0.00 V, max = +4.08 V) ALARM
|
||||
in6: 4.08 V (min = +0.00 V, max = +4.08 V) ALARM
|
||||
in7: 3.09 V (min = +0.00 V, max = +4.08 V)
|
||||
Vbat: 2.82 V
|
||||
fan1: 1290 RPM (min = 0 RPM)
|
||||
fan2: 0 RPM (min = 0 RPM)
|
||||
temp1: -54.0°C (low = +0.0°C, high = +127.0°C) sensor = thermistor
|
||||
temp2: -1.0°C (low = +0.0°C, high = +127.0°C) sensor = thermistor
|
||||
temp3: +44.0°C (low = +0.0°C, high = +127.0°C) sensor = thermal diode
|
||||
cpu0_vid: +1.100 V
|
||||
intrusion0: ALARM
|
||||
```
|
||||
|
||||
### Working
|
||||
|
||||
- RAM 1,2x1GiB DDR2 PC2-6400 Kingston KTC1G-UDIMM (1.8V, 2Rx8 ?)
|
||||
- RAM 1x1GiB DDR2 PC2-5300 Brooktree AU1G08E32-667P005 / Apogee AU1G082-667P005 CL6 (1.8V, 2Rx8 ?)
|
||||
- CPU E8400
|
||||
- ACPI
|
||||
- CPU frequency scaling
|
||||
- flashrom under coreboot
|
||||
- Gigabit Ethernet
|
||||
- Hardware monitoring
|
||||
- Integrated graphics
|
||||
- SATA
|
||||
- PCI POST card
|
||||
|
||||
### Not working
|
||||
|
||||
- SuperIO based fan control: PWM fan speed is not changing in depend of CPU temperature
|
||||
- RAM 1,2x4GiB DDR2 PC2-6400 Samsung M378T5263AZ3-CF7 (2Rx4 PC2-6400U-666-12-E3)
|
||||
|
||||
### Not tested
|
||||
|
||||
- KVM virtualization
|
||||
- Onboard audio
|
||||
- PCI
|
||||
- PCIe
|
||||
- PS/2 keyboard mouse (during payload, bootloader)
|
||||
- Serial port
|
||||
- USB (disabling XHCI controller makes to work as fallback USB2.0 ports)
|
||||
- IOMMU
|
||||
|
||||
## Interesting facts
|
||||
|
||||
`lshw` output is different for BIOS and coreboot.
|
||||
|
||||
```shell
|
||||
diff --side-by-side --ignore-all-space --strip-trailing-cr \
|
||||
Documentation/mainboard/gigabyte/ga-g41m-es2l_lshw_before_coreboot.txt \
|
||||
Documentation/mainboard/gigabyte/ga-g41m-es2l_lshw_after_coreboot.txt
|
||||
```
|
@ -0,0 +1,306 @@
|
||||
my-desktop
|
||||
description: Desktop Computer
|
||||
product: GA-G41M-ES2L
|
||||
vendor: GIGABYTE
|
||||
version: 1.0
|
||||
serial: 123456789
|
||||
width: 64 bits
|
||||
capabilities: smbios-3.0.0 dmi-3.0.0 smp vsyscall32
|
||||
configuration: boot=normal chassis=desktop
|
||||
*-core
|
||||
description: Motherboard
|
||||
product: GA-G41M-ES2L
|
||||
vendor: GIGABYTE
|
||||
physical id: 0
|
||||
version: 1.0
|
||||
serial: 123456789
|
||||
*-firmware
|
||||
description: BIOS
|
||||
vendor: coreboot
|
||||
physical id: 0
|
||||
version: 4.13-1531-g2fae1c0494
|
||||
date: 01/29/2021
|
||||
size: 1MiB
|
||||
capacity: 1MiB
|
||||
capabilities: pci pcmcia upgrade bootselect acpi
|
||||
*-cpu
|
||||
description: CPU
|
||||
product: Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz
|
||||
vendor: Intel Corp.
|
||||
physical id: 4
|
||||
bus info: cpu@0
|
||||
version: Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz
|
||||
slot: CPU0
|
||||
size: 2943MHz
|
||||
capacity: 3GHz
|
||||
width: 64 bits
|
||||
capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx x86-64 constant_tsc arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm pti tpr_shadow vnmi flexpriority vpid dtherm cpufreq
|
||||
*-cache
|
||||
description: L2 cache
|
||||
physical id: 7
|
||||
slot: CACHE2
|
||||
size: 6MiB
|
||||
capacity: 6MiB
|
||||
capabilities: internal unified
|
||||
configuration: level=2
|
||||
*-memory
|
||||
description: System memory
|
||||
physical id: 1
|
||||
size: 2GiB
|
||||
*-pci
|
||||
description: Host bridge
|
||||
product: 4 Series Chipset DRAM Controller
|
||||
vendor: Intel Corporation
|
||||
physical id: 100
|
||||
bus info: pci@0000:00:00.0
|
||||
version: 03
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
*-pci:0
|
||||
description: PCI bridge
|
||||
product: 4 Series Chipset PCI Express Root Port
|
||||
vendor: Intel Corporation
|
||||
physical id: 1
|
||||
bus info: pci@0000:00:01.0
|
||||
version: 03
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: pci pm msi pciexpress normal_decode bus_master cap_list
|
||||
configuration: driver=pcieport
|
||||
resources: irq:24
|
||||
*-display:0
|
||||
description: VGA compatible controller
|
||||
product: 4 Series Chipset Integrated Graphics Controller
|
||||
vendor: Intel Corporation
|
||||
physical id: 2
|
||||
bus info: pci@0000:00:02.0
|
||||
version: 03
|
||||
width: 64 bits
|
||||
clock: 33MHz
|
||||
capabilities: msi pm vga_controller bus_master cap_list rom
|
||||
configuration: driver=i915 latency=0
|
||||
resources: irq:16 memory:90000000-903fffff memory:80000000-8fffffff ioport:20a0(size=8) memory:c0000-dffff
|
||||
*-display:1 UNCLAIMED
|
||||
description: Display controller
|
||||
product: 4 Series Chipset Integrated Graphics Controller
|
||||
vendor: Intel Corporation
|
||||
physical id: 2.1
|
||||
bus info: pci@0000:00:02.1
|
||||
version: 03
|
||||
width: 64 bits
|
||||
clock: 33MHz
|
||||
capabilities: pm cap_list
|
||||
configuration: latency=0
|
||||
resources: memory:90400000-904fffff
|
||||
*-multimedia
|
||||
description: Audio device
|
||||
product: NM10/ICH7 Family High Definition Audio Controller
|
||||
vendor: Intel Corporation
|
||||
physical id: 1b
|
||||
bus info: pci@0000:00:1b.0
|
||||
version: 01
|
||||
width: 64 bits
|
||||
clock: 33MHz
|
||||
capabilities: pm msi pciexpress bus_master cap_list
|
||||
configuration: driver=snd_hda_intel latency=0
|
||||
resources: irq:28 memory:90700000-90703fff
|
||||
*-pci:1
|
||||
description: PCI bridge
|
||||
product: NM10/ICH7 Family PCI Express Port 1
|
||||
vendor: Intel Corporation
|
||||
physical id: 1c
|
||||
bus info: pci@0000:00:1c.0
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
|
||||
configuration: driver=pcieport
|
||||
resources: irq:25
|
||||
*-pci:2
|
||||
description: PCI bridge
|
||||
product: NM10/ICH7 Family PCI Express Port 2
|
||||
vendor: Intel Corporation
|
||||
physical id: 1c.1
|
||||
bus info: pci@0000:00:1c.1
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
|
||||
configuration: driver=pcieport
|
||||
resources: irq:26 ioport:1000(size=4096) memory:90600000-906fffff ioport:90500000(size=1048576)
|
||||
*-network
|
||||
description: Ethernet interface
|
||||
product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
|
||||
vendor: Realtek Semiconductor Co., Ltd.
|
||||
physical id: 0
|
||||
bus info: pci@0000:03:00.0
|
||||
logical name: eth0
|
||||
version: 02
|
||||
serial: 6c:f0:49:a3:e3:d5
|
||||
size: 1Gbit/s
|
||||
capacity: 1Gbit/s
|
||||
width: 64 bits
|
||||
clock: 33MHz
|
||||
capabilities: pm msi pciexpress msix vpd bus_master cap_list rom ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
|
||||
configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=5.10.0-2-amd64 duplex=full ip=192.168.155.136 latency=0 link=yes multicast=yes port=MII speed=1Gbit/s
|
||||
resources: irq:17 ioport:1000(size=256) memory:90510000-90510fff memory:90500000-9050ffff memory:90600000-9060ffff
|
||||
*-usb:0
|
||||
description: USB controller
|
||||
product: NM10/ICH7 Family USB UHCI Controller #1
|
||||
vendor: Intel Corporation
|
||||
physical id: 1d
|
||||
bus info: pci@0000:00:1d.0
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: uhci bus_master
|
||||
configuration: driver=uhci_hcd latency=0
|
||||
resources: irq:23 ioport:2000(size=32)
|
||||
*-usb:1
|
||||
description: USB controller
|
||||
product: NM10/ICH7 Family USB UHCI Controller #2
|
||||
vendor: Intel Corporation
|
||||
physical id: 1d.1
|
||||
bus info: pci@0000:00:1d.1
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: uhci bus_master
|
||||
configuration: driver=uhci_hcd latency=0
|
||||
resources: irq:19 ioport:2020(size=32)
|
||||
*-usb:2
|
||||
description: USB controller
|
||||
product: NM10/ICH7 Family USB UHCI Controller #3
|
||||
vendor: Intel Corporation
|
||||
physical id: 1d.2
|
||||
bus info: pci@0000:00:1d.2
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: uhci bus_master
|
||||
configuration: driver=uhci_hcd latency=0
|
||||
resources: irq:18 ioport:2040(size=32)
|
||||
*-usb:3
|
||||
description: USB controller
|
||||
product: NM10/ICH7 Family USB UHCI Controller #4
|
||||
vendor: Intel Corporation
|
||||
physical id: 1d.3
|
||||
bus info: pci@0000:00:1d.3
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: uhci bus_master
|
||||
configuration: driver=uhci_hcd latency=0
|
||||
resources: irq:16 ioport:2060(size=32)
|
||||
*-usb:4
|
||||
description: USB controller
|
||||
product: NM10/ICH7 Family USB2 EHCI Controller
|
||||
vendor: Intel Corporation
|
||||
physical id: 1d.7
|
||||
bus info: pci@0000:00:1d.7
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: pm debug ehci bus_master cap_list
|
||||
configuration: driver=ehci-pci latency=0
|
||||
resources: irq:23 memory:90704000-907043ff
|
||||
*-pci:3
|
||||
description: PCI bridge
|
||||
product: 82801 PCI Bridge
|
||||
vendor: Intel Corporation
|
||||
physical id: 1e
|
||||
bus info: pci@0000:00:1e.0
|
||||
version: e1
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: pci subtractive_decode bus_master cap_list
|
||||
*-isa
|
||||
description: ISA bridge
|
||||
product: 82801GB/GR (ICH7 Family) LPC Interface Bridge
|
||||
vendor: Intel Corporation
|
||||
physical id: 1f
|
||||
bus info: pci@0000:00:1f.0
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: isa bus_master cap_list
|
||||
configuration: driver=lpc_ich latency=0
|
||||
resources: irq:0
|
||||
*-ide:0
|
||||
description: IDE interface
|
||||
product: 82801G (ICH7 Family) IDE Controller
|
||||
vendor: Intel Corporation
|
||||
physical id: 1f.1
|
||||
bus info: pci@0000:00:1f.1
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: ide isa_compat_mode pci_native_mode bus_master
|
||||
configuration: driver=ata_piix latency=0
|
||||
resources: irq:18 ioport:1f0(size=8) ioport:3f6 ioport:170(size=8) ioport:376 ioport:2080(size=16)
|
||||
*-ide:1
|
||||
description: IDE interface
|
||||
product: NM10/ICH7 Family SATA Controller [IDE mode]
|
||||
vendor: Intel Corporation
|
||||
physical id: 1f.2
|
||||
bus info: pci@0000:00:1f.2
|
||||
logical name: scsi2
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 66MHz
|
||||
capabilities: ide pm isa_compat_mode pci_native_mode bus_master cap_list emulated
|
||||
configuration: driver=ata_piix latency=0
|
||||
resources: irq:19 ioport:20b8(size=8) ioport:20d0(size=4) ioport:20c0(size=8) ioport:20d4(size=4) ioport:2090(size=16)
|
||||
*-disk
|
||||
description: ATA Disk
|
||||
product: WDC WD5000BPVT-2
|
||||
vendor: Western Digital
|
||||
physical id: 0.0.0
|
||||
bus info: scsi@2:0.0.0
|
||||
logical name: /dev/sda
|
||||
version: 1A03
|
||||
serial: WD-WXD1E71MYND4
|
||||
size: 465GiB (500GB)
|
||||
capabilities: gpt-1.00 partitioned partitioned:gpt
|
||||
configuration: ansiversion=5 guid=868a1c85-f309-4f3d-8282-6b5c4c373275 logicalsectorsize=512 sectorsize=4096
|
||||
*-serial
|
||||
description: SMBus
|
||||
product: NM10/ICH7 Family SMBus Controller
|
||||
vendor: Intel Corporation
|
||||
physical id: 1f.3
|
||||
bus info: pci@0000:00:1f.3
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
configuration: driver=i801_smbus latency=0
|
||||
resources: irq:19 ioport:400(size=32)
|
||||
*-pnp00:00
|
||||
product: PnP device PNP0c02
|
||||
physical id: 2
|
||||
capabilities: pnp
|
||||
configuration: driver=system
|
||||
*-pnp00:01
|
||||
product: PnP device PNP0103
|
||||
physical id: 3
|
||||
capabilities: pnp
|
||||
configuration: driver=system
|
||||
*-pnp00:02
|
||||
product: PnP device PNP0c02
|
||||
physical id: 5
|
||||
capabilities: pnp
|
||||
configuration: driver=system
|
||||
*-pnp00:03
|
||||
product: PnP device PNP0b00
|
||||
physical id: 6
|
||||
capabilities: pnp
|
||||
configuration: driver=rtc_cmos
|
||||
*-pnp00:04
|
||||
product: PnP device PNP0303
|
||||
physical id: 7
|
||||
capabilities: pnp
|
||||
configuration: driver=i8042 kbd
|
||||
*-pnp00:05
|
||||
product: PnP device PNP0f13
|
||||
physical id: 8
|
||||
capabilities: pnp
|
||||
configuration: driver=i8042 aux
|
@ -0,0 +1,304 @@
|
||||
my-desktop
|
||||
description: Desktop Computer
|
||||
product: G41M-ES2L
|
||||
vendor: Gigabyte Technology Co., Ltd.
|
||||
width: 64 bits
|
||||
capabilities: smbios-2.4 dmi-2.4 smp vsyscall32
|
||||
configuration: boot=normal chassis=desktop uuid=00000000-0000-0000-0000-6CF049A3E3D5
|
||||
*-core
|
||||
description: Motherboard
|
||||
product: G41M-ES2L
|
||||
vendor: Gigabyte Technology Co., Ltd.
|
||||
physical id: 0
|
||||
*-firmware
|
||||
description: BIOS
|
||||
vendor: Award Software International, Inc.
|
||||
physical id: 0
|
||||
version: F9
|
||||
date: 06/21/2010
|
||||
size: 128KiB
|
||||
capacity: 1MiB
|
||||
capabilities: pci pnp apm upgrade shadowing cdboot bootselect edd int13floppy360 int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int9keyboard int14serial int17printer int10video acpi usb ls120boot zipboot biosbootspecification
|
||||
*-cpu
|
||||
description: CPU
|
||||
product: Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz
|
||||
vendor: Intel Corp.
|
||||
physical id: 4
|
||||
bus info: cpu@0
|
||||
version: Intel(R) Core(TM)2 Duo CPU
|
||||
slot: Socket 775
|
||||
size: 2631MHz
|
||||
capacity: 4GHz
|
||||
width: 64 bits
|
||||
clock: 333MHz
|
||||
capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx x86-64 constant_tsc arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm pti tpr_shadow vnmi flexpriority vpid dtherm cpufreq
|
||||
*-cache:0
|
||||
description: L1 cache
|
||||
physical id: a
|
||||
slot: Internal Cache
|
||||
size: 64KiB
|
||||
capacity: 64KiB
|
||||
capabilities: synchronous internal write-back
|
||||
configuration: level=1
|
||||
*-cache:1
|
||||
description: L2 cache
|
||||
physical id: b
|
||||
slot: External Cache
|
||||
size: 6MiB
|
||||
capabilities: synchronous internal write-back
|
||||
configuration: level=2
|
||||
*-memory
|
||||
description: System Memory
|
||||
physical id: 19
|
||||
slot: System board or motherboard
|
||||
size: 2GiB
|
||||
*-bank:0
|
||||
description: DIMM 800 MHz (1.2 ns)
|
||||
physical id: 0
|
||||
slot: A0
|
||||
size: 1GiB
|
||||
width: 64 bits
|
||||
clock: 800MHz (1.2ns)
|
||||
*-bank:1
|
||||
description: DIMM [empty]
|
||||
physical id: 1
|
||||
slot: A1
|
||||
*-bank:2
|
||||
description: DIMM 800 MHz (1.2 ns)
|
||||
physical id: 2
|
||||
slot: A2
|
||||
size: 1GiB
|
||||
width: 64 bits
|
||||
clock: 800MHz (1.2ns)
|
||||
*-bank:3
|
||||
description: DIMM [empty]
|
||||
physical id: 3
|
||||
slot: A3
|
||||
*-pci
|
||||
description: Host bridge
|
||||
product: 4 Series Chipset DRAM Controller
|
||||
vendor: Intel Corporation
|
||||
physical id: 100
|
||||
bus info: pci@0000:00:00.0
|
||||
version: 03
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
*-display
|
||||
description: VGA compatible controller
|
||||
product: 4 Series Chipset Integrated Graphics Controller
|
||||
vendor: Intel Corporation
|
||||
physical id: 2
|
||||
bus info: pci@0000:00:02.0
|
||||
version: 03
|
||||
width: 64 bits
|
||||
clock: 33MHz
|
||||
capabilities: msi pm vga_controller bus_master cap_list rom
|
||||
configuration: driver=i915 latency=0
|
||||
resources: irq:16 memory:fd800000-fdbfffff memory:d0000000-dfffffff ioport:ff00(size=8) memory:c0000-dffff
|
||||
*-multimedia
|
||||
description: Audio device
|
||||
product: NM10/ICH7 Family High Definition Audio Controller
|
||||
vendor: Intel Corporation
|
||||
physical id: 1b
|
||||
bus info: pci@0000:00:1b.0
|
||||
version: 01
|
||||
width: 64 bits
|
||||
clock: 33MHz
|
||||
capabilities: pm msi pciexpress bus_master cap_list
|
||||
configuration: driver=snd_hda_intel latency=0
|
||||
resources: irq:27 memory:fdff8000-fdffbfff
|
||||
*-pci:0
|
||||
description: PCI bridge
|
||||
product: NM10/ICH7 Family PCI Express Port 1
|
||||
vendor: Intel Corporation
|
||||
physical id: 1c
|
||||
bus info: pci@0000:00:1c.0
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
|
||||
configuration: driver=pcieport
|
||||
resources: irq:24 ioport:1000(size=4096) memory:7dd00000-7defffff ioport:80000000(size=2097152)
|
||||
*-pci:1
|
||||
description: PCI bridge
|
||||
product: NM10/ICH7 Family PCI Express Port 2
|
||||
vendor: Intel Corporation
|
||||
physical id: 1c.1
|
||||
bus info: pci@0000:00:1c.1
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
|
||||
configuration: driver=pcieport
|
||||
resources: irq:25 ioport:d000(size=4096) memory:fdd00000-fddfffff ioport:fde00000(size=1048576)
|
||||
*-network
|
||||
description: Ethernet interface
|
||||
product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
|
||||
vendor: Realtek Semiconductor Co., Ltd.
|
||||
physical id: 0
|
||||
bus info: pci@0000:02:00.0
|
||||
logical name: eth0
|
||||
version: 02
|
||||
serial: 6c:f0:49:a3:e3:d5
|
||||
size: 1Gbit/s
|
||||
capacity: 1Gbit/s
|
||||
width: 64 bits
|
||||
clock: 33MHz
|
||||
capabilities: pm msi pciexpress msix vpd bus_master cap_list rom ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
|
||||
configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=5.10.0-2-amd64 duplex=full ip=192.168.155.137 latency=0 link=yes multicast=yes port=MII speed=1Gbit/s
|
||||
resources: irq:17 ioport:de00(size=256) memory:fdeff000-fdefffff memory:fdee0000-fdeeffff memory:fdd00000-fdd0ffff
|
||||
*-usb:0
|
||||
description: USB controller
|
||||
product: NM10/ICH7 Family USB UHCI Controller #1
|
||||
vendor: Intel Corporation
|
||||
physical id: 1d
|
||||
bus info: pci@0000:00:1d.0
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: uhci bus_master
|
||||
configuration: driver=uhci_hcd latency=0
|
||||
resources: irq:23 ioport:fe00(size=32)
|
||||
*-usb:1
|
||||
description: USB controller
|
||||
product: NM10/ICH7 Family USB UHCI Controller #2
|
||||
vendor: Intel Corporation
|
||||
physical id: 1d.1
|
||||
bus info: pci@0000:00:1d.1
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: uhci bus_master
|
||||
configuration: driver=uhci_hcd latency=0
|
||||
resources: irq:19 ioport:fd00(size=32)
|
||||
*-usb:2
|
||||
description: USB controller
|
||||
product: NM10/ICH7 Family USB UHCI Controller #3
|
||||
vendor: Intel Corporation
|
||||
physical id: 1d.2
|
||||
bus info: pci@0000:00:1d.2
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: uhci bus_master
|
||||
configuration: driver=uhci_hcd latency=0
|
||||
resources: irq:18 ioport:fc00(size=32)
|
||||
*-usb:3
|
||||
description: USB controller
|
||||
product: NM10/ICH7 Family USB UHCI Controller #4
|
||||
vendor: Intel Corporation
|
||||
physical id: 1d.3
|
||||
bus info: pci@0000:00:1d.3
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: uhci bus_master
|
||||
configuration: driver=uhci_hcd latency=0
|
||||
resources: irq:16 ioport:fb00(size=32)
|
||||
*-usb:4
|
||||
description: USB controller
|
||||
product: NM10/ICH7 Family USB2 EHCI Controller
|
||||
vendor: Intel Corporation
|
||||
physical id: 1d.7
|
||||
bus info: pci@0000:00:1d.7
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: pm ehci bus_master cap_list
|
||||
configuration: driver=ehci-pci latency=0
|
||||
resources: irq:23 memory:fdfff000-fdfff3ff
|
||||
*-pci:2
|
||||
description: PCI bridge
|
||||
product: 82801 PCI Bridge
|
||||
vendor: Intel Corporation
|
||||
physical id: 1e
|
||||
bus info: pci@0000:00:1e.0
|
||||
version: e1
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: pci subtractive_decode cap_list
|
||||
*-isa
|
||||
description: ISA bridge
|
||||
product: 82801GB/GR (ICH7 Family) LPC Interface Bridge
|
||||
vendor: Intel Corporation
|
||||
physical id: 1f
|
||||
bus info: pci@0000:00:1f.0
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: isa bus_master cap_list
|
||||
configuration: driver=lpc_ich latency=0
|
||||
resources: irq:0
|
||||
*-ide:0
|
||||
description: IDE interface
|
||||
product: 82801G (ICH7 Family) IDE Controller
|
||||
vendor: Intel Corporation
|
||||
physical id: 1f.1
|
||||
bus info: pci@0000:00:1f.1
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
capabilities: ide isa_compat_mode pci_native_mode bus_master
|
||||
configuration: driver=ata_piix latency=0
|
||||
resources: irq:18 ioport:1f0(size=8) ioport:3f6 ioport:170(size=8) ioport:376 ioport:f800(size=16)
|
||||
*-ide:1
|
||||
description: IDE interface
|
||||
product: NM10/ICH7 Family SATA Controller [IDE mode]
|
||||
vendor: Intel Corporation
|
||||
physical id: 1f.2
|
||||
bus info: pci@0000:00:1f.2
|
||||
logical name: scsi2
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 66MHz
|
||||
capabilities: ide pm isa_compat_mode pci_native_mode bus_master cap_list emulated
|
||||
configuration: driver=ata_piix latency=0
|
||||
resources: irq:19 ioport:f700(size=8) ioport:f600(size=4) ioport:f500(size=8) ioport:f400(size=4) ioport:f300(size=16)
|
||||
*-disk
|
||||
description: ATA Disk
|
||||
product: WDC WD5000BPVT-2
|
||||
vendor: Western Digital
|
||||
physical id: 0.0.0
|
||||
bus info: scsi@2:0.0.0
|
||||
logical name: /dev/sda
|
||||
version: 1A03
|
||||
serial: WD-WXD1E71MYND4
|
||||
size: 465GiB (500GB)
|
||||
capabilities: gpt-1.00 partitioned partitioned:gpt
|
||||
configuration: ansiversion=5 guid=868a1c85-f309-4f3d-8282-6b5c4c373275 logicalsectorsize=512 sectorsize=4096
|
||||
*-serial
|
||||
description: SMBus
|
||||
product: NM10/ICH7 Family SMBus Controller
|
||||
vendor: Intel Corporation
|
||||
physical id: 1f.3
|
||||
bus info: pci@0000:00:1f.3
|
||||
version: 01
|
||||
width: 32 bits
|
||||
clock: 33MHz
|
||||
configuration: driver=i801_smbus latency=0
|
||||
resources: irq:19 ioport:500(size=32)
|
||||
*-pnp00:00
|
||||
product: PnP device PNP0c02
|
||||
physical id: 1
|
||||
capabilities: pnp
|
||||
configuration: driver=system
|
||||
*-pnp00:01
|
||||
product: PnP device PNP0b00
|
||||
physical id: 2
|
||||
capabilities: pnp
|
||||
configuration: driver=rtc_cmos
|
||||
*-pnp00:02
|
||||
product: PnP device PNP0c02
|
||||
physical id: 3
|
||||
capabilities: pnp
|
||||
configuration: driver=system
|
||||
*-pnp00:03
|
||||
product: PnP device PNP0c02
|
||||
physical id: 5
|
||||
capabilities: pnp
|
||||
configuration: driver=system
|
||||
*-pnp00:04
|
||||
product: PnP device PNP0c01
|
||||
physical id: 6
|
||||
capabilities: pnp
|
||||
configuration: driver=system
|
99
Documentation/mainboard/hp/2560p.md
Normal file
@ -0,0 +1,99 @@
|
||||
# HP EliteBook 2560p
|
||||
|
||||
This page is about the notebook [HP EliteBook 2560p].
|
||||
|
||||
## Release status
|
||||
|
||||
HP EliteBook 2560p was released in 2011 and is now end of life.
|
||||
It can be bought from a secondhand market like Taobao or eBay.
|
||||
|
||||
## Required proprietary blobs
|
||||
|
||||
The following blobs are required to operate the hardware:
|
||||
1. EC firmware
|
||||
2. Intel ME firmware
|
||||
|
||||
EC firmware can be retrieved from the HP firmware update image, or the firmware
|
||||
backup of the laptop. EC Firmware is part of the coreboot build process.
|
||||
The guide on extracting EC firmware and using it to build coreboot is in
|
||||
document [HP Laptops with KBC1126 Embedded Controller](hp_kbc1126_laptops).
|
||||
|
||||
Intel ME firmware is in the flash chip. It is not needed when building coreboot.
|
||||
|
||||
## Programming
|
||||
|
||||
The flash chip is located between the memory slots and the PCH,
|
||||
covered by the base enclosure, which needs to be removed according to
|
||||
the [Maintenance and Service Guide] to access the flash chip. An SPI
|
||||
flash programmer using 3.3V voltage such as a ch341a programmer, and
|
||||
an SOIC-8 clip can be used to read and flash the chip in-circuit.
|
||||
|
||||
Pin 1 of the flash chip is at the side near the PCH.
|
||||
|
||||

|
||||
|
||||
For more details have a look at the general [flashing tutorial].
|
||||
|
||||
## Debugging
|
||||
|
||||
The board can be debugged with EHCI debug. The EHCI debug port is the back
|
||||
bottom USB port.
|
||||
|
||||
Schematic of this laptop can be found on [Lab One].
|
||||
|
||||
## Test status
|
||||
|
||||
### Known issues
|
||||
|
||||
- GRUB payload freezes if at_keyboard module is in the GRUB image
|
||||
([bug #141])
|
||||
|
||||
### Untested
|
||||
|
||||
- Optical Drive
|
||||
- VGA
|
||||
- Fingerprint Reader
|
||||
- Modem
|
||||
|
||||
### Working
|
||||
|
||||
- Integrated graphics init with libgfxinit
|
||||
- SATA
|
||||
- Audio: speaker and microphone
|
||||
- Ethernet
|
||||
- WLAN
|
||||
- WWAN
|
||||
- Bluetooth
|
||||
- ExpressCard
|
||||
- SD Card Reader
|
||||
- SmartCard Reader
|
||||
- eSATA
|
||||
- USB
|
||||
- DisplayPort
|
||||
- Keyboard, touchpad and trackpoint
|
||||
- EC ACPI support and thermal control
|
||||
- Dock: all USB ports, DisplayPort, eSATA
|
||||
- TPM
|
||||
- Internal flashing when IFD is unlocked
|
||||
- Using `me_cleaner`
|
||||
|
||||
|
||||
## Technology
|
||||
|
||||
```eval_rst
|
||||
+------------------+--------------------------------------------------+
|
||||
| CPU | Intel Sandy/Ivy Bridge (FCPGA988) |
|
||||
+------------------+--------------------------------------------------+
|
||||
| PCH | Intel Cougar Point QM67 |
|
||||
+------------------+--------------------------------------------------+
|
||||
| EC | SMSC KBC1126 |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Coprocessor | Intel Management Engine |
|
||||
+------------------+--------------------------------------------------+
|
||||
```
|
||||
|
||||
[HP EliteBook 2560p]: https://support.hp.com/us-en/product/hp-elitebook-2560p-notebook-pc/5071201
|
||||
[Maintenance and Service Guide]: http://h10032.www1.hp.com/ctg/Manual/c03011618
|
||||
[flashing tutorial]: ../../flash_tutorial/ext_power.md
|
||||
[Lab One]: https://www.laboneinside.com/hp-elitebook-2560p-schematic-diagram/
|
||||
[bug #141]: https://ticket.coreboot.org/issues/141
|
BIN
Documentation/mainboard/hp/2560p_flash.webp
Normal file
After Width: | Height: | Size: 26 KiB |
@ -36,7 +36,7 @@ checkout the [code on gerrit] to build coreboot for the laptop.
|
||||
|
||||
## Flashing instructions
|
||||
|
||||
HP EliteBook 8760w has an 8MB SOIC-8 flash chip on the bottom of the
|
||||
HP EliteBook 8760w has an 8 MiB SOIC-8 flash chip on the bottom of the
|
||||
mainboard. You just need to remove the service cover, and use an SOIC-8
|
||||
clip to read and flash the chip.
|
||||
|
||||
|
156
Documentation/mainboard/hp/folio_9480m.md
Normal file
@ -0,0 +1,156 @@
|
||||
# HP EliteBook Folio 9480m
|
||||
|
||||
This page is about the notebook [HP EliteBook Folio 9480m].
|
||||
|
||||
## Release status
|
||||
|
||||
HP EliteBook Folio 9480m was released in 2014 and is now end of life.
|
||||
It can be bought from a secondhand market like Taobao or eBay.
|
||||
|
||||
## Required proprietary blobs
|
||||
|
||||
The following blobs are required to operate the hardware:
|
||||
|
||||
1. EC firmware
|
||||
2. Intel ME firmware
|
||||
3. mrc.bin
|
||||
|
||||
HP EliteBook Folio 9480m uses SMSC MEC1322 as its embedded controller.
|
||||
The EC firmware is stored in the flash chip, but we don't need to touch it
|
||||
or use it in the coreboot build process.
|
||||
|
||||
Intel ME firmware is in the flash chip. It is not needed when building coreboot.
|
||||
|
||||
The Haswell memory reference code binary is needed when building coreboot.
|
||||
Please see [mrc.bin](../../northbridge/intel/haswell/mrc.bin).
|
||||
|
||||
## Programming
|
||||
|
||||
Before flashing, remove the battery and the hard drive cover according to the
|
||||
[Maintenance and Service Guide] of this laptop.
|
||||
|
||||

|
||||
|
||||
HP EliteBook Folio 9480m has two flash chips, a 16MiB system flash, and a 2MiB
|
||||
private flash. To install coreboot, we need to program both flash chips.
|
||||
Read [HP Sure Start] for detailed information.
|
||||
|
||||
To access the system flash, we need to connect the AC adapter to the machine,
|
||||
then clip on the flash chip with an SOIC-8 clip. An [STM32-based flash programmer]
|
||||
made with an STM32 development board is tested to work.
|
||||
|
||||
To access the private flash chip, we can use a ch341a based flash programmer and
|
||||
flash the chip with the AC adapter disconnected.
|
||||
|
||||
Before flashing coreboot, we need to do the following:
|
||||
|
||||
1. Erase the private flash to disable the IFD protection
|
||||
2. Modify the IFD to shrink the BIOS region, so that we'll not use or override
|
||||
the protected bootblock and PEI region, as well as the EC firmware
|
||||
|
||||
To erase the private flash chip, attach it with the flash programmer via the SOIC-8 clip,
|
||||
then run:
|
||||
|
||||
flashrom -p <programmer> --erase
|
||||
|
||||
To modify the IFD, we need a new flash layout. The flash layout of the OEM firmware is:
|
||||
|
||||
00000000:00000fff fd
|
||||
00001000:00002fff gbe
|
||||
00003000:005fffff me
|
||||
00600000:00ffffff bios
|
||||
|
||||
The default coreboot configuration sets the flash chip size to 12MiB, so set the end of the
|
||||
BIOS region to 0xbfffff in the new layout. The modified IFD is as follows (Platform Data
|
||||
region pd is the region protected by HP Sure Start):
|
||||
|
||||
00000000:00000fff fd
|
||||
00001000:00002fff gbe
|
||||
00003000:005fffff me
|
||||
00600000:00bfffff bios
|
||||
00eb5000:00ffffff pd
|
||||
|
||||
Write the above layout in a file, and use ifdtool to modify the IFD of a flash image.
|
||||
Suppose the above layout file is ``layout.txt`` and the origin content of the system flash
|
||||
is in ``factory-sys.rom``, run:
|
||||
|
||||
ifdtool -n layout.txt factory-sys.rom
|
||||
|
||||
Then a flash image with a new IFD will be in ``factory-sys.rom.new``.
|
||||
|
||||
Flash the IFD of the system flash:
|
||||
|
||||
flashrom -p <programmer> --ifd -i fd -w factory-sys.rom.new
|
||||
|
||||
Then flash the coreboot image:
|
||||
|
||||
# first extend the 12M coreboot.rom to 16M
|
||||
fallocate -l 16M build/coreboot.rom
|
||||
flashrom -p <programmer> --ifd -i bios -w build/coreboot.rom
|
||||
|
||||
After coreboot is installed, the coreboot firmware can be updated with internal flashing:
|
||||
|
||||
flashrom -p internal --ifd -i bios --noverify-all -w build/coreboot.rom
|
||||
|
||||
## Debugging
|
||||
|
||||
The board can be debugged with EHCI debug. The EHCI debug port is the USB port on the left.
|
||||
|
||||
## Test status
|
||||
|
||||
### Known issues
|
||||
|
||||
- GRUB payload freezes just like previous EliteBook laptops
|
||||
- Sometimes the PCIe WLAN module can not be found in the OS after booting to the system
|
||||
- Sometimes all the USB devices can not be found in the OS after S3 resume
|
||||
|
||||
### Untested
|
||||
|
||||
- Fingerprint reader
|
||||
- Smart Card reader
|
||||
|
||||
### Working
|
||||
|
||||
- i5-4310U CPU with 4G+4G memory
|
||||
- SATA and M.2 SATA disk
|
||||
- Ethernet
|
||||
- WLAN
|
||||
- WWAN
|
||||
- SD card reader
|
||||
- USB
|
||||
- Keyboard and touchpad
|
||||
- DisplayPort
|
||||
- VGA
|
||||
- Dock
|
||||
- Audio output from speaker and headphone jack
|
||||
- Webcam
|
||||
- TPM
|
||||
- EC ACPI
|
||||
- S3 resume
|
||||
- Arch Linux with Linux 5.8.9
|
||||
- Memory initialization with mrc.bin version 1.6.1 Build 2
|
||||
- Graphics initialization with libgfxinit
|
||||
- Payload: SeaBIOS, Tianocore
|
||||
- EC firmware
|
||||
- KBC Revision 92.15 from OEM firmware version 01.33
|
||||
- KBC Revision 92.17 from OEM firmware version 01.50
|
||||
- Internal flashing under coreboot
|
||||
|
||||
## Technology
|
||||
|
||||
```eval_rst
|
||||
+------------------+-----------------------------+
|
||||
| CPU | Intel Haswell-ULT |
|
||||
+------------------+-----------------------------+
|
||||
| PCH | Intel Lynx Point Low Power |
|
||||
+------------------+-----------------------------+
|
||||
| EC | SMSC MEC1322 |
|
||||
+------------------+-----------------------------+
|
||||
| Coprocessor | Intel Management Engine |
|
||||
+------------------+-----------------------------+
|
||||
```
|
||||
|
||||
[HP EliteBook Folio 9480m]: https://support.hp.com/us-en/product/hp-elitebook-folio-9480m-notebook-pc/7089926
|
||||
[Maintenance and Service Guide]: http://h10032.www1.hp.com/ctg/Manual/c05228980
|
||||
[STM32-based flash programmer]: https://github.com/dword1511/stm32-vserprog
|
||||
[HP Sure Start]: hp_sure_start.md
|
BIN
Documentation/mainboard/hp/folio_9480m_flash.webp
Normal file
After Width: | Height: | Size: 39 KiB |
60
Documentation/mainboard/hp/hp_sure_start.md
Normal file
@ -0,0 +1,60 @@
|
||||
# HP Sure Start
|
||||
|
||||
According to the [HP Sure Start Technical Whitepaper], HP Sure Start is a chipset
|
||||
and processor independent firmware intrusion detection and automatic repair system.
|
||||
It is implemented in HP notebooks since 2013, and desktops since 2015.
|
||||
|
||||
This document talks about some mechanism of HP Sure Start on some machines, and
|
||||
the method to bypass it.
|
||||
|
||||
## Laptops with SMSC MEC1322 embedded controller
|
||||
|
||||
Haswell EliteBook, ZBook and ProBook 600 series use SMSC MEC1322 embedded controller.
|
||||
The EC firmware implements HP Sure Start.
|
||||
|
||||
A Haswell EliteBook has two flash chips. According to the strings in the EC firmware,
|
||||
the 16MiB flash chip that stores the BIOS firmware is called the *system flash*, and
|
||||
the 2MiB flash chip that stores part of the system flash content is called the
|
||||
*private flash*. A Haswell ProBook 600 series laptop also uses MEC1322 and has similar
|
||||
EC firmware, but the HP Sure Start functions are not enabled.
|
||||
|
||||
The private flash is connected to the EC, and is not accessible by the OS.
|
||||
It contains the following:
|
||||
|
||||
- HP Sure Start policy header (starting with the string "POLI")
|
||||
- A copy of the Intel Flash Descriptor
|
||||
- A copy of the GbE firmware
|
||||
- Machine Unique Data (MUD)
|
||||
- Hashes of the IFD, GbE firmware and MUD, the hash algorithm is unknown
|
||||
- A copy of the bootblock, UEFI PEI stage, and microcode
|
||||
|
||||
If the IFD of the system flash does not match the hash in the private flash, for example,
|
||||
modifying the IFD with ``ifdtool -u`` or ``me_cleaner -S``, the EC will recover the IFD.
|
||||
|
||||
If the content of the private flash is lost, the EC firmware will still copy the IFD,
|
||||
bootblock and PEI to the private flash. However, the IFD is not protected after that.
|
||||
|
||||
HP Sure Start also verifies bootblock, PEI, and microcode without using the private flash.
|
||||
EC firmware reads them from an absolute address of the system flash chip, which is
|
||||
hardcoded in the EC firmware. It looks like this verification is done with a digital
|
||||
signature. If the PEI volume is modified, EC firmware will recover it using the copy
|
||||
in the private flash. If the private flash has no valid copies of the PEI volume, and
|
||||
the PEI volume is modified, the machine will refuse to boot with the CapsLock LED blinking.
|
||||
|
||||
## Bypassing HP Sure Start
|
||||
|
||||
First search the mainboard for the flash chips. If there are two flash chips,
|
||||
the smaller one may be the private flash.
|
||||
|
||||
For Intel boards, try to modify the IFD with ``ifdtool -u``, power on and shut down
|
||||
the machine, then read the flash again. If the IFD is not modified, it is likely to
|
||||
be recovered from the private flash. Find the private flash and erase it, then the IFD
|
||||
can be modified.
|
||||
|
||||
To bypass the bootblock and PEI verification, we can modify the IFD to make the
|
||||
BIOS region not overlap with the protected region. Since the EC firmware is usually
|
||||
located at the high address of the flash chip (and in the protected region),
|
||||
we can leave it untouched, and do not need to extract the EC firmware to put it in
|
||||
the coreboot image.
|
||||
|
||||
[HP Sure Start Technical Whitepaper]: http://h10032.www1.hp.com/ctg/Manual/c05163901
|
@ -16,6 +16,7 @@ This section contains documentation about coreboot on specific mainboards.
|
||||
|
||||
## ASUS
|
||||
|
||||
- [A88XM-E](asus/a88xm-e.md)
|
||||
- [F2A85-M](asus/f2a85-m.md)
|
||||
- [P5Q](asus/p5q.md)
|
||||
- [P8H61-M LX](asus/p8h61-m_lx.md)
|
||||
@ -26,6 +27,10 @@ This section contains documentation about coreboot on specific mainboards.
|
||||
|
||||
- [CN81XX EVB SFF](cavium/cn8100_sff_evb.md)
|
||||
|
||||
## Clevo
|
||||
|
||||
- [N130WU / N131WU](clevo/n130wu/index.md)
|
||||
|
||||
## Dell
|
||||
|
||||
- [OptiPlex 9010 SFF](dell/optiplex_9010.md)
|
||||
@ -37,6 +42,8 @@ The boards in this section are not real mainboards, but emulators.
|
||||
- [Spike RISC-V emulator](emulation/spike-riscv.md)
|
||||
- [Qemu RISC-V emulator](emulation/qemu-riscv.md)
|
||||
- [Qemu AArch64 emulator](emulation/qemu-aarch64.md)
|
||||
- [Qemu x86 Q35](emulation/qemu-q35.md)
|
||||
- [Qemu x86 PC](emulation/qemu-i440fx.md)
|
||||
|
||||
## Facebook
|
||||
|
||||
@ -49,6 +56,7 @@ The boards in this section are not real mainboards, but emulators.
|
||||
|
||||
## Gigabyte
|
||||
|
||||
- [GA-G41M-ES2L](gigabyte/ga-g41m-es2l.md)
|
||||
- [GA-H61M-S2PV](gigabyte/ga-h61m-s2pv.md)
|
||||
|
||||
## HP
|
||||
@ -59,7 +67,10 @@ The boards in this section are not real mainboards, but emulators.
|
||||
### EliteBook series
|
||||
|
||||
- [HP Laptops with KBC1126 EC](hp/hp_kbc1126_laptops.md)
|
||||
- [HP Sure Start](hp/hp_sure_start.md)
|
||||
- [EliteBook 2560p](hp/2560p.md)
|
||||
- [EliteBook 8760w](hp/8760w.md)
|
||||
- [EliteBook Folio 9480m](hp/folio_9480m.md)
|
||||
|
||||
## Intel
|
||||
|
||||
@ -67,6 +78,10 @@ The boards in this section are not real mainboards, but emulators.
|
||||
- [IceLake RVP](intel/icelake_rvp.md)
|
||||
- [KBLRVP11](intel/kblrvp11.md)
|
||||
|
||||
## Kontron
|
||||
|
||||
- [mAL-10](kontron/mal10.md)
|
||||
|
||||
## Lenovo
|
||||
|
||||
- [Mainboard codenames](lenovo/codenames.md)
|
||||
@ -76,15 +91,15 @@ The boards in this section are not real mainboards, but emulators.
|
||||
- [X2xx common](lenovo/x2xx_series.md)
|
||||
- [vboot](lenovo/vboot.md)
|
||||
|
||||
### Arrandale series
|
||||
|
||||
- [T410](lenovo/t410.md)
|
||||
|
||||
### GM45 series
|
||||
|
||||
- [X200 / T400 / T500 / X301 common](lenovo/montevina_series.md)
|
||||
- [X301](lenovo/x301.md)
|
||||
|
||||
### Arrandale series
|
||||
|
||||
- [T410](lenovo/t410.md)
|
||||
|
||||
### Sandy Bridge series
|
||||
|
||||
- [T420](lenovo/t420.md)
|
||||
@ -115,6 +130,7 @@ The boards in this section are not real mainboards, but emulators.
|
||||
|
||||
## OCP
|
||||
|
||||
- [Delta Lake](ocp/deltalake.md)
|
||||
- [Tioga Pass](ocp/tiogapass.md)
|
||||
|
||||
## Open Cellular
|
||||
@ -135,6 +151,10 @@ The boards in this section are not real mainboards, but emulators.
|
||||
|
||||
- [Hermes](prodrive/hermes.md)
|
||||
|
||||
## Purism
|
||||
|
||||
- [Librem Mini](purism/librem_mini.md)
|
||||
|
||||
## Protectli
|
||||
|
||||
- [FW2B / FW4B](protectli/fw2b_fw4b.md)
|
||||
@ -156,7 +176,14 @@ The boards in this section are not real mainboards, but emulators.
|
||||
|
||||
## System76
|
||||
|
||||
- [Gazelle 15](system76/gaze15.md)
|
||||
- [Lemur Pro](system76/lemp9.md)
|
||||
- [Oryx Pro 5](system76/oryp5.md)
|
||||
- [Oryx Pro 6](system76/oryp6.md)
|
||||
|
||||
## Texas Instruments
|
||||
|
||||
- [Beaglebone Black](ti/beaglebone-black.md)
|
||||
|
||||
## UP
|
||||
|
||||
|
@ -60,7 +60,7 @@ $ flashrom -p internal --ifd -i bios -w coreboot.rom --noverify-all
|
||||
2. Make sure power supply is disconnected from board.
|
||||
3. Connect Dediprog SF600 to header at J7H1.
|
||||
4. Ensure that "currently working on" is in "application memory chip 1"
|
||||
5. Go to "file" and select the .rom file (16 MB) to program chip1.
|
||||
5. Go to "file" and select the .rom file (16 MiB) to program chip1.
|
||||
6. Execute the batch operation to erase and program the chip.
|
||||
|
||||
## Technology
|
||||
|
106
Documentation/mainboard/kontron/mal10.md
Normal file
@ -0,0 +1,106 @@
|
||||
# Kontron mAL10 Computer-on-Modules platform
|
||||
|
||||
The Kontron [mAL10] COMe is a credit card sized Computer-on-Modules
|
||||
platform based on the Intel Atom E3900 Series, Pentium and Celeron
|
||||
processors.
|
||||
|
||||
## Technology
|
||||
|
||||
```eval_rst
|
||||
+------------------+----------------------------------+
|
||||
| COMe Type | mini pin-out type 10 |
|
||||
+------------------+----------------------------------+
|
||||
| SoC | Intel Atom x5-E3940 (4 core) |
|
||||
+------------------+----------------------------------+
|
||||
| GPU | Intel HD Graphics 500 |
|
||||
+------------------+----------------------------------+
|
||||
| Coprocessor | Intel TXE 3.0 |
|
||||
+------------------+----------------------------------+
|
||||
| RAM | 8GB DDR3L |
|
||||
+------------------+----------------------------------+
|
||||
| eMMC Flash | 32GB eMMC pSLC |
|
||||
+------------------+----------------------------------+
|
||||
| USB3 | x2 |
|
||||
+------------------+----------------------------------+
|
||||
| USB2 | x6 |
|
||||
+------------------+----------------------------------+
|
||||
| SATA | x2 |
|
||||
+------------------+----------------------------------+
|
||||
| LAN | Intel I210IT, I211AT |
|
||||
+------------------+----------------------------------+
|
||||
| Super IO/EC | Kontron CPLD/EC |
|
||||
+------------------+----------------------------------+
|
||||
| HWM | NCT7802 |
|
||||
+------------------+----------------------------------+
|
||||
```
|
||||
|
||||
## Building coreboot
|
||||
|
||||
The following commands will build a working image:
|
||||
|
||||
```bash
|
||||
make distclean
|
||||
make defconfig KBUILD_DEFCONFIG=configs/config.kontron_mal10
|
||||
make
|
||||
```
|
||||
## Payloads
|
||||
- SeaBIOS
|
||||
- Tianocore
|
||||
- Linux as payload
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
The SPI flash can be accessed internally using [flashrom].
|
||||
The following command is used to flash BIOS region.
|
||||
|
||||
```bash
|
||||
$ flashrom -p internal --ifd -i bios -w coreboot.rom --noverify-all
|
||||
```
|
||||
|
||||
## Hardware Monitor
|
||||
|
||||
The Nuvoton [NCT7802Y] is a hardware monitoring IC, capable of monitor critical
|
||||
system parameters including power supply voltages, fan speeds, and temperatures.
|
||||
The remote inputs can be connected to CPU/GPU thermal diode or any thermal diode
|
||||
sensors and thermistor.
|
||||
|
||||
- 6 temperature sensors;
|
||||
- 5 voltage sensors;
|
||||
- 3 fan speed sensors;
|
||||
- 4 sets of temperature setting points.
|
||||
|
||||
PECI is not supported by Apollo Lake Pentium/Celeron/Atom processors and the CPU
|
||||
temperature value is taken from a thermal resistor (NTC) that is placed very
|
||||
close to the CPU.
|
||||
|
||||
## Known issues
|
||||
|
||||
- Works only with Tianocore "UEFIPayload" payload edk2-stable201903-1569-g3e63a91
|
||||
Booting with the "CorebootPayload" [crashes].
|
||||
- Tianocore outputs video through an external GPU only.
|
||||
|
||||
## Untested
|
||||
|
||||
- IGD/LVDS
|
||||
- SDIO
|
||||
|
||||
## Tested and working
|
||||
|
||||
- Kontron CPLD/EC (Serial ports, I2C port)
|
||||
- NCT7802 [HWM](#Hardware Monitor)
|
||||
- USB2/3
|
||||
- Gigabit Ethernet ports
|
||||
- eMMC
|
||||
- SATA
|
||||
- PCIe ports
|
||||
- IGD/DP
|
||||
|
||||
## TODO
|
||||
- Onboard audio (codec IDT 92HD73C1X5, currently disabled)
|
||||
- S3 suspend/resume
|
||||
|
||||
[mAL10]: https://www.kontron.com/products/iot/iot-industry-4.0/iot-ready-boards-and-modules/com-express/com-express-mini/come-mal10-e2-.html
|
||||
[W25Q128FV]: https://www.winbond.com/resource-files/w25q128fv%20rev.m%2005132016%20kms.pdf
|
||||
[flashrom]: https://flashrom.org/Flashrom
|
||||
[NCT7802Y]: https://www.nuvoton.com/products/cloud-computing/hardware-monitors/desktop-server-series/nct7802y/?__locale=en
|
||||
[crashes]: https://pastebin.com/cpCfrPCL
|
@ -25,7 +25,7 @@ This information is valid for all supported models, except T430s, [T431s](t431s.
|
||||
|
||||
## Installation instructions
|
||||
* Update the EC firmware, as there's no support for EC updates in coreboot.
|
||||
* Do **NOT** accidently swap pins or power on the board while a SPI flasher
|
||||
* Do **NOT** accidentally swap pins or power on the board while a SPI flasher
|
||||
is connected. It will permanently brick your device.
|
||||
* It's recommended to only flash the BIOS region. In that case you don't
|
||||
need to extract blobs from vendor firmware.
|
||||
|
@ -22,8 +22,12 @@
|
||||
```
|
||||
|
||||
## Installation instructions
|
||||
|
||||
Flashing coreboot for the first time needs to be done using an external
|
||||
programmer, because vendor firmware prevents rewriting the BIOS region.
|
||||
|
||||
* Update the EC firmware, as there's no support for EC updates in coreboot.
|
||||
* Do **NOT** accidently swap pins or power on the board while a SPI flasher
|
||||
* Do **NOT** accidentally swap pins or power on the board while a SPI flasher
|
||||
is connected. It will destroy your device.
|
||||
* It's recommended to only flash the BIOS region. In that case you don't
|
||||
need to extract blobs from vendor firmware.
|
||||
|
@ -9,6 +9,15 @@ the chip in your machine through flashrom:
|
||||
Note that this does not allow you to determine whether the chip is in a SOIC-8
|
||||
or a SOIC-16 package.
|
||||
|
||||
## Installing with ME firmware
|
||||
|
||||
To install coreboot and keep ME working, you don't need to do anything special
|
||||
with the flash descriptor. Only flash the `bios` region externally and don't
|
||||
touch any other regions:
|
||||
```console
|
||||
# flashrom -p YOUR_PROGRAMMER -w coreboot.rom --ifd -i bios
|
||||
```
|
||||
|
||||
## Installing without ME firmware
|
||||
|
||||
```eval_rst
|
||||
@ -35,7 +44,7 @@ $ ifdtool -x backup.rom
|
||||
|
||||
Now you need to patch the flash descriptor. You can either [modify the one from
|
||||
your backup with **ifdtool**](#modifying-flash-descriptor-using-ifdtool), or
|
||||
[generate a completely new one with **bincfg**](#creating-a-new-flash-descriptor-using-bincfg).
|
||||
[use one from the coreboot repository](#using-checked-in-flash-descriptor-via-bincfg).
|
||||
|
||||
#### Modifying flash descriptor using ifdtool
|
||||
|
||||
@ -44,13 +53,13 @@ the `new_layout.txt` file:
|
||||
|
||||
```eval_rst
|
||||
+---------------------------+---------------------------+---------------------------+
|
||||
| 4 MB chip | 8 MB chip | 16 MB chip |
|
||||
| 4 MiB chip | 8 MiB chip | 16 MiB chip |
|
||||
+===========================+===========================+===========================+
|
||||
| .. code-block:: none | .. code-block:: none | .. code-block:: none |
|
||||
| | | |
|
||||
| 00000000:00000fff fd | 00000000:00000fff fd | 00000000:00000fff fd |
|
||||
| 00001000:00002fff gbe | 00001000:00002fff gbe | 00001000:00002fff gbe |
|
||||
| 00003000:003fffff bios | 00003000:007fffff bios | 00003000:01ffffff bios |
|
||||
| 00003000:003fffff bios | 00003000:007fffff bios | 00003000:00ffffff bios |
|
||||
| 00fff000:00000fff pd | 00fff000:00000fff pd | 00fff000:00000fff pd |
|
||||
| 00fff000:00000fff me | 00fff000:00000fff me | 00fff000:00000fff me |
|
||||
+---------------------------+---------------------------+---------------------------+
|
||||
@ -79,33 +88,37 @@ $ mv flashregion_0_flashdescriptor.bin.new.new flashregion_0_flashdescriptor.bin
|
||||
|
||||
Continue to the [Configuring coreboot](#configuring-coreboot) section.
|
||||
|
||||
#### Creating a new flash descriptor using bincfg
|
||||
#### Using checked-in flash descriptor via bincfg
|
||||
|
||||
There is a tool to generate a modified flash descriptor called **bincfg**. Go to
|
||||
`util/bincfg` and build it:
|
||||
There is a copy of an X200's flash descriptor checked into the coreboot
|
||||
repository. It is supposed to work for the T400/T500 as well. The descriptor
|
||||
can be converted back to its binary form using a tool called **bincfg**. Go
|
||||
to `util/bincfg` and build it:
|
||||
```console
|
||||
$ cd util/bincfg
|
||||
$ make
|
||||
```
|
||||
|
||||
If your flash is not 8 MB, you need to change values of `flcomp_density1` and
|
||||
`flreg1_limit` in the ifd-x200.set file according to following table:
|
||||
If your flash is not 8 MiB, you need to change values of `flcomp_density1` and
|
||||
`flreg1_limit` in the `ifd-x200.set` file according to following table:
|
||||
|
||||
```eval_rst
|
||||
+-----------------+-------+-------+--------+
|
||||
| | 4 MB | 8 MB | 16 MB |
|
||||
| | 4 MiB | 8 MiB | 16 MiB |
|
||||
+=================+=======+=======+========+
|
||||
| flcomp_density1 | 0x3 | 0x4 | 0x5 |
|
||||
+-----------------+-------+-------+--------+
|
||||
| flreg1_limit | 0x3ff | 0x7ff | 0x1fff |
|
||||
| flreg1_limit | 0x3ff | 0x7ff | 0xfff |
|
||||
+-----------------+-------+-------+--------+
|
||||
```
|
||||
|
||||
Then create the flash descriptor:
|
||||
Then convert the flash descriptor:
|
||||
```console
|
||||
$ ./bincfg ifd-x200.spec ifd-x200.set ifd.bin
|
||||
$ make gen-ifd-x200
|
||||
```
|
||||
|
||||
It will be saved to the `flashregion_0_fd.bin` file.
|
||||
|
||||
#### Configuring coreboot
|
||||
|
||||
Now configure coreboot. You need to select correct chip size and specify paths
|
||||
@ -114,11 +127,11 @@ to flash descriptor and gbe dump.
|
||||
```
|
||||
Mainboard --->
|
||||
ROM chip size (8192 KB (8 MB)) # According to your chip
|
||||
(0x7fd000) Size of CBFS filesystem in ROM # or 0x3fd000 for 4 MB chip / 0x1ffd000 for 16 MB chip
|
||||
(0x7fd000) Size of CBFS filesystem in ROM # or 0x3fd000 for 4 MiB chip / 0xffd000 for 16 MiB chip
|
||||
|
||||
Chipset --->
|
||||
[*] Add Intel descriptor.bin file
|
||||
# Note: if you used bincfg, specify path to generated util/bincfg/ifd.bin
|
||||
# Note: if you used bincfg, specify path to generated util/bincfg/flashregion_0_fd.bin
|
||||
(/path/to/flashregion_0_flashdescriptor.bin) Path and filename of the descriptor.bin file
|
||||
|
||||
[*] Add gigabit ethernet configuration
|
||||
@ -127,22 +140,13 @@ Chipset --->
|
||||
|
||||
Then build coreboot and flash whole `build/coreboot.rom` to the chip.
|
||||
|
||||
## Installing with ME firmware
|
||||
|
||||
To install coreboot and keep ME working, you don't need to do anything special
|
||||
with the flash descriptor. Just flash only `bios` externally and don't touch any
|
||||
other regions:
|
||||
```console
|
||||
# flashrom -p YOUR_PROGRAMMER -w coreboot.rom --ifd -i bios
|
||||
```
|
||||
|
||||
## Flash layout
|
||||
|
||||
The flash layouts of the OEM firmware are as follows:
|
||||
|
||||
```eval_rst
|
||||
+---------------------------------+---------------------------------+
|
||||
| 4 MB chip | 8 MB chip |
|
||||
| 4 MiB chip | 8 MiB chip |
|
||||
+=================================+=================================+
|
||||
| .. code-block:: none | .. code-block:: none |
|
||||
| | |
|
||||
@ -159,6 +163,6 @@ The flash layouts of the OEM firmware are as follows:
|
||||
On each boot of vendor BIOS `ec` area in flash is checked for having firmware
|
||||
there, and if there is one, it proceedes to update firmware on H8S/2116 (when
|
||||
both external power and main battery are attached). Once update is performed,
|
||||
first 64 KB of `ec` area is erased. Visit
|
||||
first 64 KiB of `ec` area is erased. Visit
|
||||
[thinkpad-ec repository](https://github.com/hamishcoleman/thinkpad-ec) to learn
|
||||
more about how to extract EC firmware from vendor updates.
|
||||
|
@ -18,6 +18,40 @@ the general [flashing tutorial].
|
||||
|
||||
Steps to access the flash IC are described here [T4xx series].
|
||||
|
||||
## Working
|
||||
* CPU: Sandy Bridge i5-2520M, i7-2670QM
|
||||
* RAM module combinations of 2G+0, 2G+2G, 4G+0
|
||||
* mSATA
|
||||
* USB
|
||||
* Video (Intel integrated)
|
||||
* Sound (integrated speakers, integrated mic, external headphones, external mic)
|
||||
* LAN
|
||||
* Mini-PCIe slots (WLAN)
|
||||
* Bluetooth
|
||||
* Linux
|
||||
* Windows 10 (through SeaBIOS as payload, using a VGA BIOS)
|
||||
* DVD-ROM drive
|
||||
* SD card slot
|
||||
* TrackPoint
|
||||
* Touchpad
|
||||
* Webcam
|
||||
* Fn hotkeys (backlight control, thinklight)
|
||||
* Thinklight
|
||||
* Mute button (Speaker only)
|
||||
* Mini Jack audio (headphones)
|
||||
* Suspend (Linux)
|
||||
|
||||
## Not tested
|
||||
* DSub (VGA) out
|
||||
* DisplayPort out
|
||||
* eSATA
|
||||
* ExpressCard
|
||||
* WWAN
|
||||
|
||||
## Not working/TODOs
|
||||
* Mutemic button doesn't mute
|
||||
* Suspend (Windows 10)
|
||||
|
||||
[T4xx series]: t4xx_series.md
|
||||
[flashing tutorial]: ../../flash_tutorial/ext_power.md
|
||||
[T420 / T520 / X220 / T420s / W520 common]: Sandy_Bridge_series.md
|
||||
|
@ -8,15 +8,15 @@ Please see [mrc.bin](../../northbridge/intel/haswell/mrc.bin).
|
||||
|
||||
## Flashing instructions
|
||||
|
||||
T440p has two flash chips, an 8MB W25Q64FV and a 4MB W25Q32FV. To flash
|
||||
T440p has two flash chips, an 8 MiB W25Q64FV and a 4 MiB W25Q32FV. To flash
|
||||
coreboot, you just need to remove the big door according to the T440
|
||||
[Hardware Maintenance Manual] and flash the 4MB chip.
|
||||
[Hardware Maintenance Manual] and flash the 4 MiB chip.
|
||||
|
||||

|
||||
|
||||
To access the 8MB chip, you need to remove the base cover.
|
||||
To access the 8 MiB chip, you need to remove the base cover.
|
||||
|
||||

|
||||

|
||||
|
||||
The flash layout of the OEM firmware is as follows:
|
||||
|
||||
@ -30,7 +30,6 @@ the laptop able to power on.
|
||||
|
||||
## Known Issues
|
||||
|
||||
- No audio output when using a headphone
|
||||
- Cannot get the mainboard serial number from the mainboard: the OEM
|
||||
UEFI firmware gets the serial number from an "emulated EEPROM" via
|
||||
I/O port 0x1630/0x1634, but it's still unknown how to make it work
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
* MSI MS-7707 V1.1 (Medion OEM Akoya P4385D MSN10014555)
|
||||
* SandyBridge Intel P67 (BD82x6x)
|
||||
* Winbond 25Q32BV (4MB)
|
||||
* Winbond 25Q32BV (4 MiB)
|
||||
* Fintek F71808A SuperIO
|
||||
* Intel 82579V Gigabit
|
||||
* NEC uPD720200 USB 3.0 Host Controller
|
||||
|
@ -8,22 +8,26 @@ Delta Lake server platform.
|
||||
OCP Delta Lake server platform is a component of multi-host server system
|
||||
Yosemite-V3. Both were announced by Facebook and Intel in [OCP virtual summit 2020].
|
||||
|
||||
Delta Lake server is a single socket Cooper Lake Scalable Processor server.
|
||||
Delta Lake server is a single socket Cooper Lake Scalable Processor (CPX-SP) server.
|
||||
|
||||
Yosemite-V3 has multiple configurations. Depending on configurations, it may
|
||||
host up to 4 Delta Lake servers in one sled.
|
||||
host up to 4 Delta Lake servers (blades) in one sled.
|
||||
|
||||
Yosemite-V3 and Delta Lake are currently in DVT phase. Facebook, Intel and partners
|
||||
jointly develop FSP/coreboot/LinuxBoot stack on Delta Lake as an alternative solution.
|
||||
The Yosemite-V3 system is in mass production. Facebook, Intel and partners
|
||||
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
|
||||
OSF solution reached DVT exit equivalent status.
|
||||
|
||||
## Required blobs
|
||||
|
||||
This board currently requires:
|
||||
Delta Lake server OSF solution requires:
|
||||
- FSP blob: The blob (Intel Cooper Lake Scalable Processor Firmware Support Package)
|
||||
is not yet available to the public. It will be made public some time after the MP
|
||||
(Mass Production) of CooperLake Scalable Processor when the FSP is mature.
|
||||
- Microcode: Not yet available to the public.
|
||||
- ME binary: Not yet available to the public.
|
||||
is not yet available to the public. It will be made public soon by Intel
|
||||
with redistributable license.
|
||||
- Microcode: Available through github.com:otcshare/Intel-Generic-Microcode.git.
|
||||
- ME binary: Ignition binary will be made public soon by Intel with
|
||||
redistributable license.
|
||||
- ACM binaries: only required for CBnT enablement. Available under NDA with Intel.
|
||||
|
||||
## Payload
|
||||
- LinuxBoot: This is necessary only if you use LinuxBoot as coreboot payload.
|
||||
@ -46,36 +50,6 @@ To power off/on the host:
|
||||
To connect to console through SOL (Serial Over Lan):
|
||||
sol-util slotx
|
||||
|
||||
## Working features
|
||||
The solution is developed using LinuxBoot payload with Linux kernel 5.2.9, and [u-root]
|
||||
as initramfs.
|
||||
- SMBIOS:
|
||||
- Type 0 -- BIOS Information
|
||||
- Type 1 -- System Information
|
||||
- Type 2 -- Baseboard Information
|
||||
- Type 3 -- System Enclosure or Chassis
|
||||
- Type 4 -- Processor Information
|
||||
- Type 8 -- Port Connector Information
|
||||
- Type 9 -- PCI Slot Information
|
||||
- Type 11 -- OEM String
|
||||
- Type 13 -- BIOS Language Information
|
||||
- Type 16 -- Physical Memory Array
|
||||
- Type 19 -- Memory Array Mapped Address
|
||||
- Type 127 -- End-of-Table
|
||||
|
||||
- BMC integration:
|
||||
- BMC readiness check
|
||||
- IPMI commands
|
||||
- watchdog timer
|
||||
- POST complete pin acknowledgement
|
||||
- SEL record generation
|
||||
- Early serial output
|
||||
- port 80h direct to GPIO
|
||||
- ACPI tables: APIC/DSDT/FACP/FACS/HPET/MCFG/SPMI/SRAT/SLIT/SSDT
|
||||
- Skipping memory training upon subsequent reboots by using MRC cache
|
||||
- BMC crash dump
|
||||
- Error injection through ITP
|
||||
|
||||
## 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
|
||||
@ -84,29 +58,105 @@ values.
|
||||
VPD variables supported are:
|
||||
- firmware_version: This variable holds overall firmware version. coreboot
|
||||
uses that value to populate smbios type 1 version field.
|
||||
- bmc_bootorder_override: When it's set to 1 IPMI OEM command can override boot
|
||||
order. The boot order override is done in the u-root LinuxBoot payload.
|
||||
- systemboot_log_level: u-root package systemboot log levels, would be mapped to
|
||||
quiet/verbose in systemboot as that is all we have for now. 5 to 8 would be
|
||||
mapped to verbose, 0 to 4 and 9 would be mapped to quiet.
|
||||
- VPDs affecting coreboot are listed/documented in src/mainboard/ocp/deltalake/vpd.h.
|
||||
|
||||
## Known issues
|
||||
- Even though CPX-SP FSP is based on FSP 2.2 framework, it does not
|
||||
support FSP_USES_CB_STACK. An IPS ticket is filed with Intel.
|
||||
- VT-d is not supported. An IPS ticket is filed with Intel.
|
||||
- PCIe bifuration is not supported. An IPS ticket is filed with Intel.
|
||||
- ME based power capping. This is a bug in ME. An IPS ticket is filed
|
||||
with Intel.
|
||||
- RO_VPD region as well as other RO regions are not write protected.
|
||||
- HECI is not set up correctly, so BMC is not able to get PCH and DIMM
|
||||
temperature sensor readings.
|
||||
|
||||
## Feature gaps
|
||||
- Delta Lake DVT is not supported, as we only have Delta Lake EVT servers
|
||||
at the moment.
|
||||
## Working features
|
||||
The solution is developed using LinuxBoot payload with Linux kernel 5.2.9,
|
||||
and [u-root] as initramfs.
|
||||
- SMBIOS:
|
||||
- Type 0 -- BIOS Information
|
||||
- Type 1 -- System Information
|
||||
- Type 2 -- Baseboard Information
|
||||
- Type 3 -- System Enclosure or Chassis
|
||||
- Type 4 -- Processor Information
|
||||
- Type 7 -- Cache Information
|
||||
- Type 8 -- Port Connector Information
|
||||
- Type 9 -- PCI Slot Information
|
||||
- Type 11 -- OEM String
|
||||
- Type 16 -- Physical Memory Array
|
||||
- Type 17 -- Memory Device
|
||||
- Type 19 -- Memory Array Mapped Address
|
||||
- Type 32 -- System Boot Information
|
||||
- Type 38 -- IPMI Device Information
|
||||
- Type 41 -- Onboard Devices Extended Information
|
||||
- ACPI:
|
||||
- DMAR
|
||||
- PFR/CBnT
|
||||
- Type 127 -- End-of-Table
|
||||
- BMC integration:
|
||||
- BMC readiness check
|
||||
- IPMI commands
|
||||
- watchdog timer
|
||||
- POST complete pin acknowledgement
|
||||
- Check BMC version: ipmidump -device
|
||||
- SEL record generation
|
||||
- Converged Bootguard and TXT (CBnT)
|
||||
- TPM
|
||||
- Bootguard profile 0T
|
||||
- TXT
|
||||
- SRTM
|
||||
- DRTM (verified through tboot)
|
||||
- unsigned KM/BPM generation
|
||||
- KM/BPM signing
|
||||
- memory secret clearance upon ungraceful shutdown
|
||||
- Early serial output
|
||||
- port 80h direct to GPIO
|
||||
- ACPI tables: APIC/DMAR/DSDT/EINJ/FACP/FACS/HEST/HPET/MCFG/SPMI/SRAT/SLIT/SSDT
|
||||
- Skipping memory training upon subsequent reboots by using MRC cache
|
||||
- BMC crash dump
|
||||
- Error injection through ITP
|
||||
- Versions
|
||||
- Check FSP version: cbmem | grep LB_TAG_PLATFORM_BLOB_VERSION
|
||||
- Check Microcode version: cat /proc/cpuinfo | grep microcode
|
||||
- Devices:
|
||||
- Boot drive
|
||||
- All 5 data drives
|
||||
- NIC card
|
||||
- Power button
|
||||
- localboot
|
||||
- netboot from IPv6
|
||||
- basic memory hardware error injection/detection (SMI handlers not upstreamed)
|
||||
- basic PCIe hardware error injection/detection (SMI handlers not upstreamed)
|
||||
|
||||
## Stress/performance tests passed
|
||||
- OS warm reboot (1000 cycles)
|
||||
- DC reboot (1000 cycles)
|
||||
- AC reboot (1000 cycle)
|
||||
- Mprime test (6 hours)
|
||||
- StressAppTest (6 hours)
|
||||
- Ptugen (6 hours)
|
||||
|
||||
## Performance on par with traditional firmware
|
||||
- coremark
|
||||
- FIO
|
||||
- Iperf(IPv6)
|
||||
- Linpack
|
||||
- Intel MLC (memory latency and bandwidth)
|
||||
- SpecCPU
|
||||
- stream
|
||||
|
||||
## Other tests passed
|
||||
- Power
|
||||
- Thermal
|
||||
- coreboot address sanitizer (both romstage and ramstage)
|
||||
- Intel selftest tool (all errors analyzed; applicable errors clean)
|
||||
|
||||
## Known issues
|
||||
- HECI access at OS run time:
|
||||
- spsInfoLinux64 command fail to return ME version
|
||||
- ptugen command fail to get memory power
|
||||
- CLTT (Closed Loop Thermal Throttling, eg. thermal protection for DIMMs)
|
||||
- ProcHot (thermal protection for processors)
|
||||
|
||||
## Feature gaps
|
||||
- flashrom command not able to update ME region
|
||||
- ACPI BERT table
|
||||
- PCIe hotplug through VPP (Virtual Pin Ports)
|
||||
- PCIe Live Error Recovery
|
||||
- RO_VPD region as well as other RO regions are not write protected
|
||||
- Not able to selectively enable/disable core
|
||||
|
||||
## Technology
|
||||
|
||||
@ -116,7 +166,7 @@ VPD variables supported are:
|
||||
+------------------------+---------------------------------------------+
|
||||
| BMC | Aspeed AST 2500 |
|
||||
+------------------------+---------------------------------------------+
|
||||
| PCH | Intel Lewisburg C621 |
|
||||
| PCH | Intel Lewisburg C620 Series |
|
||||
+------------------------+---------------------------------------------+
|
||||
```
|
||||
|
||||
|
113
Documentation/mainboard/purism/librem_14.md
Normal file
@ -0,0 +1,113 @@
|
||||
# Purism Librem 14
|
||||
|
||||
This page describes how to run coreboot on the [Purism Librem 14].
|
||||
|
||||
```eval_rst
|
||||
+------------------+------------------------------------------------------+
|
||||
| CPU | Intel Core i7-10710U |
|
||||
+------------------+------------------------------------------------------+
|
||||
| PCH | Comet Lake LP Premium (Comet Lake-U) |
|
||||
+------------------+------------------------------------------------------+
|
||||
| EC | ITE IT8528E |
|
||||
+------------------+------------------------------------------------------+
|
||||
| Coprocessor | Intel Management Engine (CSME 14.x) |
|
||||
+------------------+------------------------------------------------------+
|
||||
```
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
## Required proprietary blobs
|
||||
|
||||
To build a minimal working coreboot image some blobs are required (assuming
|
||||
only the BIOS region is being modified).
|
||||
|
||||
```eval_rst
|
||||
+-----------------+---------------------------------+---------------------+
|
||||
| Binary file | Apply | Required / Optional |
|
||||
+=================+=================================+=====================+
|
||||
| FSP-M, FSP-S | Intel Firmware Support Package | Required |
|
||||
+-----------------+---------------------------------+---------------------+
|
||||
| microcode | CPU microcode | Required |
|
||||
+-----------------+---------------------------------+---------------------+
|
||||
```
|
||||
|
||||
FSP-M and FSP-S are obtained after splitting the CometLake1 FSP binary
|
||||
(done automatically by the coreboot build system and included into the
|
||||
image) from the `3rdparty/fsp` submodule.
|
||||
|
||||
Microcode updates are automatically included into the coreboot image by the
|
||||
build system from the `3rdparty/intel-microcode` submodule. Official Purism
|
||||
release images may include newer microcode, which is instead pulled from
|
||||
Purism's [purism-blobs] repository.
|
||||
|
||||
A VGA Option ROM is not required to boot, as the Librem 14 uses libgfxinit.
|
||||
|
||||
## Intel Management Engine
|
||||
|
||||
The Librem 14 uses version 14.x of the Intel Management Engine (ME) /
|
||||
Converged Security Engine (CSE). The ME/CSE is disabled using the High
|
||||
Assurance Platform (HAP) bit, which puts the ME into a disabled state after
|
||||
platform bring-up (BUP) and disables all PCI/HECI interfaces.
|
||||
This can be verified checking the coreboot console log, using coreboot’s
|
||||
cbmem utility:
|
||||
|
||||
`sudo ./cbmem -1 | grep 'ME:'`
|
||||
|
||||
provided coreboot has been patched to output the ME status even when the
|
||||
PCI device is not visible/active (as it is in Purism's release builds).
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
### Internal programming
|
||||
|
||||
The main SPI flash can be accessed using [flashrom]. No official flashrom
|
||||
release supports the CometLake-U SoC yet, so it must be built from source.
|
||||
Version v1.2-107-gb1f858f or later is needed. Firmware an be easily
|
||||
flashed with internal programmer (either BIOS region or full image).
|
||||
|
||||
### External programming
|
||||
|
||||
The system has an internal flash chip which is a 16 MiB soldered SOIC-8
|
||||
chip, and has a diode attached to the VCC line for in-system programming.
|
||||
This chip is located on the bottom side of the board, in between the CPU
|
||||
heatsink and the left cooling fan, just above the left SO-DIMM slot.
|
||||
|
||||
One has to remove all 9 screws from the bottom cover, then disconnect the
|
||||
battery from the mainboard (bottom left of mainboard). Use a SOIC-8 chip
|
||||
clip to program the chip (a Gigadevice GD25Q127C (3.3V) - [datasheet][GD25Q127C]).
|
||||
|
||||
The EC firmware is stored on a separate SOIC-8 chip (a Gigadevices GD25Q80C),
|
||||
located underneath the Wi-Fi module, below the left cooling fan.
|
||||
|
||||
## Known issues
|
||||
|
||||
* Automatic detection of external audio input/output via the 3.5mm jack
|
||||
does not currently work.
|
||||
* PL1/PL2 limited to 15W/20W by charger and battery discharge capability,
|
||||
not SoC or thermal design.
|
||||
|
||||
## Working
|
||||
|
||||
* Internal display with libgfxinit, VGA option ROM, or FSP/GOP init
|
||||
* External displays via HDMI, USB-C Alt-Mode
|
||||
* SeaBIOS (1.14), Tianocore (CorebootPayloadPkg), and Heads payloads
|
||||
* Ethernet, m.2 2230 Wi-Fi
|
||||
* System firmware updates via flashrom
|
||||
* M.2 storage (NVMe, SATA III)
|
||||
* Built-in audio (speakers, microphone)
|
||||
* SMBus (reading SPD from DIMMs)
|
||||
* Initialization with FSP 2.0 (CometLake1)
|
||||
* S3 Suspend/Resume
|
||||
* Booting PureOS 10.x, Debian 11.x, Qubes 4.0.4, Windows 10 20H2
|
||||
|
||||
## Not working / untested
|
||||
|
||||
* N/A
|
||||
|
||||
|
||||
[Purism Librem 14]: https://puri.sm/products/librem-14/
|
||||
[purism-blobs]: https://source.puri.sm/coreboot/purism-blobs
|
||||
[GD25Q127C]: https://www.gigadevice.com/datasheet/gd25q127c/
|
||||
[flashrom]: https://flashrom.org/Flashrom
|
BIN
Documentation/mainboard/purism/librem_14.webp
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
Documentation/mainboard/purism/librem_14_ec_flash.jpg
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
Documentation/mainboard/purism/librem_14_flash.jpg
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
Documentation/mainboard/purism/librem_mini.jpg
Normal file
After Width: | Height: | Size: 17 KiB |
129
Documentation/mainboard/purism/librem_mini.md
Normal file
@ -0,0 +1,129 @@
|
||||
# Purism Librem Mini (v1, v2)
|
||||
|
||||
This page describes how to run coreboot on the [Purism Librem Mini].
|
||||
|
||||
```eval_rst
|
||||
+------------------+--------------------------------------------------+
|
||||
| CPU | Intel Core i7-8565U/8665U (v1) |
|
||||
| | Intel Core i7-10510U (v2) |
|
||||
+------------------+--------------------------------------------------+
|
||||
| PCH | Whiskey Lake / Cannon Point LP (v1) |
|
||||
| | Comet Lake LP Premium (Comet Lake-U) (v2) |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Super I/O, EC | ITE IT8528E |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Coprocessor | Intel Management Engine (CSME 12.x) (v1) |
|
||||
| | Intel Management Engine (CSME 14.x) (v2) |
|
||||
+------------------+--------------------------------------------------+
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
## Required proprietary blobs
|
||||
|
||||
To build a minimal working coreboot image some blobs are required (assuming
|
||||
only the BIOS region is being modified).
|
||||
|
||||
```eval_rst
|
||||
+-----------------+---------------------------------+---------------------+
|
||||
| Binary file | Apply | Required / Optional |
|
||||
+=================+=================================+=====================+
|
||||
| FSP-M, FSP-S | Intel Firmware Support Package | Required |
|
||||
+-----------------+---------------------------------+---------------------+
|
||||
| microcode | CPU microcode | Required |
|
||||
+-----------------+---------------------------------+---------------------+
|
||||
| vgabios | VGA Option ROM | Optional |
|
||||
+-----------------+---------------------------------+---------------------+
|
||||
```
|
||||
|
||||
FSP-M and FSP-S are obtained after splitting the FSP binary (done automatically
|
||||
by the coreboot build system and included into the image; Coffee Lake for v1,
|
||||
Comet Lake for v2) from the `3rdparty/fsp` submodule.
|
||||
|
||||
Microcode updates are automatically included into the coreboot image by the build
|
||||
system from the `3rdparty/intel-microcode` submodule. Official Purism release
|
||||
images may include newer microcode, which is instead pulled from Purism's
|
||||
[purism-blobs] repository.
|
||||
|
||||
VGA Option ROM is not required to boot, but if one needs graphics in pre-OS
|
||||
stage, it should be included (if not using FSP/GOP display init). It can
|
||||
be extracted via cbfstool from the existing board firmware or pulled from
|
||||
the [purism-blobs] repository.
|
||||
|
||||
## Intel Management Engine
|
||||
|
||||
The Librem Mini uses version 12.x (v1) or 14.x (v2) of the Intel Management
|
||||
Engine (ME) / Converged Security Engine (CSE). The ME/CSE is disabled using
|
||||
the High Assurance Platform (HAP) bit, which puts the ME into a disabled state
|
||||
after platform bring-up (BUP) and disables all PCI/HECI interfaces.
|
||||
This can be verified via the coreboot cbmem utility:
|
||||
|
||||
`sudo ./cbmem -1 | grep 'ME:'`
|
||||
|
||||
provided coreboot has been modified to output the ME status even when
|
||||
the PCI device is not visible/active (as it is in Purism's release builds).
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
### Internal programming
|
||||
|
||||
The main SPI flash can be accessed using [flashrom]. The first version
|
||||
supporting the chipset is flashrom v1.2 (v1.2-107-gb1f858f or later needed
|
||||
for the Mini v2). Firmware an be easily flashed with internal programmer
|
||||
(either BIOS region or full image).
|
||||
|
||||
### External programming
|
||||
|
||||
The system has an internal flash chip which is a 8 MiB soldered SOIC-8 chip,
|
||||
and has a diode attached to the VCC line for in-system programming.
|
||||
This chip is located on the bottom side of the board under the CPU heatsink,
|
||||
in line with the front USB 2.0 ports.
|
||||
|
||||
One has to remove all screws (in order):
|
||||
|
||||
* 2 top cover screws
|
||||
* 4 screws securing the mainboard to the chassis
|
||||
* 4 screws securing the heatsink/fan assembly to the mainboard (under the SODIMMs)
|
||||
|
||||
The m.2 SSD will need to be removed if the Wi-Fi antenna are connected to
|
||||
an internal Wi-Fi/BT module. Use a SOIC-8 chip clip to program the chip.
|
||||
Specifically, it's a Winbond W25Q128JV (3.3V) - [datasheet][W25Q128JV].
|
||||
|
||||
The EC firmware is stored on a separate SOIC-8 chip (a Winbond W25Q80DV),
|
||||
but is not protected by a diode and therefore cannot be read/written to without
|
||||
desoldering it from the mainboard.
|
||||
|
||||
## Known issues
|
||||
|
||||
* SeaBIOS can be finicky with detecting USB devices
|
||||
* Mode switching with VGA option ROM display init can be slow and sometimes hangs
|
||||
* Some SATA devices on the 2.5" interface can have issues operating at 6 Gbps,
|
||||
despite the HSIO PHY settings being set optimally via experimentation. These devices
|
||||
may show errors in dmesg and drop down to 3 Gbps, but should not fail to boot.
|
||||
The same issue is present on the AMI vendor firmware.
|
||||
|
||||
## Working
|
||||
|
||||
* External displays via HDMI/DisplayPort with VGA option ROM or FSP/GOP init
|
||||
(no libgfxinit support yet)
|
||||
* SeaBIOS (1.14), Tianocore (CorebootPayloadPkg), Heads (Purism downstream) payloads
|
||||
* Ethernet, m.2 2230 Wi-Fi
|
||||
* System firmware updates via flashrom
|
||||
* PCIe NVMe
|
||||
* m.2 and SATA III
|
||||
* Audio via front 3.5mm jack, HDMI, and DisplayPort
|
||||
* SMBus (reading SPD from DIMMs)
|
||||
* Initialization with FSP 2.0 (CFL for v1, CML for v2)
|
||||
* S3 Suspend/Resume
|
||||
* Booting PureOS 10.x, Debian 11.x, Qubes 4.1.0-alpha1, Linux Mint 20, Windows 10 2004
|
||||
|
||||
## Not working / untested
|
||||
|
||||
* ITE IT8528E Super IO functions
|
||||
|
||||
|
||||
[Purism Librem Mini]: https://puri.sm/products/librem-mini/
|
||||
[purism-blobs]: https://source.puri.sm/coreboot/purism-blobs
|
||||
[W25Q128JV]: https://www.winbond.com/resource-files/w25q128jv%20revf%2003272018%20plus.pdf
|
||||
[flashrom]: https://flashrom.org/Flashrom
|
BIN
Documentation/mainboard/purism/librem_mini_flash.jpg
Normal file
After Width: | Height: | Size: 40 KiB |
@ -30,3 +30,15 @@ You can use the *SMCIPMITool* to remotely flash the BIOS:
|
||||
|
||||
Make sure that the ME isn't in recovery mode, otherwise you get an error
|
||||
message on updating the BIOS.
|
||||
|
||||
## Flashing with disabled ME
|
||||
|
||||
If ME is disabled via `me_cleaner` or the ME recovery jumper, it is still
|
||||
possible to flash remotely with the [`Supermicro Update Manager`](SUM) (`SUM`).
|
||||
|
||||
```sh
|
||||
./sum -i <remote BMC IP> -u <user> -p <password> -c UpdateBios --reboot \
|
||||
--force_update --file build/coreboot.rom
|
||||
```
|
||||
|
||||
[SUM]: https://www.supermicro.com/SwDownload/SwSelect_Free.aspx?cat=SUM
|
||||
|
@ -7,6 +7,7 @@ Controller etc.
|
||||
## Supported boards
|
||||
|
||||
- [X11SSH-TF](x11ssh-tf/x11ssh-tf.md)
|
||||
- [X11SSH-F/LN4F](x11ssh-f/x11ssh-f.md)
|
||||
- [X11SSM-F](x11ssm-f/x11ssm-f.md)
|
||||
|
||||
## Required proprietary blobs
|
||||
@ -17,7 +18,7 @@ Controller etc.
|
||||
## De-blobbing
|
||||
|
||||
- [Intel FSP2.0] can not be removed as long as there is no free replacement
|
||||
- Intel ME can be cleaned using me_cleaner (~4.5 MB more free space)
|
||||
- Intel ME can be cleaned using me_cleaner (~4.5 MiB more free space)
|
||||
- Intel Ethernet Controller Firmware can be removed when it's extended functionality is not
|
||||
needed. For more details refer to the respective datasheet (e.g 333016-008 for I210).
|
||||
- Boards with [AST2400] BMC/IPMI: Firmware can be replaced by [OpenBMC]
|
||||
@ -30,14 +31,12 @@ Look at the [flashing tutorial] and the board-specific section.
|
||||
|
||||
These issues apply to all boards. Have a look at the board-specific issues, too.
|
||||
|
||||
- TianoCore doesn't work with Aspeed NGI, as it's text mode only (Fix is WIP CB:35726)
|
||||
- MRC caching does not work on cold boot with Intel SPS (see [Intel FSP2.0])
|
||||
|
||||
## ToDo
|
||||
|
||||
- Fix issues above
|
||||
- Fix issues in board specific sections
|
||||
- Fix TODOs mentioned in code
|
||||
- Add more boards! :-)
|
||||
|
||||
## Technology
|
||||
|
@ -0,0 +1,110 @@
|
||||
# Supermicro X11SSH-F/X11SSH-LN4F
|
||||
|
||||
This section details how to run coreboot on the [Supermicro X11SSH-F] or [Supermicro X11SSH-LN4F].
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
The board can be flashed externally. [STM32-based programmers] worked.
|
||||
|
||||
The flash IC "W25Q128.V" (detected by flashrom) can be found near PCH PCIe Slot 4. It is sometime
|
||||
socketed, and covered by a sticker, hindering the observation of its precise model.
|
||||
|
||||
It can be programmed in-system with a clip like pomona 5250.
|
||||
|
||||
## BMC (IPMI)
|
||||
|
||||
This board has an ASPEED [AST2400], which has BMC/[IPMI] functionality. The BMC firmware resides in a
|
||||
32 MiB SOIC-16 chip in the corner of the mainboard near the PCH PCIe Slot 4. This chip is a
|
||||
[MX25L25635F].
|
||||
|
||||
## IGD
|
||||
|
||||
If an IGD is integrated with CPU, it will be enabled on this board. Though there is no video output
|
||||
for it (The onboard VGA port is connected to BMC), it is said to be capable of being used for compute
|
||||
tasks, or for offloading graphics rendering via "muxless" [vga_witcheroo].
|
||||
|
||||
## Tested and working
|
||||
|
||||
- SeaBIOS payload to boot Kali Linux live USB
|
||||
- ECC ram (Linux' ie31200 driver works)
|
||||
- Integrated graphics device available without output
|
||||
- USB ports
|
||||
- Ethernet
|
||||
- SATA ports
|
||||
- RS232 external
|
||||
- PCIe slots
|
||||
- BMC (IPMI)
|
||||
- VGA on Aspeed
|
||||
- TPM on TPM expansion header
|
||||
|
||||
## Known issues
|
||||
|
||||
- See general issue section
|
||||
- S3 resume not working (vendor and coreboot)
|
||||
- SeaBIOS cannot make use of VGA on Aspeed (even if IGD is disabled)
|
||||
|
||||
## Difference between X11SSH-F and X11SSH-LN4F
|
||||
|
||||
The PCB is identical. The X11SSH-F has 2 NICs, the X11SSH-LN4F has 4 NICs.
|
||||
So the X11SSH-F just doesn't have 2 NICs populated.
|
||||
|
||||
## ToDo
|
||||
|
||||
- Fix known issues
|
||||
- Testing other payloads
|
||||
|
||||
## Technology
|
||||
|
||||
```eval_rst
|
||||
+------------------+--------------------------------------------------+
|
||||
| CPU | Intel Kaby Lake |
|
||||
+------------------+--------------------------------------------------+
|
||||
| PCH | Intel C236 |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Coprocessor | Intel SPS (server version of the ME) |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Super I/O | ASPEED AST2400 |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Ethernet | 2x Intel I210-AT 1 GbE (for X11SSH-F) |
|
||||
| | 4x Intel I210-AT 1 GbE (for X11SSH-LN4F) |
|
||||
| | 1x dedicated BMC |
|
||||
+------------------+--------------------------------------------------+
|
||||
| PCIe slots | 1x 3.0 x8 |
|
||||
| | 1x 3.0 x8 (in x16) |
|
||||
| | 1x 3.0 x4 (in x8) |
|
||||
| | 1x 3.0 x2 (in M.2 slot with key M) |
|
||||
+------------------+--------------------------------------------------+
|
||||
| USB slots | 2x USB 2.0 (ext) |
|
||||
| | 2x USB 3.0 (ext) |
|
||||
| | 1x USB 3.0 (int) |
|
||||
| | 1x dual USB 3.0 header |
|
||||
| | 2x dual USB 2.0 header |
|
||||
+------------------+--------------------------------------------------+
|
||||
| SATA slots | 8x S-ATA III |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Other slots | 1x RS232 (ext) |
|
||||
| | 1x RS232 header |
|
||||
| | 1x TPM header |
|
||||
| | 1x Power SMB header |
|
||||
| | 5x PWM Fan connector |
|
||||
| | 2x I-SGPIO |
|
||||
| | 2x S-ATA DOM Power connector |
|
||||
| | 1x XDP Port (connector may absent) |
|
||||
| | 1x External BMC I2C Header (for IPMI card) |
|
||||
| | 1x Chassis Intrusion Header |
|
||||
+------------------+--------------------------------------------------+
|
||||
```
|
||||
|
||||
## Extra links
|
||||
|
||||
- [Supermicro X11SSH-F]
|
||||
- [Board manual]
|
||||
|
||||
[Supermicro X11SSH-F]: https://www.supermicro.com/en/products/motherboard/X11SSH-F
|
||||
[Supermicro X11SSH-LN4F]: https://www.supermicro.com/en/products/motherboard/X11SSH-LN4F
|
||||
[Board manual]: https://www.supermicro.com/manuals/motherboard/C236/MNL-1778.pdf
|
||||
[AST2400]: https://www.aspeedtech.com/products.php?fPath=20&rId=376
|
||||
[IPMI]: ../../../../drivers/ipmi_kcs.md
|
||||
[MX25L25635F]: https://media.digikey.com/pdf/Data%20Sheets/Macronix/MX25L25635F.pdf
|
||||
[STM32-based programmers]: https://github.com/dword1511/stm32-vserprog
|
||||
[vga_switcheroo]: https://01.org/linuxgraphics/gfx-docs/drm/gpu/vga-switcheroo.html
|
@ -33,10 +33,6 @@ in a 32 MiB SOIC-16 chip in the corner of the mainboard near the [AST2400]. This
|
||||
|
||||
See general issue section.
|
||||
|
||||
## ToDo
|
||||
|
||||
- Fix TODOs mentioned in code
|
||||
|
||||
## Technology
|
||||
|
||||
```eval_rst
|
||||
|
@ -4,11 +4,16 @@ This section details how to run coreboot on the [Supermicro X11SSM-F].
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
The board can be flashed externally. FTDI FT2232H and FT232H based programmers worked.
|
||||
The flash IC [MX25L12873F] can be found near PCH PCIe Slot 4.
|
||||
|
||||
The flash IC [MX25L12873F] can be found near PCH PCIe Slot 4. It is socketed on retail boards.
|
||||
The board can be flashed externally with a SOIC test clip or probes. Since
|
||||
there is no diode between VCC3.3 and the flash chip, so VCC must **not** be
|
||||
connected. Instead, the flash chip is powered from VCC3.3, which is always-on
|
||||
(even in S5). WP# and HOLD# have pull-ups and don't need to be connected.
|
||||
|
||||
For doing ISP (In-System-Programming) one needs to add a diode between VCC and the flash chip.
|
||||
FTDI FT2232H and FT232H based programmers worked.
|
||||
|
||||
Flashing is also possible through the BMC web interface, when a valid license was entered.
|
||||
|
||||
## BMC (IPMI)
|
||||
|
||||
@ -16,6 +21,10 @@ This board has an ASPEED [AST2400], which has BMC/[IPMI] functionality. The BMC
|
||||
32 MiB SOIC-16 chip in the corner of the mainboard near the PCH PCIe Slot 4. This chip is a
|
||||
[MX25L25635F].
|
||||
|
||||
## Disabling LAN firmware
|
||||
|
||||
To disable the proprietary LAN firmware, the undocumented jumper J6 can be set to 2-3.
|
||||
|
||||
## Tested and working
|
||||
|
||||
- GRUB2 payload with Debian testing and kernel 5.2
|
||||
@ -32,14 +41,9 @@ This board has an ASPEED [AST2400], which has BMC/[IPMI] functionality. The BMC
|
||||
## Known issues
|
||||
|
||||
- See general issue section
|
||||
- "only partially covers this bridge" info from Linux kernel (what does that mean?)
|
||||
- LNXTHERM missing
|
||||
- S3 resume not working
|
||||
|
||||
## ToDo
|
||||
|
||||
- Fix TODOs mentioned in code
|
||||
|
||||
## Technology
|
||||
|
||||
```eval_rst
|
||||
|
72
Documentation/mainboard/system76/gaze15.md
Normal file
@ -0,0 +1,72 @@
|
||||
# System76 Gazelle 15 (gaze15)
|
||||
|
||||
## Specs
|
||||
|
||||
- CPU
|
||||
- Intel Core i7 10750H
|
||||
- EC
|
||||
- ITE5570E running https://github.com/system76/ec
|
||||
- Graphics
|
||||
- Intel UHD Graphics
|
||||
- NVIDIA GeForce GTX 1650/1650 Ti/1660 Ti
|
||||
- eDP 15.6" or 17.3" 1920x1080 @ 120 Hz LCD
|
||||
- HDMI, Mini DisplayPort 1.4, and DisplayPort 1.4 over USB-C
|
||||
- Memory
|
||||
- Channel 0: 8-GB/16-GB/32-GB DDR4 SO-DIMM
|
||||
- Channel 1: 8-GB/16-GB/32-GB DDR4 SO-DIMM
|
||||
- Networking
|
||||
- Gigabit Ethernet
|
||||
- M.2 PCIe/CNVi Wifi/Bluetooth
|
||||
- Intel Wireless-AC 9560, or
|
||||
- Intel Wi-Fi 6 AX200/AX201
|
||||
- Power
|
||||
- 120W AC adapter (GTX 1650 and 1650 Ti)
|
||||
- 180W AC adapter (GTX 1660 Ti)
|
||||
- 48.96Wh battery
|
||||
- Sound
|
||||
- Realtek ALC293 codec
|
||||
- TAS5825MRHBR smart AMP
|
||||
- Internal speakers and microphone
|
||||
- Combined headphone and microphone 3.5mm jack
|
||||
- HDMI, Mini DisplayPort, USB-C DP audio
|
||||
- Storage
|
||||
- M.2 PCIe/SATA SSD-1
|
||||
- M.2 PCIe SSD-2
|
||||
- 2.5" 7mm drive bay
|
||||
- SD card reader
|
||||
- Realtek RTL8411B card reader
|
||||
- USB
|
||||
- 1x USB 2.0
|
||||
- 1x USB 3.0
|
||||
- 1x USB 3.1
|
||||
- 1x USB 3.2 Type-C
|
||||
|
||||
## Building coreboot
|
||||
|
||||
```bash
|
||||
make distclean
|
||||
make defconfig KBUILD_DEFCONFIG=configs/config.system76_gaze15
|
||||
make
|
||||
```
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
```eval_rst
|
||||
+---------------------+---------------------+
|
||||
| Type | Value |
|
||||
+=====================+=====================+
|
||||
| Socketed flash | no |
|
||||
+---------------------+---------------------+
|
||||
| Vendor | GigaDevice |
|
||||
+---------------------+---------------------+
|
||||
| Model | GD25Q127C/GD25Q128C |
|
||||
+---------------------+---------------------+
|
||||
| Size | 16 MiB |
|
||||
+---------------------+---------------------+
|
||||
| Package | SOIC-8 |
|
||||
+---------------------+---------------------+
|
||||
| Internal flashing | yes |
|
||||
+---------------------+---------------------+
|
||||
| External flashing | yes |
|
||||
+---------------------+---------------------+
|
||||
```
|
71
Documentation/mainboard/system76/oryp5.md
Normal file
@ -0,0 +1,71 @@
|
||||
# System76 Oryx Pro 5 (oryp5)
|
||||
|
||||
## Specs
|
||||
|
||||
- CPU
|
||||
- Intel Core i7-8750H
|
||||
- Intel Core i7-9750H
|
||||
- EC
|
||||
- ITE8587E running https://github.com/system76/ec
|
||||
- Graphics
|
||||
- Intel UHD Graphics 630
|
||||
- NVIDIA GeForce RTX 2080/2070/2060
|
||||
- eDP 16.1" or 17.3" 1920x1080 @ 144 Hz LCD
|
||||
- HDMI, Mini DisplayPort 1.3, and DisplayPort 1.3 over USB-C
|
||||
- Memory
|
||||
- Channel 0: 8-GB/16-GB/32-GB DDR4 SO-DIMM
|
||||
- Channel 1: 8-GB/16-GB/32-GB DDR4 SO-DIMM
|
||||
- Networking
|
||||
- Gigabit Ethernet
|
||||
- Intel Dual Band Wireless-AC 9560 Wireless LAN (802.11ac) + Bluetooth
|
||||
- Power
|
||||
- 180W (19.5V, 9.23A) AC adapter
|
||||
- 62Wh 4-cell battery
|
||||
- Sound
|
||||
- Realtek ALC1220 codec
|
||||
- TAS5825MRHBR smart AMP
|
||||
- Internal speakers and microphone
|
||||
- Combined headphone and microphone 3.5mm jack
|
||||
- Combined microphone and S/PDIF 3.5mm jack
|
||||
- HDMI, Mini DisplayPort, USB-C DP audio
|
||||
- Storage
|
||||
- M.2 PCIe/SATA SSD1
|
||||
- M.2 PCIe/SATA SSD2
|
||||
- 2.5" SATA HDD/SSD
|
||||
- RTS5250 SD card reader
|
||||
- USB
|
||||
- 2x USB 3.1 Gen2 Type-C
|
||||
- 2x USB 3.1 Gen1 Type-A
|
||||
|
||||
## Building coreboot
|
||||
|
||||
```bash
|
||||
make distclean
|
||||
make defconfig KBUILD_DEFCONFIG=configs/config.system76_oryp5
|
||||
make
|
||||
```
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
```eval_rst
|
||||
+---------------------+---------------------+
|
||||
| Type | Value |
|
||||
+=====================+=====================+
|
||||
| Socketed flash | no |
|
||||
+---------------------+---------------------+
|
||||
| Vendor | GigaDevice |
|
||||
+---------------------+---------------------+
|
||||
| Model | GD25Q127C/GD25Q128C |
|
||||
+---------------------+---------------------+
|
||||
| Size | 16 MiB |
|
||||
+---------------------+---------------------+
|
||||
| Package | SOIC-8 |
|
||||
+---------------------+---------------------+
|
||||
| Internal flashing | yes |
|
||||
+---------------------+---------------------+
|
||||
| External flashing | yes |
|
||||
+---------------------+---------------------+
|
||||
```
|
||||
|
||||
External flashing via ISP requires removing the board from the chassis.
|
||||
The IC is located under the touchpad.
|
60
Documentation/mainboard/system76/oryp6.md
Normal file
@ -0,0 +1,60 @@
|
||||
# System76 Oryx Pro (oryp6)
|
||||
|
||||
## Specs
|
||||
|
||||
- CPU
|
||||
- Intel i7-10875H
|
||||
- Chipset
|
||||
- Intel HM470
|
||||
- EC
|
||||
- ITE IT5570E running https://github.com/system76/ec
|
||||
- GPU
|
||||
- NVIDIA GeForce RTX 2080 Super (Max-Q)
|
||||
- or NVIDIA GeForce RTX 2070 (Max-Q)
|
||||
- or NVIDIA GeForce RTX 2060
|
||||
- eDP 15.6" or 17.3" 1920x1080@144Hz LCD
|
||||
- HDMI, Mini DisplayPort 1.4, and DisplayPort over USB-C
|
||||
- Memory
|
||||
- Up to 64GB (2x32GB) dual-channel DDR4 SO-DIMMs @ 3200 MHz
|
||||
- Networking
|
||||
- Gigabit Ethernet
|
||||
- M.2 PCIe/CNVi WiFi/Bluetooth
|
||||
- Intel Wi-Fi 6 AX200/AX201
|
||||
- Power
|
||||
- 180W (19.5V, 9.23A) AC adapter
|
||||
- 73Wh 3-cell battery
|
||||
- Sound
|
||||
- Internal speakers and microphone
|
||||
- Combined headphone and microphone 3.5mm jack
|
||||
- Combined microphone and S/PDIF (optical) 3.5mm jack
|
||||
- HDMI, Mini DisplayPort, USB-C DisplayPort audio
|
||||
- USB
|
||||
- 3x USB 3.2 Gen 1 Type-A
|
||||
- 1x USB Type-C with Thunderbolt 3
|
||||
- Dimensions
|
||||
- 15": 35.75cm x 23.8cm x 1.98cm, 1.99kg
|
||||
- 17": 39.59cm x 26.495cm x 1.99cm, 2.3kg
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
```eval_rst
|
||||
+---------------------+-----------------+
|
||||
| Type | Value |
|
||||
+=====================+=================+
|
||||
| Socketed flash | no |
|
||||
+---------------------+-----------------+
|
||||
| Vendor | Macronix |
|
||||
+---------------------+-----------------+
|
||||
| Model | MX25L12872F |
|
||||
+---------------------+-----------------+
|
||||
| Size | 16 MiB |
|
||||
+---------------------+-----------------+
|
||||
| Package | SOIC-8 |
|
||||
+---------------------+-----------------+
|
||||
| Internal flashing | yes |
|
||||
+---------------------+-----------------+
|
||||
| External flashing | yes |
|
||||
+---------------------+-----------------+
|
||||
```
|
||||
|
||||
The flash chip (U53) is above the M.2 SSD connectors.
|
131
Documentation/mainboard/ti/beaglebone-black.md
Normal file
@ -0,0 +1,131 @@
|
||||
# Beaglebone Black
|
||||
This page gives some details about the [BeagleBone Black] coreboot port and
|
||||
describes how to build and run it.
|
||||
|
||||
The port currently only supports booting coreboot from a micro SD card and has
|
||||
some other limitations listed below.
|
||||
|
||||
## Supported Boards
|
||||
The Beaglebone port supports the following boards:
|
||||
|
||||
- Beaglebone Black
|
||||
- Beaglebone Black Wireless
|
||||
- Beaglebone Pocket (untested, may need tweaking)
|
||||
- Beaglebone Blue (untested, may need tweaking)
|
||||
- Beaglebone Original (untested, may need tweaking)
|
||||
|
||||
## Use Cases
|
||||
This port was primarily developed as a learning exercise and there is
|
||||
potentially little reason to use it compared to the defacto bootloader choice of
|
||||
U-Boot. However, it does have some interesting practical use cases compared to
|
||||
U-Boot:
|
||||
|
||||
1. Choosing coreboot as a lightweight alternative to U-Boot. In this case,
|
||||
coreboot is used to do the absolute minimum necessary to boot Linux, forgoing
|
||||
some U-Boot features and functionality. Complex boot logic can then instead
|
||||
be moved into Linux where it can be more flexibly and safely executed. This
|
||||
is essentially the LinuxBoot philosophy. [U-Boot Falcon mode] has similar
|
||||
goals to this as well.
|
||||
2. Facilitating experimenting with coreboot on real hardware. The Beaglebone
|
||||
Black is widely available at a low pricepoint (~$65) making it a great way to
|
||||
experiment with coreboot on real ARMv7 hardware. It also works well as a
|
||||
development platform as it has exposed pads for JTAG and, due to the way it
|
||||
boots, is effectively impossible to brick.
|
||||
3. The Beaglebone Black is often used as a external flasher and EHCI debug
|
||||
gadget in the coreboot community, so many members have access to it and can
|
||||
use it as a reference platform.
|
||||
|
||||
## Quickstart
|
||||
1. Run `make menuconfig` and select _TI_/_Beaglebone_ in the _Mainboard_ menu.
|
||||
2. Add a payload as normal.
|
||||
3. Run `make`.
|
||||
4. Copy the resulting `build/MLO` file to the micro SD card at offset 128k - ie
|
||||
`dd if=build/MLO of=/dev/sdcard seek=1 bs=128k`.
|
||||
|
||||
**NOTE**: By default, the Beaglebone is configured to try to boot first from
|
||||
eMMC before booting from SD card. To ensure that the Beaglebone boots from SD,
|
||||
either erase the internal eMMC or hold the _S2_ button while powering on (note
|
||||
that this has to be while powering on - ie when plugging in the USB or DC barrel
|
||||
jack - the boot order doesn't change on reset) to prioritize SD in the boot
|
||||
order.
|
||||
|
||||
## Serial Console
|
||||
By default, coreboot uses UART0 as the serial console. UART0 is available
|
||||
through the J1 header on both the Beaglebone Black and Beaglebone Black
|
||||
Wireless. The serial runs at 3.3V and 115200 8n1.
|
||||
|
||||
The pin mapping is shown below for J1.
|
||||
|
||||
```eval_rst
|
||||
+----------------------------+------------+
|
||||
| Pin number | Function |
|
||||
+============================+============+
|
||||
| 1 (Closest to barrel jack) | GND |
|
||||
+----------------------------+------------+
|
||||
| 4 | RX |
|
||||
+----------------------------+------------+
|
||||
| 5 | TX |
|
||||
+----------------------------+------------+
|
||||
```
|
||||
|
||||
## Boot Process
|
||||
The AM335x contains ROM code to allow booting in a number of different
|
||||
configurations. More information about the boot ROM code can be found in the
|
||||
AM335x technical reference manual (_SPRUH73Q_) in the _Initialization_ section.
|
||||
|
||||
This coreboot port is currently configured to boot in "SD Raw Mode" where the
|
||||
boot binary, with header ("Table of Contents" in TI's nomenclature), is placed
|
||||
at the offset of 0x20000 (128KB) on the SD card. The boot ROM loads the coreboot
|
||||
bootblock stage into SRAM and executes it.
|
||||
|
||||
The bootblock and subsequent romstage and ramstage coreboot stages expect that
|
||||
the coreboot image, containing the CBFS, is located at 0x20000 on the SD card.
|
||||
All stages directly read from the SD card in order to load the next stage in
|
||||
sequence.
|
||||
|
||||
## Clock Initialization and PMIC
|
||||
To simplify the port, the TPS65217C Power Management IC (PMIC) on the Beaglebone
|
||||
Black is not configured by coreboot. By default, the PMIC reset values for
|
||||
VDD_MPU (1.1V) and VDD_CORE (1.8V) are within the Operating Performance Point
|
||||
(OPP) for the MPU PLL configuration set by the boot ROM of 500 MHz.
|
||||
|
||||
When using Linux as a payload, the kernel will appropriately scale the core
|
||||
voltages for the desired MPU clock frequency as defined in the device tree.
|
||||
|
||||
One significant difference because of this to the U-Boot port is that the DCDC1
|
||||
rail that powers the DDR3 RAM will be 1.5V by default. The Micron DDR3 supports
|
||||
both 1.35V and 1.5V and U-Boot makes use of this by setting it to 1.35V to
|
||||
conserve power. Fortunately, Linux is again able to configure this rail but it
|
||||
involves adding an entry to the device tree:
|
||||
|
||||
&dcdc1_reg {
|
||||
regulator-name = "vdd_ddr3";
|
||||
regulator-min-microvolt = <1350000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
If this port was to be extended to work with boards or SoCs with different
|
||||
requirements for the MPU clock frequency or different Operating Performance
|
||||
Points, then the port may need to be extended to set the core voltages and MPU
|
||||
PLL within coreboot, prior to loading a payload. Extending coreboot so that it
|
||||
can configure the PMIC would also be necessary if there was a requirement for
|
||||
coreboot to run at a different MPU frequency than the 500 MHz set by the boot
|
||||
ROM.
|
||||
|
||||
# Todo
|
||||
- Allow coreboot to run from the Beaglebone Black's internal eMMC. This would
|
||||
require updating the `mmc.c` driver to support running from both SD and eMMC.
|
||||
- Support the boot ROMs *FAT mode* so that the coreboot binary can be placed on
|
||||
a FAT partition.
|
||||
- Increase the MMC read speed, it currently takes ~15s to read ~20MB which is a
|
||||
bit slow. To do this, it should be possible to update the MMC driver to:
|
||||
- Increase the supported blocksize (currently is always set to 1)
|
||||
- Support 4-bit data width (currently only supports 1-bit data width)
|
||||
- Convert the while loops in the MMC driver to timeout so that coreboot does not
|
||||
hang on a bad SD card or when the SD card is removed during boot.
|
||||
|
||||
|
||||
[Beaglebone Black]: https://beagleboard.org/black [U-Boot Falcon mode]:
|
||||
https://elixir.bootlin.com/u-boot/v2020.07/source/doc/README.falcon
|
@ -76,15 +76,15 @@ firmware_vendor.rom
|
||||
|
||||
```bash
|
||||
[upsquared]$ mkdir extracted && cd extracted
|
||||
[extracted]$ ifdtool -x ../firmware_vendor.rom
|
||||
[extracted]$ ifdtool -x ../firmware_vendor.rom
|
||||
File ../firmware_vendor.rom is 16777216 bytes
|
||||
Peculiar firmware descriptor, assuming Ibex Peak compatibility.
|
||||
Flash Region 0 (Flash Descriptor): 00000000 - 00000fff
|
||||
Flash Region 1 (BIOS): 00001000 - 00efefff
|
||||
Flash Region 0 (Flash Descriptor): 00000000 - 00000fff
|
||||
Flash Region 1 (BIOS): 00001000 - 00efefff
|
||||
Flash Region 2 (Intel ME): 07fff000 - 00000fff (unused)
|
||||
Flash Region 3 (GbE): 07fff000 - 00000fff (unused)
|
||||
Flash Region 4 (Platform Data): 07fff000 - 00000fff (unused)
|
||||
Flash Region 5 (Reserved): 00eff000 - 00ffefff
|
||||
Flash Region 5 (Reserved): 00eff000 - 00ffefff
|
||||
Flash Region 6 (Reserved): 07fff000 - 00000fff (unused)
|
||||
Flash Region 7 (Reserved): 07fff000 - 00000fff (unused)
|
||||
Flash Region 8 (EC): 07fff000 - 00000fff (unused)
|
||||
|
@ -75,7 +75,8 @@ be more frequent than was needed, so we scaled it back to twice a year.
|
||||
- [ ] Test the release from the actual release tarballs.
|
||||
- [ ] Push signed Tag to repo.
|
||||
- [ ] Announce that the release tag is done on IRC.
|
||||
- [ ] Upload release files to web server
|
||||
- [ ] 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.
|
||||
@ -176,8 +177,9 @@ commit db508565d2483394b709654c57533e55eebace51 (HEAD, tag: 4.6, origin/master,
|
||||
...
|
||||
````
|
||||
|
||||
When you used the script to generate the release, a tag was generated in the tree that was downloaded.
|
||||
From the coreboot-X.Y tree, just run: `git push -f origin <TAG (X.Y)>`
|
||||
When you used the script to generate the release, a signed tag was generated in the
|
||||
tree that was downloaded. From the coreboot-X.Y tree, 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.
|
||||
|
||||
@ -197,16 +199,16 @@ the coreboot server, and put them in the release directory 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/19515/
|
||||
Here is an example commit to change it: <https://review.coreboot.org/c/homepage/+/19515>
|
||||
|
||||
## Upload crossgcc sources
|
||||
Sometimes the source files for older revisions of
|
||||
crossgcc disappear. To deal with that we maintain a mirror at
|
||||
https://www.coreboot.org/releases/crossgcc-sources/ where we host the
|
||||
<https://www.coreboot.org/releases/crossgcc-sources/> where we host the
|
||||
sources used by the crossgcc scripts that are part of coreboot releases.
|
||||
|
||||
Run
|
||||
@ -220,7 +222,7 @@ sources. Download them yourself and copy them into the crossgcc-sources
|
||||
directory on the server.
|
||||
|
||||
## After the release is complete
|
||||
Post the release notes on https://blogs.coreboot.org
|
||||
Post the release notes on <https://blogs.coreboot.org>
|
||||
|
||||
## Making a branch
|
||||
At times we will need to create a branch, generally for patch fixes.
|
||||
|
@ -1,18 +1,114 @@
|
||||
Upcoming release - coreboot 4.13
|
||||
coreboot 4.13
|
||||
================================
|
||||
|
||||
The 4.13 release is planned for November 2020.
|
||||
coreboot 4.13 was released on November 20th, 2020.
|
||||
|
||||
Update this document with changes that should be in the release notes.
|
||||
Since 4.12 there were 4200 new commits by over 234 developers.
|
||||
Of these, about 72 contributed to coreboot for the first time.
|
||||
|
||||
* 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.
|
||||
Thank you to all developers who again helped made coreboot better
|
||||
than ever, and a big welcome to our new contributors!
|
||||
|
||||
New mainboards
|
||||
--------------
|
||||
|
||||
- Acer G43T-AM3
|
||||
- AMD Cereme
|
||||
- Asus A88XM-E FM2+
|
||||
- Biostar TH61-ITX
|
||||
- BostenTech GBYT4
|
||||
- Clevo L140CU/L141CU
|
||||
- Dell OptiPlex 9010
|
||||
- Example Min86 (fake board)
|
||||
- Google Ambassador
|
||||
- Google Asurada
|
||||
- Google Berknip
|
||||
- Google Boldar
|
||||
- Google Boten
|
||||
- Google Burnet
|
||||
- Google Cerise
|
||||
- Google Coachz
|
||||
- Google Dalboz
|
||||
- Google Dauntless
|
||||
- Google Delbin
|
||||
- Google Dirinboz
|
||||
- Google Dooly
|
||||
- Google Drawcia
|
||||
- Google Eldrid
|
||||
- Google Elemi
|
||||
- Google Esche
|
||||
- Google Ezkinil
|
||||
- Google Faffy
|
||||
- Google Fennel
|
||||
- Google Genesis
|
||||
- Google Hayato
|
||||
- Google Lantis
|
||||
- Google Lindar
|
||||
- Google Madoo
|
||||
- Google Magolor
|
||||
- Google Metaknight
|
||||
- Google Morphius
|
||||
- Google Noibat
|
||||
- Google Pompom
|
||||
- Google Shuboz
|
||||
- Google Stern
|
||||
- Google Terrador
|
||||
- Google Todor
|
||||
- Google Trembyle
|
||||
- Google Vilboz
|
||||
- Google Voema
|
||||
- Google Volteer2
|
||||
- Google Voxel
|
||||
- Google Willow
|
||||
- Google Woomax
|
||||
- Google Wyvern
|
||||
- HP EliteBook 2560p
|
||||
- HP EliteBook Folio 9480m
|
||||
- HP ProBook 6360b
|
||||
- Intel Alderlake-P RVP
|
||||
- Kontron COMe-bSL6
|
||||
- Lenovo ThinkPad X230s
|
||||
- Open Compute Project DeltaLake
|
||||
- Prodrive Hermes
|
||||
- Purism Librem Mini
|
||||
- Purism Librem Mini v2
|
||||
- Siemens Chili
|
||||
- Supermicro X11SSH-F
|
||||
- System76 lemp9
|
||||
|
||||
Removed mainboards
|
||||
------------------
|
||||
|
||||
- Google Cheza
|
||||
- Google DragonEgg
|
||||
- Google Ripto
|
||||
- Google Sushi
|
||||
- Open Compute Project SonoraPass
|
||||
|
||||
Significant changes
|
||||
-------------------
|
||||
|
||||
### Native refcode implementation for Bay Trail
|
||||
|
||||
Bay Trail no longer needs a refcode binary to function properly. The refcode
|
||||
was reimplemented as coreboot code, which should be functionally equivalent.
|
||||
Thus, coreboot only needs to run the MRC.bin to successfully boot Bay Trail.
|
||||
|
||||
### Unusual config files to build test more code
|
||||
|
||||
There's some new highly-unusual config files, whose only purpose is to coerce
|
||||
Jenkins into build-testing several disabled-by-default coreboot config options.
|
||||
This prevents them from silently decaying over time because of build failures.
|
||||
|
||||
### Initial support for Intel Trusted eXecution Technology
|
||||
|
||||
coreboot now supports enabling Intel TXT. Though it's not feature-complete yet,
|
||||
the code allows successfully launching tboot, a Measured Launch Environment. It
|
||||
was tested on Haswell using an Asrock B85M Pro4 mainboard with TPM 2.0 on LPC.
|
||||
Though support for other platforms is still not ready, it is being worked on.
|
||||
The Haswell MRC.bin needs to be patched so as to enable DPR. Given that the MRC
|
||||
binary cannot be redistributed, the best long-term solution is to replace it.
|
||||
|
||||
### Hidden PCI devices
|
||||
|
||||
This new functionality takes advantage of the existing 'hidden' keyword in the
|
||||
@ -39,4 +135,126 @@ attributes as per their datasheet and convert those attributes into SPD files fo
|
||||
the platforms. More details about the tools are added in
|
||||
[README.md](https://review.coreboot.org/plugins/gitiles/coreboot/+/refs/heads/master/util/spd_tools/intel/lp4x/README.md).
|
||||
|
||||
### Add significant changes here
|
||||
### New version of SMM loader
|
||||
|
||||
A new version of the SMM loader which accommodates platforms with over 32
|
||||
CPU threads. The existing version of SMM loader uses a 64K code/data
|
||||
segment and only a limited number of CPU threads can fit into one segment
|
||||
(because of save state, STM, other features, etc). This loader extends beyond
|
||||
the 64K segment to accommodate additional CPUs and in theory allows as many
|
||||
CPU threads as possible limited only by SMRAM space and not by 64K. By default
|
||||
this loader version is disabled. Please see cpu/x86/Kconfig for more info.
|
||||
|
||||
### Address Sanitizer
|
||||
|
||||
coreboot now has an in-built Address Sanitizer, a runtime memory debugger
|
||||
designed to find out-of-bounds access and use-after-scope bugs. It is made
|
||||
available on all x86 platforms in ramstage and on QEMU i440fx, Intel Apollo
|
||||
Lake, and Haswell in romstage. Further, it can be enabled in romstage on other
|
||||
x86 platforms as well. Refer [ASan documentation](../technotes/asan.md) for
|
||||
more info.
|
||||
|
||||
### Initial support for x86_64
|
||||
|
||||
The x86_64 code support has been revived and enabled for QEMU. While it started
|
||||
as PoC and the only supported platform is an emulator, there's interest in
|
||||
enabling additional platforms. It would allow to access more than 4GiB of memory
|
||||
at runtime and possibly brings optimised code for faster execution times.
|
||||
It still needs changes in assembly, fixed integer to pointer conversions in C,
|
||||
wrappers for blobs, support for running Option ROMs, among other things.
|
||||
|
||||
### Preparations to minimize enabling PCI bus mastering
|
||||
|
||||
For security reasons, bus mastering should be enabled as late as possible. In
|
||||
coreboot, it's usually not necessary and payloads should only enable it for
|
||||
devices they use. Since not all payloads enable bus mastering properly yet,
|
||||
some Kconfig options were added as an intermediate step to give some sort of
|
||||
"backwards compatibility", which allow enabling or disabling bus mastering by
|
||||
groups.
|
||||
|
||||
Currently available groups are:
|
||||
|
||||
* PCI bridges
|
||||
* Any devices
|
||||
|
||||
For now, "Any devices" is enabled by default to keep the traditional behaviour,
|
||||
which also includes all other options. This is currently necessary, for instance,
|
||||
for libpayload-based payloads as the drivers don't enable bus mastering for PCI
|
||||
bridges.
|
||||
|
||||
Exceptional cases, that may still need early bus master enabling in the future,
|
||||
should get their own per-reason Kconfig option. Ideally before the next release.
|
||||
|
||||
### Early runtime configurability of the console log level
|
||||
|
||||
Traditionally, we didn't allow the log level of the `romstage` console
|
||||
to be changed at runtime (e.g. via `get_option()`). It turned out that
|
||||
the technical constraints for this (no global variables in `romstage`)
|
||||
vanished long ago, though. The new behaviour is to query `get_option()`
|
||||
now from the second stage that uses the console on. In other words, if
|
||||
the `bootblock` already enables the console, the `romstage` log level
|
||||
can be changed via `get_option()`. Keeping the log level of the first
|
||||
console static ensures that we can see console output even if there's
|
||||
a bug in the more involved code to query options.
|
||||
|
||||
### Resource allocator v4
|
||||
|
||||
A new revision of resource allocator v4 is now added to coreboot that supports
|
||||
mutiple ranges for allocating resources. Unlike the previous allocator (v3), it does
|
||||
not use the topmost available window for allocation. Instead, it uses the first
|
||||
window within the address space that is available and satisfies the resource request.
|
||||
This allows utilization of the entire available address space and also allows
|
||||
allocation above the 4G boundary. The old resource allocator v3 is still retained for
|
||||
some AMD platforms that do not conform to the requirements of the allocator.
|
||||
|
||||
Deprecations
|
||||
------------
|
||||
|
||||
### PCI bus master configuration options
|
||||
|
||||
In order to minimize the usage of PCI bus mastering, the options we introduced in
|
||||
this release will be dropped in a future release again. For more details, please
|
||||
see [Preparations to minimize enabling PCI bus mastering](#preparations-to-minimize-enabling-pci-bus-mastering-in-coreboot).
|
||||
|
||||
### Resource allocator v3
|
||||
|
||||
Resource allocator v3 is retained in coreboot tree because the following platforms
|
||||
do not conform to the requirements of the resource allocation i.e. not all the fixed
|
||||
resources of the platform are provided during the `read_resources()` operation:
|
||||
|
||||
* northbridge/amd/pi/00630F01
|
||||
* northbridge/amd/pi/00730F01
|
||||
* northbridge/amd/pi/00660F01
|
||||
* northbridge/amd/agesa/family14
|
||||
* northbridge/amd/agesa/family15tn
|
||||
* northbridge/amd/agesa/family16kb
|
||||
|
||||
In order to have a single unified allocator in coreboot, this notice is being added
|
||||
to ensure that the platforms listed above are fixed before the next release. If there
|
||||
is interest in maintaining support for these platforms beyond the next release,
|
||||
please ensure that the platforms are fixed to conform to the expectations of resource
|
||||
allocation.
|
||||
|
||||
Notes
|
||||
-----
|
||||
|
||||
### Intel microcode updates
|
||||
|
||||
Intel microcode updates tagged *microcode-20200616* are still included in our
|
||||
builds. Note, [Intel released new microcode updates]
|
||||
(https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/blob/main/releasenote.md)
|
||||
tagged
|
||||
|
||||
1. *microcode-20201110*
|
||||
2. *microcode-20201112*
|
||||
3. *microcode-20201118*
|
||||
|
||||
with security updates for [INTEL-SA-00381]
|
||||
(https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00381.html)
|
||||
and [INTEL-SA-00389]
|
||||
(https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00389.html).
|
||||
|
||||
Due to too short time for rigorous testing and bad experience with botched
|
||||
microcode updates in the past, these new updates are not included. Users wanting
|
||||
to use those, can apply them in the operating system, or update the submodule
|
||||
pointer themselves.
|
||||
|
161
Documentation/releases/coreboot-4.14-relnotes.md
Normal file
@ -0,0 +1,161 @@
|
||||
coreboot 4.14
|
||||
=============
|
||||
|
||||
coreboot 4.14 was released on May 10th, 2021.
|
||||
|
||||
Since 4.13 there have been 3660 new commits by 215 developers.
|
||||
Of these, about 50 contributed to coreboot for the first time.
|
||||
Welcome to the project!
|
||||
|
||||
These changes have been all over the place, so that there's no
|
||||
particular area to focus on when describing this release: We had
|
||||
improvements to mainboards, to chipsets (including much welcomed
|
||||
work to open source implementations of what has been blobs before),
|
||||
to the overall architecture.
|
||||
|
||||
Thank you to all developers who made coreboot the great open source
|
||||
firmware project that it is, and made our code better than ever.
|
||||
|
||||
New mainboards
|
||||
--------------
|
||||
|
||||
* AMD Bilby
|
||||
* AMD Majolica
|
||||
* GIGABYTE GA-D510UD
|
||||
* Google Blipper
|
||||
* Google Brya
|
||||
* Google Cherry
|
||||
* Google Collis
|
||||
* Google Copano
|
||||
* Google Cozmo
|
||||
* Google Cret
|
||||
* Google Drobit
|
||||
* Google Galtic
|
||||
* Google Gumboz
|
||||
* Google Guybrush
|
||||
* Google Herobrine
|
||||
* Google Homestar
|
||||
* Google Katsu
|
||||
* Google Kracko
|
||||
* Google Lalala
|
||||
* Google Makomo
|
||||
* Google Mancomb
|
||||
* Google Marzipan
|
||||
* Google Pirika
|
||||
* Google Sasuke
|
||||
* Google Sasukette
|
||||
* Google Spherion
|
||||
* Google Storo
|
||||
* Google Volet
|
||||
* HP 280 G2
|
||||
* Intel Alderlake-M RVP
|
||||
* Intel Alderlake-M RVP with Chrome EC
|
||||
* Intel Elkhartlake LPDDR4x CRB
|
||||
* Intel shadowmountain
|
||||
* Kontron COMe-mAL10
|
||||
* MSI H81M-P33 (MS-7817 v1.2)
|
||||
* Pine64 ROCKPro64
|
||||
* Purism Librem 14
|
||||
* System76 darp5
|
||||
* System76 galp3-c
|
||||
* System76 gaze15
|
||||
* System76 oryp5
|
||||
* System76 oryp6
|
||||
|
||||
Removed mainboards
|
||||
------------------
|
||||
|
||||
* Google Boldar
|
||||
* Intel Cannonlake U LPDDR4 RVP
|
||||
* Intel Cannonlake Y LPDDR4 RVP
|
||||
|
||||
Deprecations and incompatible changes
|
||||
-------------------------------------
|
||||
|
||||
### SAR support in VPD for Chrome OS
|
||||
|
||||
SAR support in VPD has been deprecated for Chrome OS platforms for > 1
|
||||
year now. All new Chrome OS platforms have switched to using SAR
|
||||
tables from CBFS. For the next release, coreboot is updated to align
|
||||
with the Chrome OS factory changes and hence SAR support in VPD is
|
||||
deprecated in [CB:51483](https://review.coreboot.org/51483). Starting
|
||||
with this release, anyone building coreboot for an already released
|
||||
Chrome OS platform with SAR table in VPD will have to extract the
|
||||
"wifi_sar" key from VPD and add it as a file to CBFS using following
|
||||
steps:
|
||||
* On DUT, read SAR value using `vpd -i RO_VPD -g wifi_sar`
|
||||
* In coreboot repo, generate CBFS SAR file using:
|
||||
`echo ${SAR_STRING} > site-local/${BOARD}-sar.hex`
|
||||
* Add to site-local/Kconfig:
|
||||
```
|
||||
config WIFI_SAR_CBFS_FILEPATH
|
||||
string
|
||||
default "site-local/${BOARD}-sar.hex"
|
||||
```
|
||||
|
||||
### CBFS stage file format change
|
||||
|
||||
[CB:46484](https://review.coreboot.org/46484) changed the in-flash
|
||||
file format of coreboot stages to prepare for per-file signature
|
||||
verification. As described in the commit message in more details,
|
||||
when manipulating stages in a CBFS, the cbfstool build must match the
|
||||
coreboot image so that they're using the same format: coreboot.rom
|
||||
and cbfstool must be built from coreboot sources that either both
|
||||
contain this change or both do not contain this change.
|
||||
|
||||
Since stages are usually only handled by the coreboot build system
|
||||
which builds its own cbfstool (and therefore it always matches
|
||||
coreboot.rom) this shouldn't be a concern in the vast majority of
|
||||
scenarios.
|
||||
|
||||
Significant changes
|
||||
-------------------
|
||||
|
||||
### AMD SoC cleanup and initial Cezanne APU support
|
||||
|
||||
There's initial support for the AMD Cezanne APUs in the tree. This code
|
||||
hasn't started as a copy of the previous generation, but was based on a
|
||||
slightly modified version of the example/min86 SoC. During the cleanup
|
||||
of the existing Picasso SoC code the common parts of the code were
|
||||
moved to the common AMD SoC code, so that they could be used by the
|
||||
Cezanne code instead of adding another slightly different copy.
|
||||
|
||||
### X86 bootblock layout
|
||||
|
||||
The static size C_ENV_BOOTBLOCK_SIZE was mostly dropped in favor of
|
||||
dynamically allocating the stage size; the Kconfig is still available
|
||||
to use as a fixed size and to enforce a maximum for selected chipsets.
|
||||
Linker sections are now top-aligned for a reduced flash footprint and to
|
||||
maintain the requirements of near jump from reset vector.
|
||||
|
||||
### ACPI GNVS framework
|
||||
|
||||
SMI handlers for APM_CNT_GNVS_UDPATE were dropped; GNVS pointer to SMM is
|
||||
now passed from within SMM_MODULE_LOADER. Allocation and initialisations
|
||||
for common ACPI GNVS table entries were largely moved to one centralized
|
||||
implementation.
|
||||
|
||||
### Intel Xeon Scalable Processor support is now considered mature
|
||||
|
||||
Intel Xeon Scalable Processor (Xeon-SP) family [1] is designed
|
||||
primarily to serve the needs of the server market.
|
||||
|
||||
coreboot support for Xeon-SP is in src/soc/intel/xeon_sp directory.
|
||||
This release has support for SkyLake-SP (SKX-SP) which is the 2nd
|
||||
generation, and for CooperLake-SP (CPX-SP) which is the 3rd generation
|
||||
or the latest generation [2] on market.
|
||||
|
||||
With this release, the codebase for multiple generations of Xeon-SP
|
||||
were unified and optimized:
|
||||
* SKX-SP SoC code is used in OCP TiogaPass mainboard [3]. Support for
|
||||
this board is in Proof Of Concept Status.
|
||||
* CPX-SP SoC code is used in OCP DeltaLake mainboard. Support for
|
||||
this board is in DVT (Design Validation Test) exit equivalent status.
|
||||
Features supported, (performance/stability) test scopes, known issues,
|
||||
features gaps are described in [4].
|
||||
|
||||
|
||||
[1] https://www.intel.com/content/www/us/en/products/details/processors/xeon/scalable.html
|
||||
[2] https://www.intel.com/content/www/us/en/products/docs/processors/xeon/3rd-gen-xeon-scalable-processors-brief.html
|
||||
[3] ../mainboard/ocp/tiogapass.md
|
||||
[4] ../mainboard/ocp/deltalake.md
|
@ -13,6 +13,7 @@ Release notes for previous releases
|
||||
* [4.10 - July 2019](coreboot-4.10-relnotes.md)
|
||||
* [4.11 - November 2019](coreboot-4.11-relnotes.md)
|
||||
* [4.12 - May 2020](coreboot-4.12-relnotes.md)
|
||||
* [4.13 - November 2020](coreboot-4.13-relnotes.md)
|
||||
|
||||
The checklist contains instructions to ensure that a release covers all
|
||||
important things and provides a reliable format for tarballs, branch
|
||||
@ -24,4 +25,4 @@ Upcoming release
|
||||
----------------
|
||||
|
||||
Please add to the release notes as changes are added:
|
||||
* [4.13 - November 2020](coreboot-4.13-relnotes.md)
|
||||
* [4.14 - May 2021](coreboot-4.14-relnotes.md)
|
||||
|
@ -188,12 +188,12 @@ In addition to adding the coreboot files into the read-only region,
|
||||
enabling vboot causes the build script to add the read/write files into
|
||||
coreboot file systems in *FW_MAIN_A* and *FW_MAIN_B*.
|
||||
|
||||
**RO_REGION_ONLY**
|
||||
**RO_REGION_ONLY**
|
||||
|
||||
The files added to this list will only be placed in the read-only region and
|
||||
not into the read/write coreboot file systems in *FW_MAIN_A* and *FW_MAIN_B*.
|
||||
|
||||
**VBOOT_ENABLE_CBFS_FALLBACK**
|
||||
**VBOOT_ENABLE_CBFS_FALLBACK**
|
||||
|
||||
Normally coreboot will use the active read/write coreboot file system for all
|
||||
of it's file access when vboot is active and is not in recovery mode.
|
||||
|
@ -8,6 +8,8 @@
|
||||
- Facebook Monolith
|
||||
|
||||
## Google
|
||||
- Asurada
|
||||
- Hayato
|
||||
- Auron_Paine (Acer C740 Chromebook)
|
||||
- Auron_Yuna (Acer Chromebook 15 (C910/CB5-531))
|
||||
- Buddy (Acer Chromebase 24)
|
||||
@ -20,7 +22,6 @@
|
||||
- Tricky (Dell Chromebox 3010)
|
||||
- Zako (HP Chromebox G1)
|
||||
- Butterfly (HP Pavilion Chromebook 14)
|
||||
- Cheza
|
||||
- Banon (Acer Chromebook 15 (CB3-532))
|
||||
- Celes (Samsung Chromebook 3)
|
||||
- Cyan (Acer Chromebook R11 (C738T))
|
||||
@ -35,7 +36,6 @@
|
||||
- Daisy (Samsung Chromebook (2012))
|
||||
- Deltan
|
||||
- Deltaur
|
||||
- DragonEgg
|
||||
- Drallion
|
||||
- Eve (Google Pixelbook)
|
||||
- Fizz
|
||||
@ -58,9 +58,12 @@
|
||||
- Rainier
|
||||
- Akemi
|
||||
- Dratini
|
||||
- Duffy Legacy (32MB)
|
||||
- Duffy
|
||||
- Faffy
|
||||
- Hatch
|
||||
- Jinlon
|
||||
- Kaisa Legacy (32MB)
|
||||
- Kaisa
|
||||
- Kohaku
|
||||
- Kindred
|
||||
@ -68,10 +71,14 @@
|
||||
- Mushu
|
||||
- Palkia
|
||||
- Nightfury
|
||||
- Noibat
|
||||
- Puff
|
||||
- Helios_Diskswap
|
||||
- Stryke
|
||||
- Sushi
|
||||
- Wyvern
|
||||
- Dooly
|
||||
- Ambassador
|
||||
- Genesis
|
||||
- Guado (ASUS Chromebox CN62)
|
||||
- Jecht
|
||||
- Rikku (Acer Chromebox CXI2)
|
||||
@ -91,6 +98,12 @@
|
||||
- Juniper
|
||||
- Kappa
|
||||
- Damu
|
||||
- Cerise
|
||||
- Stern
|
||||
- Willow
|
||||
- Esche
|
||||
- Burnet
|
||||
- Fennel
|
||||
- Link (Google Chromebook Pixel (2013))
|
||||
- Mistral
|
||||
- Nyan
|
||||
@ -101,13 +114,13 @@
|
||||
- Hana (Lenovo N23 Yoga Chromebook)
|
||||
- Parrot (Acer C7/C710 Chromebook)
|
||||
- Peach Pit (Samsung Chromebook 2 11\")
|
||||
- Atlas
|
||||
- Atlas (Google Pixelbook Go)
|
||||
- Poppy
|
||||
- Nami
|
||||
- Nautilus
|
||||
- Nocturne
|
||||
- Rammus
|
||||
- Soraka
|
||||
- Nautilus (Samsung Chromebook Plus (V2 / LTE))
|
||||
- Nocturne (Google Pixel Slate)
|
||||
- Rammus (Asus Chromebook C425, Flip C433, Flip C434)
|
||||
- Soraka (HP Chromebook x2)
|
||||
- Banjo (Acer Chromebook 15 (CB3-531))
|
||||
- Candy (Dell Chromebook 11 3120)
|
||||
- Clapper (Lenovo N20 Chromebook)
|
||||
@ -139,9 +152,13 @@
|
||||
- Smaug (Google Pixel C)
|
||||
- Storm (OnHub Router TGR1900)
|
||||
- Stout (Lenovo Thinkpad X131e Chromebook)
|
||||
- Trogdor
|
||||
- Lazor
|
||||
- Bubs
|
||||
- Coachz
|
||||
- Homestar
|
||||
- Lazor
|
||||
- Marzipan
|
||||
- Pompom
|
||||
- Trogdor
|
||||
- Veyron_Jaq (Haier Chromebook 11)
|
||||
- Veyron_Jerry (Hisense Chromebook 11)
|
||||
- Veyron_Mighty (Haier Chromebook 11(edu))
|
||||
@ -149,11 +166,22 @@
|
||||
- Veyron_Speedy (ASUS C201 Chromebook)
|
||||
- Veyron_Mickey (Asus Chromebit CS10)
|
||||
- Veyron_Rialto
|
||||
- Dalboz
|
||||
- Vilboz
|
||||
- Ezkinil
|
||||
- Morphius
|
||||
- Trembyle
|
||||
- Berknip
|
||||
- Woomax
|
||||
- Dirinboz
|
||||
- Shuboz
|
||||
|
||||
## HP
|
||||
- Z220 SFF Workstation
|
||||
|
||||
## Intel
|
||||
- Alderlake-P RVP
|
||||
- Alderlake-P RVP with Chrome EC
|
||||
- Basking Ridge CRB
|
||||
- Cannonlake U LPDDR4 RVP
|
||||
- Cannonlake Y LPDDR4 RVP
|
||||
@ -206,6 +234,7 @@
|
||||
- ThinkPad X1
|
||||
- ThinkPad X230
|
||||
- ThinkPad X230t
|
||||
- ThinkPad X230s
|
||||
- ThinkPad X60 / X60s / X60t
|
||||
|
||||
## OpenCellular
|
||||
@ -226,6 +255,7 @@
|
||||
## Supermicro
|
||||
- X11SSH-TF
|
||||
- X11SSM-F
|
||||
- X11SSH-F/X11SSH-LN4F
|
||||
|
||||
## UP
|
||||
- Squared
|
||||
|
@ -240,47 +240,12 @@ in an Integration Guide.
|
||||
## APCB setup
|
||||
|
||||
APCBs are used to provide the PSP with SPD information and optionally a set of
|
||||
GPIOs to use for selecting which SPD to load.
|
||||
|
||||
### Prebuilt
|
||||
The picasso `Makefile` expects APCBs to be located in
|
||||
`3rdparty/blobs/mainboard/$(MAINBOARDDIR)`. If you have a pre-built binary just
|
||||
add the following to your mainboard's Makefile.
|
||||
|
||||
```
|
||||
# i.e., 3rdparty/blobs/mainboard/amd/mandolin/APCB_mandolin.bin
|
||||
APCB_SOURCES = mandolin
|
||||
```
|
||||
GPIOs to use for selecting which SPD to load. A list of APCB files should be
|
||||
specified in `APCB_SOURCES`.
|
||||
|
||||
### Generating APCBs
|
||||
If you have a template APCB file, the `apcb_edit` tool can be used to inject the
|
||||
SPD and GPIOs used to select the correct slot. Entries should match this
|
||||
pattern `{NAME}_x{1,2}`. There should be a matching SPD hex file in
|
||||
`SPD_SOURCES_DIR` matching the pattern `{NAME}.spd.hex`.
|
||||
The `_x{1,2}` suffix denotes single or dual channel. Up to 16 slots can be used.
|
||||
If a slot is empty, the special empty keyword can be used. This will generate
|
||||
an APCB with an empty SPD.
|
||||
|
||||
```
|
||||
APCB_SOURCES = hynix-HMA851S6CJR6N-VK_x1 # 0b0000
|
||||
APCB_SOURCES += hynix-HMAA1GS6CMR6N-VK_x2 # 0b0001
|
||||
APCB_SOURCES += empty # 0b0010
|
||||
APCB_SOURCES += samsung-K4A8G165WC-BCWE_x1 # 0b0011
|
||||
```
|
||||
|
||||
#### APCB Board ID GPIO configuration.
|
||||
The GPIOs determine which memory SPD will be used during boot.
|
||||
```
|
||||
# APCB_BOARD_ID_GPIO[0-3] = GPIO_NUMBER GPIO_IO_MUX GPIO_BANK_CTL
|
||||
# GPIO_NUMBER: FCH GPIO number
|
||||
# GPIO_IO_MUX: Value write to IOMUX to configure this GPIO
|
||||
# GPIO_BANK_CTL: Value write to GPIOBankCtl[23:16] to configure this GPIO
|
||||
|
||||
APCB_BOARD_ID_GPIO0 = 121 1 0
|
||||
APCB_BOARD_ID_GPIO1 = 120 1 0
|
||||
APCB_BOARD_ID_GPIO2 = 131 3 0
|
||||
APCB_BOARD_ID_GPIO3 = 116 1 0
|
||||
```
|
||||
SPD and GPIOs used to select the correct slot.
|
||||
|
||||
## Footnotes
|
||||
|
||||
|
150
Documentation/soc/intel/cse_fw_update/Layout_after.svg
Normal file
@ -0,0 +1,150 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by Microsoft Visio, SVG Export Layout_after.svg Page-1 -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
|
||||
width="2.39231in" height="2.05998in" viewBox="0 0 172.246 148.318" xml:space="preserve" color-interpolation-filters="sRGB"
|
||||
class="st12">
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
.st1 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
|
||||
.st2 {fill:#000000;font-family:Calibri;font-size:0.333344em}
|
||||
.st3 {fill:#ffc000;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
|
||||
.st4 {fill:#000000;font-family:Calibri;font-size:0.499992em}
|
||||
.st5 {fill:#a5a5a5;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
|
||||
.st6 {fill:#a5a5a5;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
|
||||
.st7 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
|
||||
.st8 {stroke:#4bacc6;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
|
||||
.st9 {font-size:1em}
|
||||
.st10 {marker-end:url(#mrkr4-59);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
|
||||
.st11 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.22935779816514}
|
||||
.st12 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<defs id="Markers">
|
||||
<g id="lend4">
|
||||
<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"/>
|
||||
</g>
|
||||
<marker id="mrkr4-59" class="st11" refX="-8.72" orient="auto" markerUnits="strokeWidth" overflow="visible">
|
||||
<use xlink:href="#lend4" transform="scale(-4.36,-4.36) "/>
|
||||
</marker>
|
||||
</defs>
|
||||
<g>
|
||||
<title>Page-1</title>
|
||||
<g id="shape116-1" transform="translate(38.7567,-139.932)">
|
||||
<title>Rectangle.116</title>
|
||||
<desc>DESC</desc>
|
||||
<rect x="0" y="143.783" width="79.3701" height="4.53543" class="st1"/>
|
||||
<text x="35.49" y="147.25" class="st2">DESC</text> </g>
|
||||
<g id="shape117-4" transform="translate(38.7567,-130.935)">
|
||||
<title>Rectangle.117</title>
|
||||
<desc>CSE - RO</desc>
|
||||
<rect x="0" y="139.605" width="79.3701" height="8.71293" class="st3"/>
|
||||
<text x="29.35" y="145.76" class="st4">CSE - RO</text> </g>
|
||||
<g id="shape118-7" transform="translate(38.5344,-4.54823)">
|
||||
<title>Rectangle.118</title>
|
||||
<rect x="0" y="29.8973" width="79.5923" height="118.421" class="st1"/>
|
||||
</g>
|
||||
<g id="shape119-9" transform="translate(41.225,-5.80807)">
|
||||
<title>Rectangle.119</title>
|
||||
<desc>COREBOOT_RO</desc>
|
||||
<rect x="0" y="119.972" width="74.3581" height="28.3465" class="st5"/>
|
||||
<text x="18.32" y="135.95" class="st4">COREBOOT_RO</text> </g>
|
||||
<g id="shape120-12" transform="translate(41.225,-34.1545)">
|
||||
<title>Rectangle.120</title>
|
||||
<desc>RW_MISC</desc>
|
||||
<rect x="0" y="143.907" width="74.3581" height="4.41113" class="st5"/>
|
||||
<text x="29.12" y="147.31" class="st2">RW_MISC</text> </g>
|
||||
<g id="shape121-15" transform="translate(41.225,-38.7215)">
|
||||
<title>Rectangle.121</title>
|
||||
<desc>FW_MAIN_B</desc>
|
||||
<rect x="0" y="119.972" width="74.3581" height="28.3465" class="st6"/>
|
||||
<text x="21.52" y="129.37" class="st4">FW_MAIN_B</text> </g>
|
||||
<g id="shape122-18" transform="translate(41.225,-67.0679)">
|
||||
<title>Rectangle.122</title>
|
||||
<desc>FW_MAIN_A</desc>
|
||||
<rect x="0" y="119.972" width="74.3581" height="28.3465" class="st6"/>
|
||||
<text x="21.41" y="129.37" class="st4">FW_MAIN_A</text> </g>
|
||||
<g id="shape123-21" transform="translate(3.88308,-0.375)">
|
||||
<title>Sheet.123</title>
|
||||
<desc>0x1FFFFFF</desc>
|
||||
<rect x="0" y="137.688" width="41.4007" height="10.6299" class="st7"/>
|
||||
<text x="8.09" y="144.8" class="st4">0x1FFFFFF</text> </g>
|
||||
<g id="shape124-24" transform="translate(21.7488,-138.564)">
|
||||
<title>Sheet.124</title>
|
||||
<desc>0x0</desc>
|
||||
<rect x="0" y="138.939" width="21.2598" height="9.37934" class="st7"/>
|
||||
<text x="6.29" y="145.43" class="st4">0x0</text> </g>
|
||||
<g id="shape125-27" transform="translate(41.2627,-96.0443)">
|
||||
<title>Rectangle.125</title>
|
||||
<desc>RW_LEGACY</desc>
|
||||
<rect x="0" y="122.448" width="74.3581" height="25.8706" class="st5"/>
|
||||
<text x="27.04" y="136.58" class="st2">RW_LEGACY</text> </g>
|
||||
<g id="shape126-30" transform="translate(119.253,-6.75295)">
|
||||
<title>Right Brace.126</title>
|
||||
<path d="M-0 148.32 A9.42279 2.96575 -180 0 0 5.11 146.6 L5.11 135.46 L10.21 135.46 L5.11 135.46 L5.11 124.32 A9.42279
|
||||
2.96575 -180 0 0 0 122.6" class="st8"/>
|
||||
</g>
|
||||
<g id="shape127-33" transform="translate(120.961,-10.2963)">
|
||||
<title>Sheet.127</title>
|
||||
<desc>HW WP</desc>
|
||||
<rect x="0" y="137.688" width="31.1811" height="10.6299" class="st7"/>
|
||||
<text x="6.16" y="144.8" class="st4">HW WP</text> </g>
|
||||
<g id="shape128-36" transform="translate(119.43,-123.061)">
|
||||
<title>Right Brace.128</title>
|
||||
<path d="M-0 148.32 a10.4615 0.900102 -180 0 0 5.66929 -0.520272 L5.67 144.42 L11.34 144.42 L5.67 144.42 L5.67 141.03
|
||||
a10.4615 0.900102 -180 0 0 -5.66929 -0.520272" class="st8"/>
|
||||
</g>
|
||||
<g id="shape129-39" transform="translate(126.517,-119.597)">
|
||||
<title>Sheet.129</title>
|
||||
<desc>SPI Controller WP via descriptor</desc>
|
||||
<rect x="0" y="138.043" width="45.3543" height="10.2756" class="st7"/>
|
||||
<text x="5.53" y="141.98" class="st2">SPI Controller WP via <tspan x="14.37" dy="1.2em" class="st9">descriptor</tspan></text> </g>
|
||||
<g id="group130-43" transform="translate(42.8947,-77.0772)">
|
||||
<title>Sheet.130</title>
|
||||
<g id="shape131-44">
|
||||
<title>Rectangle.423</title>
|
||||
<desc>CSE-RW</desc>
|
||||
<rect x="0" y="141.232" width="70.8661" height="7.08661" class="st3"/>
|
||||
<text x="25.77" y="146.58" class="st4">CSE-RW</text> </g>
|
||||
</g>
|
||||
<g id="group132-47" transform="translate(42.8947,-48.7307)">
|
||||
<title>Sheet.132</title>
|
||||
<g id="shape133-48">
|
||||
<title>Rectangle.423</title>
|
||||
<desc>CSE-RW</desc>
|
||||
<rect x="0" y="141.232" width="70.8661" height="7.08661" class="st3"/>
|
||||
<text x="25.77" y="146.58" class="st4">CSE-RW</text> </g>
|
||||
</g>
|
||||
<g id="shape134-51" transform="translate(38.6427,-123.114)">
|
||||
<title>Rectangle.134</title>
|
||||
<desc>CSE-RW</desc>
|
||||
<rect x="0" y="140.497" width="79.3701" height="7.82103" class="st3"/>
|
||||
<text x="30.03" y="146.21" class="st4">CSE-RW</text> </g>
|
||||
<g id="shape135-54" transform="translate(41.225,-52.8947)">
|
||||
<title>Universal connector.473</title>
|
||||
<path d="M0 148.32 L-8.38 148.32 A8.37776 8.37776 0 0 1 -16.76 139.94 L-16.76 111.25 L-16.76 81.27 A7.08661 7.08661 0
|
||||
0 1 -9.67 74.19 L-9.12 74.19" class="st10"/>
|
||||
</g>
|
||||
<g id="shape136-60" transform="translate(41.225,-81.2411)">
|
||||
<title>Universal connector.136</title>
|
||||
<path d="M0 148.32 L-8.38 148.32 A8.37776 8.37776 0 0 1 -16.76 139.94 L-16.76 125.43 L-16.76 109.62 A7.08661 7.08661
|
||||
0 0 1 -9.67 102.53 L-9.12 102.53" class="st10"/>
|
||||
</g>
|
||||
<g id="shape138-65" transform="translate(-124.557,86.8317) rotate(-90)">
|
||||
<title>Sheet.138</title>
|
||||
<desc>CSE RW copied during an update</desc>
|
||||
<rect x="0" y="124.932" width="58.1102" height="23.3858" class="st7"/>
|
||||
<text x="10.77" y="134.83" class="st4">CSE RW copied <tspan x="8.15" dy="1.2em" class="st9">during an update</tspan></text> </g>
|
||||
<g id="shape139-69" transform="translate(119.43,-133.052)">
|
||||
<title>Right Brace.139</title>
|
||||
<path d="M0 148.32 a10.4615 0.736641 -180 0 0 5.66929 -0.425789 L5.67 145.12 L11.34 145.12 L5.67 145.12 L5.67 142.36
|
||||
a10.4615 0.736641 -180 0 0 -5.66929 -0.425789" class="st8"/>
|
||||
</g>
|
||||
<g id="shape140-72" transform="translate(127.934,-133.061)">
|
||||
<title>Sheet.140</title>
|
||||
<desc>GRP0 Protected</desc>
|
||||
<rect x="0" y="140.523" width="35.4331" height="7.79528" class="st7"/>
|
||||
<text x="4.86" y="145.62" class="st2">GRP0 Protected</text> </g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 7.7 KiB |
95
Documentation/soc/intel/cse_fw_update/Layout_before.svg
Normal file
@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by Microsoft Visio, SVG Export Layout_before.svg Page-1 -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
|
||||
width="2.3058in" height="2.05998in" viewBox="0 0 166.017 148.318" xml:space="preserve" color-interpolation-filters="sRGB"
|
||||
class="st11">
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
.st1 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
|
||||
.st2 {fill:#000000;font-family:Calibri;font-size:0.333344em}
|
||||
.st3 {fill:#ffc000;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
|
||||
.st4 {fill:#000000;font-family:Calibri;font-size:0.499992em}
|
||||
.st5 {fill:#a5a5a5;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
|
||||
.st6 {fill:#a5a5a5;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
|
||||
.st7 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
|
||||
.st8 {stroke:#4bacc6;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
|
||||
.st9 {fill:#000000;font-family:Calibri;font-size:0.416656em}
|
||||
.st10 {font-size:1em}
|
||||
.st11 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<g>
|
||||
<title>Page-1</title>
|
||||
<g id="shape87-1" transform="translate(35.2486,-139.932)">
|
||||
<title>Rectangle.178</title>
|
||||
<desc>DESC</desc>
|
||||
<rect x="0" y="143.783" width="79.3701" height="4.53543" class="st1"/>
|
||||
<text x="35.49" y="147.25" class="st2">DESC</text> </g>
|
||||
<g id="shape88-4" transform="translate(35.2486,-122.945)">
|
||||
<title>Rectangle.179</title>
|
||||
<desc>CSME/PMC</desc>
|
||||
<rect x="0" y="131.615" width="79.3701" height="16.7031" class="st3"/>
|
||||
<text x="25.8" y="141.02" class="st4">CSME/PMC</text> </g>
|
||||
<g id="shape89-7" transform="translate(35.0263,-4.54823)">
|
||||
<title>Rectangle.180</title>
|
||||
<rect x="0" y="29.8973" width="79.5923" height="118.421" class="st1"/>
|
||||
</g>
|
||||
<g id="shape90-9" transform="translate(37.7169,-5.80807)">
|
||||
<title>Rectangle.181</title>
|
||||
<desc>COREBOOT_RO</desc>
|
||||
<rect x="0" y="119.972" width="74.3581" height="28.3465" class="st5"/>
|
||||
<text x="18.32" y="135.95" class="st4">COREBOOT_RO</text> </g>
|
||||
<g id="shape91-12" transform="translate(37.7169,-34.1545)">
|
||||
<title>Rectangle.182</title>
|
||||
<desc>RW_MISC</desc>
|
||||
<rect x="0" y="143.907" width="74.3581" height="4.41113" class="st5"/>
|
||||
<text x="29.12" y="147.31" class="st2">RW_MISC</text> </g>
|
||||
<g id="shape92-15" transform="translate(37.7169,-38.7215)">
|
||||
<title>Rectangle.183</title>
|
||||
<desc>FW_MAIN_B</desc>
|
||||
<rect x="0" y="119.972" width="74.3581" height="28.3465" class="st6"/>
|
||||
<text x="21.52" y="129.37" class="st4">FW_MAIN_B</text> </g>
|
||||
<g id="shape93-18" transform="translate(37.7169,-67.0679)">
|
||||
<title>Rectangle.184</title>
|
||||
<desc>FW_MAIN_A</desc>
|
||||
<rect x="0" y="119.972" width="74.3581" height="28.3465" class="st6"/>
|
||||
<text x="21.41" y="129.37" class="st4">FW_MAIN_A</text> </g>
|
||||
<g id="shape94-21" transform="translate(0.375,-0.375)">
|
||||
<title>Sheet.94</title>
|
||||
<desc>0x1FFFFFF</desc>
|
||||
<rect x="0" y="137.688" width="41.4007" height="10.6299" class="st7"/>
|
||||
<text x="8.09" y="144.8" class="st4">0x1FFFFFF</text> </g>
|
||||
<g id="shape95-24" transform="translate(18.2407,-138.564)">
|
||||
<title>Sheet.95</title>
|
||||
<desc>0x0</desc>
|
||||
<rect x="0" y="138.939" width="21.2598" height="9.37934" class="st7"/>
|
||||
<text x="6.29" y="145.43" class="st4">0x0</text> </g>
|
||||
<g id="shape106-27" transform="translate(37.7546,-96.0443)">
|
||||
<title>Rectangle.106</title>
|
||||
<desc>RW_LEGACY</desc>
|
||||
<rect x="0" y="122.448" width="74.3581" height="25.8706" class="st5"/>
|
||||
<text x="27.04" y="136.58" class="st2">RW_LEGACY</text> </g>
|
||||
<g id="shape113-30" transform="translate(115.744,-6.75295)">
|
||||
<title>Right Brace.398</title>
|
||||
<path d="M-0 148.32 A9.42279 2.96575 -180 0 0 5.11 146.6 L5.11 135.46 L10.21 135.46 L5.11 135.46 L5.11 124.32 A9.42279
|
||||
2.96575 -180 0 0 0 122.6" class="st8"/>
|
||||
</g>
|
||||
<g id="shape96-33" transform="translate(117.453,-10.2963)">
|
||||
<title>Sheet.96</title>
|
||||
<desc>HW WP</desc>
|
||||
<rect x="0" y="137.688" width="31.1811" height="10.6299" class="st7"/>
|
||||
<text x="6.16" y="144.8" class="st4">HW WP</text> </g>
|
||||
<g id="shape115-36" transform="translate(116.508,-123.131)">
|
||||
<title>Right Brace.115</title>
|
||||
<path d="M0 148.32 A10.4615 2.27029 -180 0 0 5.67 147.01 L5.67 138.48 L11.34 138.48 L5.67 138.48 L5.67 129.95 A10.4615
|
||||
2.27029 -180 0 0 0 128.63" class="st8"/>
|
||||
</g>
|
||||
<g id="shape97-39" transform="translate(120.288,-122.265)">
|
||||
<title>Sheet.97</title>
|
||||
<desc>SPI Controller WP via descriptor</desc>
|
||||
<rect x="0" y="124.932" width="45.3543" height="23.3858" class="st7"/>
|
||||
<text x="4.71" y="135.13" class="st9">SPI Controller WP <tspan x="8.83" dy="1.2em" class="st10">via descriptor</tspan></text> </g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.0 KiB |
127
Documentation/soc/intel/cse_fw_update/cse_fw_update.md
Normal file
@ -0,0 +1,127 @@
|
||||
CSE FW update mechanism for devices in field
|
||||
|
||||
## Introduction
|
||||
|
||||
CSE Firmware and PMC Firmware are critical components of Intel SoCs.
|
||||
CSE and PMC cooperate by providing platform services during boot and other
|
||||
power transition flows.
|
||||
|
||||
## Problem Statement
|
||||
|
||||
Currently, on Chromium OS Systems, CSE region is not updatable. So, new CSE FW
|
||||
versions that are released by Intel to address important functional and security
|
||||
bugs post-product launch will not be available to the end-user. Hence, the proposed
|
||||
solution allows in-field CSE FW update to propagate those bug fixes
|
||||
to end user platforms.
|
||||
|
||||
## Design Proposal
|
||||
|
||||
### CSE FW design Proposal:
|
||||
|
||||
Key Elements:
|
||||
|
||||
- CSE FW layout is composed of two bootable partitions (RO Recovery Partition
|
||||
and RW Normal Partition).
|
||||
|
||||
- Boot partition selection: An API-based mechanism is used to decide from which partition
|
||||
CSE will boot.
|
||||
|
||||
- The HECI APIs below will be supported in this CSE FW:
|
||||
|
||||
- HMRFPO_ENABLE: This command requests the CSE enter a mode in which writes to
|
||||
the CSE region from the CSE are disabled. It also grants temporary write access
|
||||
to the RW partition from the host (RO is still protected by GPR0).
|
||||
|
||||
- GET_PARTITION_INFO: The command retrieves information for each boot partition from CSE
|
||||
like version, start/end offsets of a partition within CSE region, and boot
|
||||
partition status. Also, it provides below information:
|
||||
- The current boot partition which was used during this boot,
|
||||
- The boot partition that will be used on the next CSE reset
|
||||
- The number of boot partitions available in the CSE region
|
||||
|
||||
- SET_BOOT_PARTITION_INFO: This command allows the firmware to request the
|
||||
CSE to boot from either its RO or RW partition at its next reset.
|
||||
|
||||
- DATA_CLEAR: This command requests the CSE to reset its data partition back
|
||||
to manufacturing defaults
|
||||
|
||||
FW Layout, RW/RO Partitions:
|
||||
|
||||
The CSE RO partition is the first in the CSE boot order, hence it will be used
|
||||
out of G3. RO partition contains minimum CSE code capable to boot platform and
|
||||
execute FW update of RW partition. In addition to CSE code, the RO partition also
|
||||
contains PMC FW patch and other CSE-loadable platform FW components.
|
||||
|
||||
RW partition contains fully operational CSE FW, PMC FW, other CSE loadable
|
||||
platform FW components.
|
||||
|
||||
Boot partition selection:
|
||||
|
||||
CSE FW shall support 2 APIs to get boot partition info, and set boot partition
|
||||
info to notify CSE to select the partition on the next boot.
|
||||
|
||||
### HOST FW Design proposal:
|
||||
|
||||
Key Elements:
|
||||
|
||||
- Build time artifacts:
|
||||
|
||||
CSE RW Version update binary - The FW shall pack CSE RW update blob and
|
||||
corresponding version binary which contains version of the CSE RW blob.
|
||||
|
||||
- FW Update:
|
||||
|
||||
coreboot will implement the logic to compare the CSE's FW version with CBFS
|
||||
CSE RW binary's version in the firmware slot (FW_MAIN_A/FW_MAIN_B) and update
|
||||
the CSE RW region if there is a version mismatch. If there is no version
|
||||
mismatch, firmware skips CSE FW update.
|
||||
|
||||
- Handling of CSE FW Downgrade:
|
||||
|
||||
coreboot will send DATA_CLEAR HECI command when there is a CSE FW downgrade.
|
||||
This must be done to avoid data mismatch due to CSE FW downgrade. Further,
|
||||
CSE will restore the data back to manufacturing defaults after data reset.
|
||||
|
||||
|
||||
## Implementation Details
|
||||
|
||||
|
||||
To enable CSE FW update flow the following changes are required in coreboot:
|
||||
|
||||
* Descriptor change may be required to accommodate CSE binary. The CSE binary is tied with
|
||||
a platform. So CSE size may vary from one platform to another.
|
||||
* FMAP changes may be required to accommodate CSE binary and CSE RW blob in the RW CBFS region.
|
||||
Please check platform specific CSE kit for CSE binary information.
|
||||
* CSE Lite SKU binary and CSE RW blob
|
||||
* Makefile change to pack CSE RW binaries in the CBFS
|
||||
* Implementation of update flow:
|
||||
- Get CSE boot partition info using GET_BOOT_PARTITION_INFO HECI command.
|
||||
- Get the cbfs_me_rw.version from the currently selected RW slot.
|
||||
- If the version from the above 2 locations don't match, then start CSE FW update.
|
||||
- If CSE is not booting from RO, then
|
||||
- Set the CSE's next boot partition to RO using SET_BOOT_PARTITION_INFO
|
||||
HECI command.
|
||||
- Send GLOBAL_RESET HECI command to reset the system.
|
||||
- If RW update is a CSE FW downgrade, then coreboot has to send
|
||||
DATA_CLEAR command to clear run time data of CSE.
|
||||
- Enable HMRFPO Mode (Host ME Region Flash Protection Override) by
|
||||
sending HMRFPO_ENABLE HECI command to CSE.
|
||||
- Erase and Copy the CBFS CSE RW to CSE RW partition
|
||||
- Set CSE's next boot partition to RW.
|
||||
- Trigger Global Reset which resets both CSE and Host.
|
||||
Then system should boot with the updated CSE.
|
||||
|
||||
* The resulting flash layout is shown below:
|
||||
|
||||
 
|
||||
|
||||
|
||||
- Typical boot flow
|
||||
|
||||
- Vboot selects the RW FW (FW_MAIN_A or FW_MAIN_B) to boot.
|
||||
- coreboot skips CSE FW update flow if boot mode is recovery.
|
||||
- If CSE RW blob is not locatable in the CBFS, then RW Firmware skips update flow
|
||||
and sends SET_BOOT_PARTITION_INFO command to switch CSE to boot from RW
|
||||
and issues Global Reset if CSE is already not booting from RW partition.
|
||||
- The RW firmware will compare the CSE RW version with CSE RW blob in the slot.
|
||||
- If there is a mismatch, then firmware will carry out update flow as explained before.
|
@ -20,11 +20,6 @@ Like any other Intel SoC, Ice Lake coreboot development is also based on "Intel
|
||||
:doc:`../../../mainboard/intel/icelake_rvp`
|
||||
```
|
||||
|
||||
3. OEMs to design based on reference platform and make use of mainboard sample code. Dragonegg is Ice Lake based mainboard developed by Google
|
||||
```eval_rst
|
||||
:doc:`../../../mainboard/google/dragonegg`
|
||||
```
|
||||
|
||||
### Summary:
|
||||
* SoC is Ice Lake.
|
||||
* Reference platform is icelake_rvp.
|
||||
|
@ -8,5 +8,7 @@ This section contains documentation about coreboot on specific Intel SOCs.
|
||||
- [FSP](fsp/index.md)
|
||||
- [Ice Lake/9th Gen Core-i series](icelake/index.md)
|
||||
- [MP Initialization](mp_init/mp_init.md)
|
||||
- [Microcode Updates](microcode.md)
|
||||
- [Firmware Interface Table](fit.md)
|
||||
- [Apollolake](apollolake/index.md)
|
||||
- [CSE FW Update](cse_fw_update/cse_fw_update.md)
|
||||
|
136
Documentation/soc/intel/microcode.md
Normal file
@ -0,0 +1,136 @@
|
||||
# Microcode updates
|
||||
|
||||
When booting a modern x86 platform, one task of the firmware is to update
|
||||
[microcode] to correct hardware bugs and mitigate security issues found
|
||||
after silicon has been shipped. The [Pentium FDIV bug] could have been
|
||||
fixed with a microcode update, had the Pentium used updateable microcode.
|
||||
Starting with the Pentium Pro, CPU microcode can be updated by software.
|
||||
|
||||
As per BIOS Writer's Guides, Intel defines a processor as the silicon and
|
||||
the accompanying microcode update, and considers any processor that does
|
||||
not have its microcode updated to be running out of specification. This
|
||||
suggests that microcode is a crucial ingredient for correct operation.
|
||||
|
||||
On multi-processor or Hyper-Threading-enabled systems, each thread has
|
||||
its own microcode. Therefore, microcode must be updated on every thread.
|
||||
|
||||
## When to update microcode
|
||||
|
||||
When a CPU core comes out of reset, it uses microcode from an internal
|
||||
ROM. This “default” microcode often contains bugs, so it needs to be
|
||||
updated as soon as possible. For example, Core 2 CPUs can boot without
|
||||
microcode updates, but have stability problems. On newer platforms,
|
||||
it is nearly impossible to boot without having updated the microcode.
|
||||
On some platforms, an updated microcode is required in order to enable
|
||||
Cache-As-RAM or to be able to successfully initialize the DRAM.
|
||||
|
||||
Plus, microcode needs to be loaded multiple times. Intel Document 504790
|
||||
explains that this is because of so-called *enhanced microcode updates*,
|
||||
which are large updates with errata workarounds for both core and uncore.
|
||||
In order to correctly apply enhanced microcode updates, the [MP-Init]
|
||||
algorithm must be decomposed into multiple initialization phases.
|
||||
|
||||
### Firmware Interface Table
|
||||
|
||||
Beginning with 4th generation Intel Core processors, it is possible for
|
||||
microcode to be updated before the CPU is taken out of reset. This is
|
||||
accomplished by means of [FIT], a data structure which contains pointers
|
||||
to various firmware ingredients in the BIOS flash.
|
||||
|
||||
In rare cases, FIT microcode updates may not be successful. Therefore,
|
||||
it is important to check that the microcode is up-to-date and, if not,
|
||||
update it. This needs to be done as early as possible, like on older
|
||||
processor generations without FIT support.
|
||||
|
||||
Whether all threads on a processor get their microcode updated through
|
||||
FIT is not clear. According to Intel Documents 493770 and 535094, FIT
|
||||
microcode updates are applied to all cores within the package. However,
|
||||
Intel Document 550049 states that FIT microcode updates are applied to
|
||||
all threads within the package.
|
||||
|
||||
## SMM bring-up
|
||||
|
||||
Prior to SMM relocation, microcode must have been updated at least once.
|
||||
|
||||
## Multi-Processor bring-up
|
||||
|
||||
The BWG briefly describes microcode updates as part of the *MP-Init*.
|
||||
|
||||
### MP-Init
|
||||
|
||||
As part of the [MP-Init] sequence, two microcode updates are required.
|
||||
|
||||
* The first update must happen as soon as one AP comes out of reset.
|
||||
* The second update must happen after the MP-Init sequence has written MTRRs,
|
||||
PRMRR, DCU mode and prefetcher configuration, SMM has been relocated, but
|
||||
before clearing the MCE banks.
|
||||
|
||||
## Recommendations
|
||||
|
||||
The Linux kernel developer's recommendations are:
|
||||
* Serialize microcode updates if possible.
|
||||
* Idle as many APs as possible while updating.
|
||||
* Idle the sibling thread on a Hyper-Threading enabled CPU while updating.
|
||||
|
||||
## Platform BWGs
|
||||
|
||||
The requirements specified in BWGs differ between platforms:
|
||||
|
||||
### Sandy Bridge
|
||||
|
||||
* Before setting up Cache-As-RAM, load microcode update into the SBSP.
|
||||
* Losing (non-SBSP) NBSPs must load their microcode update before being placed
|
||||
back in the wait-for-SIPI state.
|
||||
* Sibling threads on HT must use a semaphore.
|
||||
* Microcode update loading has been done prior to SMM relocation.
|
||||
* In MP-Init the microcode update on an AP must be done before initializing the
|
||||
cache, MTRRs, SMRRs and PRMRRs.
|
||||
* In MP-Init a second update must happen on all threads after initializing the
|
||||
cache, MTRRs, SMRRs and PRMRRs.
|
||||
|
||||
Refer to Intel Document 504790 for details.
|
||||
|
||||
### Haswell/Broadwell Client
|
||||
|
||||
* A microcode update must exist in FIT.
|
||||
* During the race to the BSP semaphore, each NBSP must load its microcode update.
|
||||
* All HT enabled threads can load microcode in parallel. However, the
|
||||
IA32_BIOS_UPDT_TRIG MSR is core-scoped, just like on other platforms.
|
||||
* Microcode update loading has been done prior to SMM relocation.
|
||||
* In MP-Init the microcode update on an AP must be done before initializing the
|
||||
cache, MTRRs, SMRRs and EMRR.
|
||||
* In MP-Init a second update must happen on all threads after initializing the
|
||||
cache, MTRRs, SMRRs and EMRR and after SMM initialization.
|
||||
|
||||
Refer to Intel Document 493770 and 535094 for details.
|
||||
|
||||
### Broadwell Server
|
||||
|
||||
* A microcode update must exist in FIT.
|
||||
* Before setting up Cache-As-RAM, load microcode update into each BSP.
|
||||
* In MP-Init the microcode update on an AP must be done before initializing the
|
||||
cache, MTRRs, SMRRs and EMRR.
|
||||
* In MP-Init a second update must happen on all threads after initializing the
|
||||
cache, MTRRs, SMRRs and EMRR and after SMM initialization.
|
||||
|
||||
Refer to Intel Document 546625 for details.
|
||||
|
||||
### Skylake/Kaby Lake/Coffee Lake/Whiskey Lake/Comet Lake
|
||||
|
||||
* A microcode update must exist in FIT.
|
||||
* Before setting up Cache-As-RAM, load microcode update into the BSP.
|
||||
* Microcode update loading has been done prior to SMM relocation.
|
||||
* In MP-Init the first update must happen as soon as one AP comes out of reset.
|
||||
* In MP-Init the second update must happen after the MP-Init sequence has
|
||||
written MTRRs, PRMRR, DCU mode and prefetcher configuration, but before
|
||||
clearing the MCE banks.
|
||||
* Microcode updates must happen on all threads.
|
||||
* Sibling threads on HT should use a semaphore.
|
||||
|
||||
Refer to Intel Document 550049 for details.
|
||||
|
||||
[microcode]: https://en.wikipedia.org/wiki/Microcode
|
||||
[Pentium FDIV bug]: https://en.wikipedia.org/wiki/Pentium_FDIV_bug
|
||||
[FIT]: fit.md
|
||||
[SDM]: https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf
|
||||
[MP-Init]: mp_init/mp_init.md
|
@ -5,3 +5,4 @@ This section contains documentation about coreboot on specific Qualcomm SOCs.
|
||||
## Platforms
|
||||
|
||||
- [SC7180 series](sc7180/index.md)
|
||||
- [SC7280 series](sc7280/index.md)
|
||||
|
17
Documentation/soc/qualcomm/sc7280/index.md
Normal file
@ -0,0 +1,17 @@
|
||||
# Qualcomm SC7280 documentation
|
||||
|
||||
## SOC code
|
||||
|
||||
The SOC folder contains functions for:
|
||||
* MMU
|
||||
* CLOCK
|
||||
* GPIO
|
||||
* QUPv3 FW (provides a bridge to serial interfaces)
|
||||
* UART
|
||||
* SPI-NOR
|
||||
* AOP FW
|
||||
* USB
|
||||
|
||||
## Notes about the hardware
|
||||
|
||||
The timer is used from the ARMv8 architecture specific code.
|
302
Documentation/technotes/asan.md
Normal file
@ -0,0 +1,302 @@
|
||||
# Address Sanitizer
|
||||
|
||||
Memory safety is hard to achieve. We, as humans, are bound to make mistakes in
|
||||
our code. While it may be straightforward to detect memory corruption bugs in
|
||||
few lines of code, it becomes quite challenging to find those bugs in a massive
|
||||
code. In such cases, 'Address Sanitizer' may prove to be useful and could help
|
||||
save time.
|
||||
|
||||
[Address Sanitizer](https://github.com/google/sanitizers/wiki/AddressSanitizer)
|
||||
, also known as ASan, is a runtime memory debugger designed to find
|
||||
out-of-bounds accesses and use-after-scope bugs. coreboot has an in-built
|
||||
Address Sanitizer. Therefore, it is advised to take advantage of this debugging
|
||||
tool while working on large patches. This would further help to ensure code
|
||||
quality and make runtime code more robust.
|
||||
|
||||
## Types of errors detected
|
||||
ASan in coreboot catches the following types of memory bugs:
|
||||
|
||||
### Stack buffer overflow
|
||||
Example stack-out-of-bounds:
|
||||
```c
|
||||
void foo()
|
||||
{
|
||||
int stack_array[5] = {0};
|
||||
int i, out;
|
||||
for (i = 0; i < 10; i++)
|
||||
out = stack_array[i];
|
||||
}
|
||||
```
|
||||
In this example, the array is of length 5 but it is being read even beyond the
|
||||
index 4.
|
||||
|
||||
### Global buffer overflow
|
||||
Example global-out-of-bounds:
|
||||
```c
|
||||
char a[] = "I use coreboot";
|
||||
|
||||
void foo()
|
||||
{
|
||||
char b[] = "proprietary BIOS";
|
||||
strcpy(a + 6, b);
|
||||
}
|
||||
```
|
||||
In this example,
|
||||
> well, you are replacing coreboot with proprietary BIOS. In any case, that's
|
||||
an "error".
|
||||
|
||||
Let's come to the memory bug. The string 'a' is of length 14 but it is being
|
||||
written to even beyond that.
|
||||
|
||||
### Use after scope
|
||||
Example use-after-scope:
|
||||
```c
|
||||
volatile int *p = 0;
|
||||
|
||||
void foo() {
|
||||
{
|
||||
int x = 0;
|
||||
p = &x;
|
||||
}
|
||||
*p = 5;
|
||||
}
|
||||
```
|
||||
In this example, the value 5 is written to an undefined address instead of the
|
||||
variable 'x'. This happens because 'x' can't be accessed outside its scope.
|
||||
|
||||
## Using ASan
|
||||
|
||||
In order to enable ASan on a supported platform,
|
||||
select `Address sanitizer support` from `General setup` menu while configuring
|
||||
coreboot.
|
||||
|
||||
Then build coreboot and run the image as usual. If your code contains any of the
|
||||
above-mentioned memory bugs, ASan will report them in the console log as shown
|
||||
below:
|
||||
```text
|
||||
ASan: <bug type> in <ip>
|
||||
<access type> of <access size> bytes at addr <access address>
|
||||
```
|
||||
where,
|
||||
|
||||
`bug type` is either `stack-out-of-bounds`, `global-out-of-bounds` or
|
||||
`use-after-scope`,
|
||||
|
||||
`ip` is the address of the last good instruction before the bad access,
|
||||
|
||||
`access type` is either `Read` or `Write`,
|
||||
|
||||
`access size` is the number of bytes read or written, and
|
||||
|
||||
`access address` is the memory location which is accessed while the error
|
||||
occurs.
|
||||
|
||||
Next, you have to use `ip` to retrieve the instruction which causes the error.
|
||||
Since stages in coreboot are relocated, you need to normalize `ip`. For this,
|
||||
first subtract the start address of the stage from `ip`. Then, read the section
|
||||
headers from `<stage>.debug` file to determine the offset of the text segment.
|
||||
Add this offset to the difference you calculated earlier. Let's call the
|
||||
resultant address `ip'`.
|
||||
|
||||
Next, read the contents of the symbol table and search for a function having
|
||||
an address closest to `ip'`. This is the function in which our memory bug is
|
||||
present. Let's denote the address of this function by `ip''`.
|
||||
|
||||
Finally, read the assembly contents of the object file where this function is
|
||||
present. Look for the affected function. Here, the instruction which exists at
|
||||
the offset `ip' - ip''` corresponds to the address `ip`. Therefore, the very
|
||||
next instruction is the one which causes the error.
|
||||
|
||||
To see ASan in action, let's take an example. Suppose, there is a
|
||||
stack-out-of-bounds error in cbfs.c that we aren’t aware of and we want ASan
|
||||
to help us detect it.
|
||||
```c
|
||||
int cbfs_boot_region_device(struct region_device *rdev)
|
||||
{
|
||||
int array[5], i;
|
||||
boot_device_init();
|
||||
|
||||
for (i = 10; i > 0; i--)
|
||||
array[i] = i;
|
||||
|
||||
return vboot_locate_cbfs(rdev) &&
|
||||
fmap_locate_area_as_rdev("COREBOOT", rdev);
|
||||
}
|
||||
```
|
||||
First, we enable ASan from the configuration menu as shown above. Then, we
|
||||
build coreboot and run the image.
|
||||
|
||||
ASan reports the following error in the console log:
|
||||
```text
|
||||
ASan: stack-out-of-bounds in 0x7f7432fd
|
||||
Write of 4 bytes at addr 0x7f7c2ac8
|
||||
```
|
||||
Here 0x7f7432fd is `ip` i.e. the address of the last good instruction before
|
||||
the bad access. First we have to normalize this address as stated above.
|
||||
As per the console log, this error happened in ramstage and the stage starts
|
||||
from 0x7f72c000. So, let’s look at the sections headers of ramstage from
|
||||
`ramstage.debug`.
|
||||
```text
|
||||
$ objdump -h build/cbfs/fallback/ramstage.debug
|
||||
|
||||
build/cbfs/fallback/ramstage.debug: file format elf32-i386
|
||||
|
||||
Sections:
|
||||
Idx Name Size VMA LMA File off Algn
|
||||
0 .text 00070b20 00e00000 00e00000 00001000 2**12
|
||||
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
|
||||
1 .ctors 0000036c 00e70b20 00e70b20 00071b20 2**2
|
||||
CONTENTS, ALLOC, LOAD, RELOC, DATA
|
||||
2 .data 0001c8f4 00e70e8c 00e70e8c 00071e8c 2**2
|
||||
CONTENTS, ALLOC, LOAD, RELOC, DATA
|
||||
3 .bss 00012940 00e8d780 00e8d780 0008e780 2**7
|
||||
ALLOC
|
||||
4 .heap 00004000 00ea00c0 00ea00c0 0008e780 2**0
|
||||
ALLOC
|
||||
```
|
||||
As you can see, the offset of the text segment is 0x00e00000. Let's subtract the
|
||||
start address of the stage from `ip` and add this offset to the difference. The
|
||||
resultant address i.e. `ip'` is 0x00e172fd.
|
||||
|
||||
Next, we read the contents of the symbol table and search for a function having
|
||||
an address closest to 0x00e172fd.
|
||||
```text
|
||||
$ nm -n build/cbfs/fallback/ramstage.debug
|
||||
........
|
||||
........
|
||||
00e17116 t _GLOBAL__sub_I_65535_1_gfx_get_init_done
|
||||
00e17129 t tohex16
|
||||
00e171db T cbfs_load_and_decompress
|
||||
00e1729b T cbfs_boot_region_device
|
||||
00e17387 T cbfs_boot_locate
|
||||
00e1740d T cbfs_boot_map_with_leak
|
||||
00e174ef T cbfs_boot_map_optionrom
|
||||
........
|
||||
........
|
||||
```
|
||||
The symbol having an address closest to 0x00e172fd is `cbfs_boot_region_device` and
|
||||
its address i.e. `ip''` is 0x00e1729b.
|
||||
|
||||
Now, as we know the affected function, let's read the assembly contents of
|
||||
`cbfs_boot_region_device()` which is present in `cbfs.o` to find the faulty
|
||||
instruction.
|
||||
```text
|
||||
$ objdump -d build/ramstage/lib/cbfs.o
|
||||
........
|
||||
........
|
||||
51: e8 fc ff ff ff call 52 <cbfs_boot_region_device+0x52>
|
||||
56: 83 ec 0c sub $0xc,%esp
|
||||
59: 57 push %edi
|
||||
5a: 83 ef 04 sub $0x4,%edi
|
||||
5d: e8 fc ff ff ff call 5e <cbfs_boot_region_device+0x5e>
|
||||
62: 83 c4 10 add $0x10,%esp
|
||||
65: 89 5f 04 mov %ebx,0x4(%edi)
|
||||
68: 4b dec %ebx
|
||||
69: 75 eb jne 56 <cbfs_boot_region_device+0x56>
|
||||
........
|
||||
........
|
||||
```
|
||||
Here, we look for the instruction present at the offset 62 i.e. `ip' - ip''`.
|
||||
The instruction is `add $0x10,%esp` and it corresponds to
|
||||
`for (i = 10; i > 0; i--)` in our code. It means the very next instruction
|
||||
i.e. `mov %ebx,0x4(%edi)` is the one that causes the error. Now, as we look at
|
||||
C code of `cbfs_boot_region_device()` again, we find that this instruction
|
||||
corresponds to `array[i] = i`.
|
||||
|
||||
Voilà! We just caught the memory bug using ASan.
|
||||
|
||||
## Supported platforms
|
||||
Presently, the following architectures support ASan in ramstage:
|
||||
```eval_rst
|
||||
+------------------+--------------------------------+
|
||||
| Architecture | Notes |
|
||||
+==================+================================+
|
||||
| x86 | Support for all x86 platforms |
|
||||
+------------------+--------------------------------+
|
||||
```
|
||||
|
||||
And in romstage ASan is available on the following platforms:
|
||||
```eval_rst
|
||||
+---------------------+-----------------------------+
|
||||
| Platform | Notes |
|
||||
+=====================+=============================+
|
||||
| QEMU i440-fx | |
|
||||
+---------------------+-----------------------------+
|
||||
| Intel Apollo Lake | |
|
||||
+---------------------+-----------------------------+
|
||||
| Intel Haswell | |
|
||||
+---------------------+-----------------------------+
|
||||
```
|
||||
Alternatively, you can use `grep` to view the list of platforms that support
|
||||
ASan in romstage:
|
||||
|
||||
$ git grep "select HAVE_ASAN_IN_ROMSTAGE"
|
||||
|
||||
If the x86 platform you are using is not listed here, there is
|
||||
still a chance that it supports ASan in romstage.
|
||||
|
||||
To test it, select `HAVE_ASAN_IN_ROMSTAGE` from the Kconfig file in the
|
||||
platform's dedicated directory. Then, enable ASan from the config menu as
|
||||
indicated in the previous section.
|
||||
|
||||
If you are able to build coreboot without any errors and boot cleanly, that
|
||||
means the platform supports ASan in romstage. In that case, please upload a
|
||||
patch on Gerrit selecting this config option using 'ASan' topic. Also, update
|
||||
the platform name in the table.
|
||||
|
||||
However, if you end up in compilation errors or the linker error saying that
|
||||
the cache got full, additional steps need to be taken to enable ASan in
|
||||
romstage on the platform. While compile errors could be resolved easily and
|
||||
therefore ASan in romstage has a good chance to be supported, a full cache is
|
||||
an indication that it is way more work or even likely impossible to enable
|
||||
ASan in romstage.
|
||||
|
||||
## Future work
|
||||
### Heap buffer overflow
|
||||
Presently, ASan doesn't detect out-of-bounds accesses for the objects defined
|
||||
in heap.
|
||||
|
||||
To add support for these type of memory bugs, you have to make sure that
|
||||
whenever some block of memory is allocated in the heap, the surrounding areas
|
||||
(redzones) are poisoned. Correspondingly, these redzones should be unpoisoned
|
||||
when the memory block is de-allocated.
|
||||
|
||||
### ASan on other architectures
|
||||
The following points should help when adding support for ASan to other
|
||||
architectures like ARM or RISC-V:
|
||||
|
||||
* Enabling ASan in ramstage on other architectures should be easy. You just
|
||||
have to make sure the shadow memory is initialized as early as possible when
|
||||
ramstage is loaded. This can be done by making a function call to `asan_init()`
|
||||
at the appropriate place.
|
||||
|
||||
* For romstage, you have to find out if there is enough room in the cache to fit
|
||||
the shadow memory region. For this, find the boundary linker symbols for the
|
||||
region you'd want to run ASan on, excluding the hardware mapped addresses.
|
||||
Then define a new linker section named `asan_shadow` of size
|
||||
`(_end - _start) >> 3`, where `_start` and `_end` are the linker symbols you
|
||||
found earlier. This section should be appended to the region already occupied
|
||||
by the coreboot program. Now build coreboot. If you don't see any errors while
|
||||
building with the current translation function, ASan can be enabled on that
|
||||
platform.
|
||||
|
||||
* The shadow region we currently use consumes memory equal to 1/8th of the
|
||||
program memory. So, if you end up in a linker error saying that the memory got
|
||||
full, you'll have to use a more compact shadow region. In that case, the
|
||||
translation function could be something like
|
||||
`shadow = (mem >> 7) | shadow_offset`. Since the stack buffers are protected by
|
||||
the compiler, you'll also have to create a GCC patch forcing it to use the new
|
||||
translation function for this particular architecture.
|
||||
|
||||
* Once you are sure that the architecture supports ASan in ramstage, select
|
||||
`HAVE_ASAN_IN_RAMSTAGE` from the Kconfig file of that architecture. Similarly,
|
||||
if the platform supports ASan in romstage, select `HAVE_ASAN_IN_ROMSTAGE` from
|
||||
the platform's dedicated Kconfig file.
|
||||
|
||||
### Post-processing script
|
||||
Unlike Linux, coreboot doesn't have `%pS` printk format to dereference pointer
|
||||
to its symbolic name. Therefore, we normalise the pointer address manually to
|
||||
determine the name of the affected function and further use it to find the
|
||||
instruction which causes the error.
|
||||
|
||||
A custom script can be written to automate this process.
|
@ -3,3 +3,4 @@
|
||||
* [Dealing with Untrusted Input in SMM](2017-02-dealing-with-untrusted-input-in-smm.md)
|
||||
* [Rebuilding coreboot image generation](2015-11-rebuilding-coreboot-image-generation.md)
|
||||
* [Unit testing coreboot](2020-03-unit-testing-coreboot.md)
|
||||
* [Address Sanitizer](asan.md)
|
||||
|
@ -3,3 +3,4 @@
|
||||
* [Part 1: Starting from scratch](part1.md)
|
||||
* [Part 2: Submitting a patch to coreboot.org](part2.md)
|
||||
* [Part 3: Writing unit tests](part3.md)
|
||||
* [Managing local additions](managing_local_additions.md)
|
||||
|
43
Documentation/tutorial/managing_local_additions.md
Normal file
@ -0,0 +1,43 @@
|
||||
Managing local additions
|
||||
========================
|
||||
|
||||
This section describes the site-local mechanism, what it is good for and
|
||||
how it can be used.
|
||||
|
||||
What is site-local?
|
||||
-------------------
|
||||
site-local is the name of a directory that won't ever appear in the
|
||||
upstream coreboot repository but is referred to in several key places of its
|
||||
configuration and build system. The intent is provide a single location to
|
||||
store local modifications.
|
||||
|
||||
By keeping local additions to builds in this place, it can be versioned
|
||||
independently from upstream (e.g. controlled by git in another repository)
|
||||
and any changes made there won't ever conflict with upstream changes.
|
||||
|
||||
This optional directory is searched for in the top-level of the coreboot
|
||||
repo and is called `site-local`.
|
||||
|
||||
Integration into the configuration system
|
||||
-----------------------------------------
|
||||
Kconfig includes `site-local/Kconfig` relatively early, so it can be used
|
||||
to pre-define some configuration before coreboot's regular ruleset sets
|
||||
up defaults.
|
||||
|
||||
Integration into the build system
|
||||
---------------------------------
|
||||
The build system includes, if present, `site-local/Makefile.inc`. The main
|
||||
purpose so far has been to add additional files to a CBFS image. A single
|
||||
Makefile.inc can serve multiple boards, for example:
|
||||
|
||||
cbfs-files-$(CONFIG_BOARD_INTEL_D945GCLF) += pci8086,2772.rom
|
||||
pci8086,2772.rom-file := intel_d945gclf/pci8086,2772.rom
|
||||
pci8086,2772.rom-type := optionrom
|
||||
|
||||
cbfs-files-$(CONFIG_BOARD_KONTRON_986LCD_M) += pci8086,27a2.rom
|
||||
pci8086,27a2.rom-file := kontron_986lcd-m/pci8086,27a2.rom
|
||||
pci8086,27a2.rom-type := optionrom
|
||||
|
||||
This adds the correct Option ROM binary (which are non-redistributable and
|
||||
therefore can't become part of the coreboot.org repos) to coreboot.rom when
|
||||
built for intel/d945gclf or kontron/986lcd-m.
|
@ -19,9 +19,21 @@ Download, configure, and build coreboot
|
||||
$ cd coreboot
|
||||
|
||||
### Step 3 - Build the coreboot toolchain
|
||||
Please note that this can take a significant amount of time.
|
||||
Please note that this can take a significant amount of time. Use `CPUS=` to
|
||||
specify number of `make` jobs to run in parallel.
|
||||
|
||||
$ make crossgcc-i386 CPUS=$(nproc)
|
||||
This will list toolchain options and supported architectures:
|
||||
|
||||
$ make help_toolchain
|
||||
|
||||
Here are some examples:
|
||||
|
||||
$ make crossgcc-i386 CPUS=$(nproc) # build i386 toolchain
|
||||
$ make crossgcc-aarch64 CPUS=$(nproc) # build Aarch64 toolchain
|
||||
$ make crossgcc-riscv CPUS=$(nproc) # build RISC-V toolchain
|
||||
|
||||
Note that the i386 toolchain is currently used for all x86 platforms, including
|
||||
x86_64.
|
||||
|
||||
Also note that you can possibly use your system toolchain, but the results are
|
||||
not reproducible, and may have issues, so this is not recommended. See step 5
|
||||
|