Compare commits
1 Commits
system76
...
upstream-8
Author | SHA1 | Date | |
---|---|---|---|
|
bf2d60fc36 |
37
.gitmodules
vendored
37
.gitmodules
vendored
@@ -1,67 +1,70 @@
|
|||||||
[submodule "3rdparty/blobs"]
|
[submodule "3rdparty/blobs"]
|
||||||
path = 3rdparty/blobs
|
path = 3rdparty/blobs
|
||||||
url = https://review.coreboot.org/blobs.git
|
url = ../blobs.git
|
||||||
update = none
|
update = none
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
[submodule "util/nvidia-cbootimage"]
|
[submodule "util/nvidia-cbootimage"]
|
||||||
path = util/nvidia/cbootimage
|
path = util/nvidia/cbootimage
|
||||||
url = https://review.coreboot.org/nvidia-cbootimage.git
|
url = ../nvidia-cbootimage.git
|
||||||
[submodule "vboot"]
|
[submodule "vboot"]
|
||||||
path = 3rdparty/vboot
|
path = 3rdparty/vboot
|
||||||
url = https://review.coreboot.org/vboot.git
|
url = ../vboot.git
|
||||||
branch = main
|
branch = main
|
||||||
[submodule "arm-trusted-firmware"]
|
[submodule "arm-trusted-firmware"]
|
||||||
path = 3rdparty/arm-trusted-firmware
|
path = 3rdparty/arm-trusted-firmware
|
||||||
url = https://review.coreboot.org/arm-trusted-firmware.git
|
url = ../arm-trusted-firmware.git
|
||||||
|
[submodule "3rdparty/chromeec"]
|
||||||
|
path = 3rdparty/chromeec
|
||||||
|
url = ../chrome-ec.git
|
||||||
[submodule "libhwbase"]
|
[submodule "libhwbase"]
|
||||||
path = 3rdparty/libhwbase
|
path = 3rdparty/libhwbase
|
||||||
url = https://review.coreboot.org/libhwbase.git
|
url = ../libhwbase.git
|
||||||
[submodule "libgfxinit"]
|
[submodule "libgfxinit"]
|
||||||
path = 3rdparty/libgfxinit
|
path = 3rdparty/libgfxinit
|
||||||
url = https://review.coreboot.org/libgfxinit.git
|
url = ../libgfxinit.git
|
||||||
[submodule "3rdparty/fsp"]
|
[submodule "3rdparty/fsp"]
|
||||||
path = 3rdparty/fsp
|
path = 3rdparty/fsp
|
||||||
url = https://review.coreboot.org/fsp.git
|
url = ../fsp.git
|
||||||
update = none
|
update = none
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
[submodule "opensbi"]
|
[submodule "opensbi"]
|
||||||
path = 3rdparty/opensbi
|
path = 3rdparty/opensbi
|
||||||
url = https://review.coreboot.org/opensbi.git
|
url = ../opensbi.git
|
||||||
[submodule "intel-microcode"]
|
[submodule "intel-microcode"]
|
||||||
path = 3rdparty/intel-microcode
|
path = 3rdparty/intel-microcode
|
||||||
url = https://review.coreboot.org/intel-microcode.git
|
url = ../intel-microcode.git
|
||||||
update = none
|
update = none
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
branch = main
|
branch = main
|
||||||
[submodule "3rdparty/ffs"]
|
[submodule "3rdparty/ffs"]
|
||||||
path = 3rdparty/ffs
|
path = 3rdparty/ffs
|
||||||
url = https://review.coreboot.org/ffs.git
|
url = ../ffs.git
|
||||||
[submodule "3rdparty/amd_blobs"]
|
[submodule "3rdparty/amd_blobs"]
|
||||||
path = 3rdparty/amd_blobs
|
path = 3rdparty/amd_blobs
|
||||||
url = https://review.coreboot.org/amd_blobs
|
url = ../amd_blobs
|
||||||
update = none
|
update = none
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
[submodule "3rdparty/cmocka"]
|
[submodule "3rdparty/cmocka"]
|
||||||
path = 3rdparty/cmocka
|
path = 3rdparty/cmocka
|
||||||
url = https://review.coreboot.org/cmocka.git
|
url = ../cmocka.git
|
||||||
update = none
|
update = none
|
||||||
branch = stable-1.1
|
branch = stable-1.1
|
||||||
[submodule "3rdparty/qc_blobs"]
|
[submodule "3rdparty/qc_blobs"]
|
||||||
path = 3rdparty/qc_blobs
|
path = 3rdparty/qc_blobs
|
||||||
url = https://review.coreboot.org/qc_blobs.git
|
url = ../qc_blobs.git
|
||||||
update = none
|
update = none
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
[submodule "3rdparty/intel-sec-tools"]
|
[submodule "3rdparty/intel-sec-tools"]
|
||||||
path = 3rdparty/intel-sec-tools
|
path = 3rdparty/intel-sec-tools
|
||||||
url = https://review.coreboot.org/9esec-security-tooling.git
|
url = ../9esec-security-tooling.git
|
||||||
[submodule "3rdparty/stm"]
|
[submodule "3rdparty/stm"]
|
||||||
path = 3rdparty/stm
|
path = 3rdparty/stm
|
||||||
url = https://review.coreboot.org/STM
|
url = ../STM
|
||||||
branch = stmpe
|
branch = stmpe
|
||||||
[submodule "util/goswid"]
|
[submodule "util/goswid"]
|
||||||
path = util/goswid
|
path = util/goswid
|
||||||
url = https://review.coreboot.org/goswid
|
url = ../goswid
|
||||||
branch = trunk
|
branch = trunk
|
||||||
[submodule "src/vendorcode/amd/opensil/genoa_poc/opensil"]
|
[submodule "src/vendorcode/amd/opensil/genoa_poc/opensil"]
|
||||||
path = src/vendorcode/amd/opensil/genoa_poc/opensil
|
path = src/vendorcode/amd/opensil/genoa_poc/opensil
|
||||||
url = https://review.coreboot.org/opensil_genoa_poc.git
|
url = ../opensil_genoa_poc.git
|
||||||
|
2
3rdparty/amd_blobs
vendored
2
3rdparty/amd_blobs
vendored
Submodule 3rdparty/amd_blobs updated: 26c572974b...ae5fc7d277
2
3rdparty/arm-trusted-firmware
vendored
2
3rdparty/arm-trusted-firmware
vendored
Submodule 3rdparty/arm-trusted-firmware updated: c5b8de86c8...48f1bc9f52
2
3rdparty/blobs
vendored
2
3rdparty/blobs
vendored
Submodule 3rdparty/blobs updated: 45f1b75740...a8db7dfe82
1
3rdparty/chromeec
vendored
Submodule
1
3rdparty/chromeec
vendored
Submodule
Submodule 3rdparty/chromeec added at e486b388a7
2
3rdparty/fsp
vendored
2
3rdparty/fsp
vendored
Submodule 3rdparty/fsp updated: 800c85770b...cc6399e8c7
2
3rdparty/intel-microcode
vendored
2
3rdparty/intel-microcode
vendored
Submodule 3rdparty/intel-microcode updated: 2f5650548f...41af345005
2
3rdparty/libgfxinit
vendored
2
3rdparty/libgfxinit
vendored
Submodule 3rdparty/libgfxinit updated: 17cfc92f40...a4be8a21b0
2
3rdparty/vboot
vendored
2
3rdparty/vboot
vendored
Submodule 3rdparty/vboot updated: f1f70f46dc...09fcd2184f
30
AUTHORS
30
AUTHORS
@@ -39,9 +39,7 @@ Alexandru Gagniuc
|
|||||||
Alexey Buyanov
|
Alexey Buyanov
|
||||||
Alexey Vazhnov
|
Alexey Vazhnov
|
||||||
Alice Sell
|
Alice Sell
|
||||||
Alicja Michalska
|
|
||||||
Allen-KH Cheng
|
Allen-KH Cheng
|
||||||
Alper Nebi Yasak
|
|
||||||
Amanda Hwang
|
Amanda Hwang
|
||||||
American Megatrends International, LLC
|
American Megatrends International, LLC
|
||||||
Amersel
|
Amersel
|
||||||
@@ -64,7 +62,6 @@ Anna Karaś
|
|||||||
Annie Chen
|
Annie Chen
|
||||||
Anton Kochkov
|
Anton Kochkov
|
||||||
Ao Zhong
|
Ao Zhong
|
||||||
Appukuttan V K
|
|
||||||
Arashk Mahshidfar
|
Arashk Mahshidfar
|
||||||
Arec Kao
|
Arec Kao
|
||||||
Ariel Fang
|
Ariel Fang
|
||||||
@@ -96,7 +93,6 @@ Bora Guvendik
|
|||||||
Boris Barbulovski
|
Boris Barbulovski
|
||||||
Boris Mittelberg
|
Boris Mittelberg
|
||||||
Brandon Breitenstein
|
Brandon Breitenstein
|
||||||
Brandon Weeks
|
|
||||||
Brian Norris
|
Brian Norris
|
||||||
Bryant Ou
|
Bryant Ou
|
||||||
Carl-Daniel Hailfinger
|
Carl-Daniel Hailfinger
|
||||||
@@ -105,7 +101,6 @@ Caveh Jalali
|
|||||||
Cavium Inc.
|
Cavium Inc.
|
||||||
Chao Gui
|
Chao Gui
|
||||||
Chen-Tsung Hsieh
|
Chen-Tsung Hsieh
|
||||||
Chen. Gang C
|
|
||||||
Chia-Ling Hou
|
Chia-Ling Hou
|
||||||
Chien-Chih Tseng
|
Chien-Chih Tseng
|
||||||
Chris Wang
|
Chris Wang
|
||||||
@@ -133,7 +128,6 @@ Da Lao
|
|||||||
Daisuke Nojiri
|
Daisuke Nojiri
|
||||||
Damien Zammit
|
Damien Zammit
|
||||||
Dan Callaghan
|
Dan Callaghan
|
||||||
Dan Campbell
|
|
||||||
Daniel Campello
|
Daniel Campello
|
||||||
Daniel Gröber
|
Daniel Gröber
|
||||||
Daniel Kang
|
Daniel Kang
|
||||||
@@ -187,7 +181,6 @@ Eltan B.V
|
|||||||
Eltan B.V.
|
Eltan B.V.
|
||||||
Elyes Haouas
|
Elyes Haouas
|
||||||
Eran Mitrani
|
Eran Mitrani
|
||||||
Eren Peng
|
|
||||||
Eric Biederman
|
Eric Biederman
|
||||||
Eric Lai
|
Eric Lai
|
||||||
Eric Peers
|
Eric Peers
|
||||||
@@ -201,16 +194,13 @@ Evan Green
|
|||||||
Evgeny Zinoviev
|
Evgeny Zinoviev
|
||||||
Fabian Groffen
|
Fabian Groffen
|
||||||
Fabian Kunkel
|
Fabian Kunkel
|
||||||
Fabian Meyer
|
|
||||||
Fabio Aiuto
|
Fabio Aiuto
|
||||||
Fabrice Bellard
|
Fabrice Bellard
|
||||||
Facebook, Inc.
|
Facebook, Inc.
|
||||||
Fei Yan
|
|
||||||
Felix Friedlander
|
Felix Friedlander
|
||||||
Felix Held
|
Felix Held
|
||||||
Felix Singer
|
Felix Singer
|
||||||
Fengquan Chen
|
Fengquan Chen
|
||||||
Filip Lewiński
|
|
||||||
Flora Fu
|
Flora Fu
|
||||||
Florian Laufenböck
|
Florian Laufenböck
|
||||||
Francois Toguo Fotso
|
Francois Toguo Fotso
|
||||||
@@ -244,7 +234,6 @@ HardenedLinux
|
|||||||
Harsha B R
|
Harsha B R
|
||||||
Harshit Sharma
|
Harshit Sharma
|
||||||
Henry C Chen
|
Henry C Chen
|
||||||
Herbert Wu
|
|
||||||
Hewlett Packard Enterprise Development LP
|
Hewlett Packard Enterprise Development LP
|
||||||
Hewlett-Packard Development Company, L.P.
|
Hewlett-Packard Development Company, L.P.
|
||||||
Himanshu Sahdev
|
Himanshu Sahdev
|
||||||
@@ -297,7 +286,6 @@ Jason Zhao
|
|||||||
jason-ch chen
|
jason-ch chen
|
||||||
Jason-jh Lin
|
Jason-jh Lin
|
||||||
Jay Patel
|
Jay Patel
|
||||||
Jean Lucas
|
|
||||||
Jeff Chase
|
Jeff Chase
|
||||||
Jeff Daly
|
Jeff Daly
|
||||||
Jeff Li
|
Jeff Li
|
||||||
@@ -319,7 +307,6 @@ Jitao Shi
|
|||||||
Joe Pillow
|
Joe Pillow
|
||||||
Joe Tessler
|
Joe Tessler
|
||||||
Joel Kitching
|
Joel Kitching
|
||||||
Joel Linn
|
|
||||||
Joey Peng
|
Joey Peng
|
||||||
Johanna Schander
|
Johanna Schander
|
||||||
John Su
|
John Su
|
||||||
@@ -338,7 +325,6 @@ Jordan Crouse
|
|||||||
Jörg Mische
|
Jörg Mische
|
||||||
Joseph Smith
|
Joseph Smith
|
||||||
Josie Nordrum
|
Josie Nordrum
|
||||||
Juan José García-Castro Crespo
|
|
||||||
Julia Tsai
|
Julia Tsai
|
||||||
Julian Schroeder
|
Julian Schroeder
|
||||||
Julian Stecklina
|
Julian Stecklina
|
||||||
@@ -351,7 +337,6 @@ Kangheui Won
|
|||||||
Kapil Porwal
|
Kapil Porwal
|
||||||
Karol Zmyslowski
|
Karol Zmyslowski
|
||||||
Karthik Ramasubramanian
|
Karthik Ramasubramanian
|
||||||
Kei Hiroyoshi
|
|
||||||
Keith Hui
|
Keith Hui
|
||||||
Keith Packard
|
Keith Packard
|
||||||
Kenneth Chan
|
Kenneth Chan
|
||||||
@@ -382,11 +367,9 @@ Lawrence Chang
|
|||||||
Leah Rowe
|
Leah Rowe
|
||||||
Lean Sheng Tan
|
Lean Sheng Tan
|
||||||
Lei Wen
|
Lei Wen
|
||||||
Lennart Eichhorn
|
|
||||||
Lenovo Group Ltd
|
Lenovo Group Ltd
|
||||||
Leo Chou
|
Leo Chou
|
||||||
Li-Ta Lo
|
Li-Ta Lo
|
||||||
Li1 Feng
|
|
||||||
Liam Flaherty
|
Liam Flaherty
|
||||||
Libra Li
|
Libra Li
|
||||||
Libretrend LDA
|
Libretrend LDA
|
||||||
@@ -414,7 +397,6 @@ Marc Bertens
|
|||||||
Marc Jones
|
Marc Jones
|
||||||
Marco Chen
|
Marco Chen
|
||||||
Marek Kasiewicz
|
Marek Kasiewicz
|
||||||
Marek Maślanka
|
|
||||||
Marek Vasut
|
Marek Vasut
|
||||||
Mario Scheithauer
|
Mario Scheithauer
|
||||||
Marius Gröger
|
Marius Gröger
|
||||||
@@ -483,12 +465,10 @@ Myles Watson
|
|||||||
Nancy.Lin
|
Nancy.Lin
|
||||||
Naresh Solanki
|
Naresh Solanki
|
||||||
Nathan Lu
|
Nathan Lu
|
||||||
Naveen R. Iyer
|
|
||||||
Neill Corlett
|
Neill Corlett
|
||||||
Network Appliance Inc.
|
Network Appliance Inc.
|
||||||
Nicholas Chin
|
Nicholas Chin
|
||||||
Nicholas Sielicki
|
Nicholas Sielicki
|
||||||
Nicholas Sudsgaard
|
|
||||||
Nick Barker
|
Nick Barker
|
||||||
Nick Chen
|
Nick Chen
|
||||||
Nick Vaccaro
|
Nick Vaccaro
|
||||||
@@ -522,7 +502,6 @@ Paul Fagerburg
|
|||||||
Paul Menzel
|
Paul Menzel
|
||||||
Paul2 Huang
|
Paul2 Huang
|
||||||
Paulo Alcantara
|
Paulo Alcantara
|
||||||
Pavan Holla
|
|
||||||
Pavel Sayekat
|
Pavel Sayekat
|
||||||
Paz Zcharya
|
Paz Zcharya
|
||||||
PC Engines GmbH
|
PC Engines GmbH
|
||||||
@@ -541,7 +520,6 @@ Philipp Deppenwiese
|
|||||||
Philipp Hug
|
Philipp Hug
|
||||||
Piotr Kleinschmidt
|
Piotr Kleinschmidt
|
||||||
Po Xu
|
Po Xu
|
||||||
Poornima Tom
|
|
||||||
Prasad Malisetty
|
Prasad Malisetty
|
||||||
Prashant Malani
|
Prashant Malani
|
||||||
Pratik Vishwakarma
|
Pratik Vishwakarma
|
||||||
@@ -551,7 +529,6 @@ Protectli
|
|||||||
Purism SPC
|
Purism SPC
|
||||||
Purism, SPC
|
Purism, SPC
|
||||||
Qii Wang
|
Qii Wang
|
||||||
Qinghong Zeng
|
|
||||||
Qualcomm Technologies, Inc.
|
Qualcomm Technologies, Inc.
|
||||||
Quanta Computer INC
|
Quanta Computer INC
|
||||||
Raihow Shi
|
Raihow Shi
|
||||||
@@ -595,7 +572,6 @@ Robinson P. Tryon
|
|||||||
Rockchip, Inc.
|
Rockchip, Inc.
|
||||||
Rocky Phagura
|
Rocky Phagura
|
||||||
Roger Lu
|
Roger Lu
|
||||||
Roger Wang
|
|
||||||
Roja Rani Yarubandi
|
Roja Rani Yarubandi
|
||||||
Romain Lievin
|
Romain Lievin
|
||||||
Roman Zippel
|
Roman Zippel
|
||||||
@@ -770,13 +746,11 @@ Wolfgang Denk
|
|||||||
Won Chung
|
Won Chung
|
||||||
Wonkyu Kim
|
Wonkyu Kim
|
||||||
Wuxy
|
Wuxy
|
||||||
Xiang W
|
|
||||||
Xin Ji
|
Xin Ji
|
||||||
Xixi Chen
|
Xixi Chen
|
||||||
Xuxin Xiong
|
Xuxin Xiong
|
||||||
YADRO
|
YADRO
|
||||||
Yan Liu
|
Yan Liu
|
||||||
Yang Wu
|
|
||||||
Yann Collet
|
Yann Collet
|
||||||
Yaroslav Kurlaev
|
Yaroslav Kurlaev
|
||||||
YH Lin
|
YH Lin
|
||||||
@@ -793,7 +767,6 @@ Yuanliding
|
|||||||
Yuchen He
|
Yuchen He
|
||||||
Yuchen Huang
|
Yuchen Huang
|
||||||
Yunlong Jia
|
Yunlong Jia
|
||||||
Yuval Peress
|
|
||||||
Zachary Yedidia
|
Zachary Yedidia
|
||||||
Zanxi Chen
|
Zanxi Chen
|
||||||
Zhanyong Wang
|
Zhanyong Wang
|
||||||
@@ -803,11 +776,10 @@ Zhi7 Li
|
|||||||
Zhiqiang Ma
|
Zhiqiang Ma
|
||||||
Zhixing Ma
|
Zhixing Ma
|
||||||
Zhiyong Tao
|
Zhiyong Tao
|
||||||
Zhongtian Wu
|
zhongtian wu
|
||||||
Zhuohao Lee
|
Zhuohao Lee
|
||||||
Ziang Wang
|
Ziang Wang
|
||||||
Zoey Wu
|
Zoey Wu
|
||||||
Zoltan Baldaszti
|
Zoltan Baldaszti
|
||||||
小田喜陽彦
|
小田喜陽彦
|
||||||
忧郁沙茶
|
|
||||||
陳建宏
|
陳建宏
|
@@ -31,7 +31,8 @@ livesphinx: $(BUILDDIR)
|
|||||||
|
|
||||||
test:
|
test:
|
||||||
@echo "Test for logging purposes - Failing tests will not fail the build"
|
@echo "Test for logging purposes - Failing tests will not fail the build"
|
||||||
-$(MAKE) -f Makefile.sphinx clean && $(MAKE) -k -f Makefile.sphinx html
|
-$(MAKE) -f Makefile.sphinx clean && $(MAKE) -K -f Makefile.sphinx html
|
||||||
|
-$(MAKE) -f Makefile.sphinx clean && $(MAKE) -K -f Makefile.sphinx doctest
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@echo "all - Builds all documentation targets"
|
@echo "all - Builds all documentation targets"
|
||||||
|
@@ -29,7 +29,7 @@ sealings are sent via encrypted email.
|
|||||||
|
|
||||||
### NovaCustom laptops
|
### NovaCustom laptops
|
||||||
|
|
||||||
[NovaCustom](https://novacustom.com) sells configurable laptops with
|
[NovaCustom](https://configurelaptop.eu/) sells configurable laptops with
|
||||||
[Dasharo](https://dasharo.com/) coreboot based firmware on board, maintained by
|
[Dasharo](https://dasharo.com/) coreboot based firmware on board, maintained by
|
||||||
[3mdeb](https://3mdeb.com/). NovaCustom offers full GNU/Linux and Microsoft
|
[3mdeb](https://3mdeb.com/). NovaCustom offers full GNU/Linux and Microsoft
|
||||||
Windows compatibility. NovaCustom ensures security updates via fwupd for 5 years
|
Windows compatibility. NovaCustom ensures security updates via fwupd for 5 years
|
||||||
|
@@ -84,8 +84,8 @@ the operating system.
|
|||||||
|
|
||||||
* U-boot, depthcharge, FILO, etc.
|
* U-boot, depthcharge, FILO, etc.
|
||||||
|
|
||||||
There’s [https://doc.coreboot.org/payloads.html](https://doc.coreboot.org/payloads.html)
|
There’s [https://doc.coreboot.org/payloads.html](https://doc.coreboot.org/payloads.
|
||||||
with a list, although it’s not complete.
|
html) with a list, although it’s not complete.
|
||||||
|
|
||||||
|
|
||||||
### What does coreboot leave in memory after it's done initializing the hardware?
|
### What does coreboot leave in memory after it's done initializing the hardware?
|
||||||
|
@@ -200,9 +200,9 @@ values to be set based on other values.
|
|||||||
visible in the front end.
|
visible in the front end.
|
||||||
|
|
||||||
|
|
||||||
### Keywords
|
## Keywords
|
||||||
|
|
||||||
#### bool
|
### bool
|
||||||
|
|
||||||
The 'bool' keyword assigns a boolean type to a symbol. The allowable values for
|
The 'bool' keyword assigns a boolean type to a symbol. The allowable values for
|
||||||
a boolean type are 'n' or 'y'. The keyword can be followed by an optional prompt
|
a boolean type are 'n' or 'y'. The keyword can be followed by an optional prompt
|
||||||
@@ -238,7 +238,7 @@ bool \[prompt\] \[if <expr>\]
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### choice
|
### choice
|
||||||
|
|
||||||
This creates a selection list of one or more boolean symbols. For bools, only
|
This creates a selection list of one or more boolean symbols. For bools, only
|
||||||
one of the symbols can be selected, and one will be be forced to be selected,
|
one of the symbols can be selected, and one will be be forced to be selected,
|
||||||
@@ -301,7 +301,7 @@ choice \[symbol\]
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### comment
|
### comment
|
||||||
|
|
||||||
This keyword defines a line of text that is displayed to the user in the
|
This keyword defines a line of text that is displayed to the user in the
|
||||||
configuration frontend and is additionally written to the output files.
|
configuration frontend and is additionally written to the output files.
|
||||||
@@ -326,7 +326,7 @@ comment <prompt>
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### config
|
### config
|
||||||
|
|
||||||
This is the keyword that starts a block defining a Kconfig symbol. The symbol
|
This is the keyword that starts a block defining a Kconfig symbol. The symbol
|
||||||
modifiers follow the 'config' statement.
|
modifiers follow the 'config' statement.
|
||||||
@@ -363,7 +363,7 @@ config <symbol>
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### default
|
### default
|
||||||
|
|
||||||
The ‘default’ keyword assigns a value to a symbol in the case where no preset
|
The ‘default’ keyword assigns a value to a symbol in the case where no preset
|
||||||
value exists, i.e. the symbol is not present and assigned in .config. If there
|
value exists, i.e. the symbol is not present and assigned in .config. If there
|
||||||
@@ -403,7 +403,7 @@ default <expr> \[if <expr>\]
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### def_bool
|
### def_bool
|
||||||
|
|
||||||
‘def_bool’ is similar to the 'bool' keyword in that it sets a symbol’s type to
|
‘def_bool’ is similar to the 'bool' keyword in that it sets a symbol’s type to
|
||||||
boolean. It lets you set the type and default value at the same time, instead
|
boolean. It lets you set the type and default value at the same time, instead
|
||||||
@@ -437,7 +437,7 @@ def_bool <expr> \[if <expr>\]
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### depends on
|
### depends on
|
||||||
|
|
||||||
This defines a dependency for a menu entry, including symbols and comments. It
|
This defines a dependency for a menu entry, including symbols and comments. It
|
||||||
behaves the same as surrounding the menu entry with an if/endif block. If the
|
behaves the same as surrounding the menu entry with an if/endif block. If the
|
||||||
@@ -466,28 +466,28 @@ depends on <expr>
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### endchoice
|
### endchoice
|
||||||
|
|
||||||
This ends a choice block. See the 'choice' keyword for more information and an
|
This ends a choice block. See the 'choice' keyword for more information and an
|
||||||
example.
|
example.
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### endif
|
### endif
|
||||||
|
|
||||||
This ends a block started by the 'if' keyword. See the 'if' keyword for more
|
This ends a block started by the 'if' keyword. See the 'if' keyword for more
|
||||||
information and an example.
|
information and an example.
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### endmenu
|
### endmenu
|
||||||
|
|
||||||
This ends a menu block. See the 'menu' keyword for more information and an
|
This ends a menu block. See the 'menu' keyword for more information and an
|
||||||
example.
|
example.
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### help
|
### help
|
||||||
|
|
||||||
The 'help' keyword defines the subsequent block of text as help for a config or
|
The 'help' keyword defines the subsequent block of text as help for a config or
|
||||||
choice block. The help block is started by the 'help' keyword on a line by
|
choice block. The help block is started by the 'help' keyword on a line by
|
||||||
@@ -519,7 +519,7 @@ help <help text>
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### hex
|
### hex
|
||||||
|
|
||||||
This is another symbol type specifier, specifying an unsigned integer value
|
This is another symbol type specifier, specifying an unsigned integer value
|
||||||
formatted as hexadecimal.
|
formatted as hexadecimal.
|
||||||
@@ -555,7 +555,7 @@ hex <expr> \[if <expr>\]
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### if
|
### if
|
||||||
|
|
||||||
The 'if' keyword is overloaded, used in two different ways. The first definition
|
The 'if' keyword is overloaded, used in two different ways. The first definition
|
||||||
enables and disables various other keywords, and follows the other keyword
|
enables and disables various other keywords, and follows the other keyword
|
||||||
@@ -596,7 +596,7 @@ endif
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### int
|
### int
|
||||||
|
|
||||||
A type setting keyword, defines a symbol as an integer, accepting only signed
|
A type setting keyword, defines a symbol as an integer, accepting only signed
|
||||||
numeric values. The values can be further restricted with the ‘range’ keyword.
|
numeric values. The values can be further restricted with the ‘range’ keyword.
|
||||||
@@ -632,7 +632,7 @@ int <expr> \[if <expr>\]
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### mainmenu
|
### mainmenu
|
||||||
|
|
||||||
The 'mainmenu' keyword sets the title or title bar of the configuration front
|
The 'mainmenu' keyword sets the title or title bar of the configuration front
|
||||||
end, depending on how the configuration program decides to use it. It can only
|
end, depending on how the configuration program decides to use it. It can only
|
||||||
@@ -652,7 +652,7 @@ mainmenu "coreboot configuration"
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### menu
|
### menu
|
||||||
|
|
||||||
The 'menu' and 'endmenu' keywords tell the configuration front end that the
|
The 'menu' and 'endmenu' keywords tell the configuration front end that the
|
||||||
enclosed statements are part of a group of related pieces.
|
enclosed statements are part of a group of related pieces.
|
||||||
@@ -699,7 +699,7 @@ endmenu
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### prompt
|
### prompt
|
||||||
|
|
||||||
The 'prompt' keyword sets the text displayed for a config symbol or choice in
|
The 'prompt' keyword sets the text displayed for a config symbol or choice in
|
||||||
configuration front end.
|
configuration front end.
|
||||||
@@ -752,7 +752,7 @@ prompt <prompt> \[if <expr>\]
|
|||||||
prompt "Prompt value 2"
|
prompt "Prompt value 2"
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### range
|
### range
|
||||||
|
|
||||||
This sets the allowable minimum and maximum entries for hex or int type config
|
This sets the allowable minimum and maximum entries for hex or int type config
|
||||||
symbols.
|
symbols.
|
||||||
@@ -774,7 +774,7 @@ range <symbol> <symbol> \[if <expr>\]
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### select
|
### select
|
||||||
|
|
||||||
The ‘select’ keyword is used within a bool type config block. In coreboot (and
|
The ‘select’ keyword is used within a bool type config block. In coreboot (and
|
||||||
other projects that don't use modules), the 'select' keyword can force an
|
other projects that don't use modules), the 'select' keyword can force an
|
||||||
@@ -818,7 +818,7 @@ select <symbol> \[if <expr>\]
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### source
|
### source
|
||||||
|
|
||||||
The 'source' keyword functions much the same as an 'include' statement in c.
|
The 'source' keyword functions much the same as an 'include' statement in c.
|
||||||
This pulls one or more files into Kconfig at the location of the 'source'
|
This pulls one or more files into Kconfig at the location of the 'source'
|
||||||
@@ -877,7 +877,7 @@ statements that generate a list of all the platform names:
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
#### string
|
### string
|
||||||
|
|
||||||
The last of the symbol type assignment keywords. 'string' allows a text value to
|
The last of the symbol type assignment keywords. 'string' allows a text value to
|
||||||
be entered.
|
be entered.
|
||||||
@@ -923,7 +923,7 @@ keyword later. See the prompt keyword for more notes.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Keywords not used in coreboot at the time of writing:
|
## Keywords not used in coreboot at the time of writing:
|
||||||
|
|
||||||
- allnoconfig_y:
|
- allnoconfig_y:
|
||||||
- defconfig_list
|
- defconfig_list
|
||||||
@@ -948,7 +948,7 @@ statements:
|
|||||||
#define SYMBOL NAME XXX
|
#define SYMBOL NAME XXX
|
||||||
|
|
||||||
|
|
||||||
#### Symbol types:
|
##### Symbol types:
|
||||||
- bool, int, and hex types - Every symbol of one of these types created in the
|
- bool, int, and hex types - Every symbol of one of these types created in the
|
||||||
Kconfig tree is defined. It doesn’t matter whether they’re in an if/endif
|
Kconfig tree is defined. It doesn’t matter whether they’re in an if/endif
|
||||||
block, or have a ‘depends on’ statement - they ALL end up being defined in
|
block, or have a ‘depends on’ statement - they ALL end up being defined in
|
||||||
@@ -1168,19 +1168,19 @@ saved .config file. As always, a 'select' statement overrides any specified
|
|||||||
|
|
||||||
## Kconfig Editor Highlighting
|
## Kconfig Editor Highlighting
|
||||||
|
|
||||||
### vim:
|
#### vim:
|
||||||
|
|
||||||
vim has syntax highlighting for Kconfig built in (or at least as a part of
|
vim has syntax highlighting for Kconfig built in (or at least as a part of
|
||||||
vim-common), but most editors do not.
|
vim-common), but most editors do not.
|
||||||
|
|
||||||
|
|
||||||
### ultraedit:
|
#### ultraedit:
|
||||||
|
|
||||||
https://github.com/martinlroth/wordfiles/blob/master/kconfig.uew
|
https://github.com/martinlroth/wordfiles/blob/master/kconfig.uew
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### atom:
|
#### atom:
|
||||||
|
|
||||||
https://github.com/martinlroth/language-kconfig
|
https://github.com/martinlroth/language-kconfig
|
||||||
|
|
||||||
|
@@ -99,7 +99,7 @@ To reference documents use the TOC tree or inline RST code.
|
|||||||
Under Sphinx markdown tables are not supported. Therefore you can use following
|
Under Sphinx markdown tables are not supported. Therefore you can use following
|
||||||
code block to write tables in reStructuredText and embed them into the markdown:
|
code block to write tables in reStructuredText and embed them into the markdown:
|
||||||
|
|
||||||
```{eval-rst}
|
```eval_rst
|
||||||
+------------+------------+-----------+
|
+------------+------------+-----------+
|
||||||
| Header 1 | Header 2 | Header 3 |
|
| Header 1 | Header 2 | Header 3 |
|
||||||
+============+============+===========+
|
+============+============+===========+
|
||||||
@@ -144,7 +144,7 @@ you'll see the following warning:
|
|||||||
You can import CSV files and let sphinx automatically convert them to human
|
You can import CSV files and let sphinx automatically convert them to human
|
||||||
readable tables, using the following reStructuredText snipped:
|
readable tables, using the following reStructuredText snipped:
|
||||||
|
|
||||||
```{eval-rst}
|
```eval_rst
|
||||||
.. csv-table::
|
.. csv-table::
|
||||||
:header: "Key", "Value"
|
:header: "Key", "Value"
|
||||||
:file: keyvalues.csv
|
:file: keyvalues.csv
|
||||||
|
@@ -139,45 +139,6 @@ Every now and then, coreboot is present in one way or another at
|
|||||||
[conferences](community/conferences.md). If you're around, come and
|
[conferences](community/conferences.md). If you're around, come and
|
||||||
say hello!
|
say hello!
|
||||||
|
|
||||||
## Blob policy in the coreboot project
|
|
||||||
|
|
||||||
The goal of the coreboot project is to provide a FOSS firmware solution across
|
|
||||||
multiple CPU architectures, such as ARM, x86, and RISC-V. While fully open
|
|
||||||
source implementations for these architectures are encouraged and preferred,
|
|
||||||
we understand that a fully open implementation whereby every firmware component
|
|
||||||
is available as source code for modern platforms is not always feasible.
|
|
||||||
Different reasons inhibit the availability of fully open implementations,
|
|
||||||
including limited development resources, 3rd party license constraints of
|
|
||||||
IP blocks, or a legacy mindset of the silicon vendors.
|
|
||||||
|
|
||||||
It is important for the coreboot project to have support for modern CPU
|
|
||||||
platforms in order to provide a viable alternative for proprietary firmware
|
|
||||||
implementations. We do not have direct control over how hardware vendors design
|
|
||||||
their products, however we can provide an attractive alternative to the
|
|
||||||
expensive and complicated proprietary firmware model that exists today.
|
|
||||||
For modern platforms, we are largely dependent on the silicon
|
|
||||||
vendor to provide additional information on how to properly initialize the
|
|
||||||
hardware, as the required datasheets are often only available with an NDA.
|
|
||||||
Therefore, one possible way to have coreboot support for the latest platforms
|
|
||||||
is binary code (aka, a blob) provided by the silicon vendor. While we do
|
|
||||||
discourage this solution, it can be a door opener for coreboot’s support of a
|
|
||||||
given platform and thus keep coreboot functional on modern platforms. It is
|
|
||||||
clearly not the goal of the project to accept every blob a silicon vendor wishes
|
|
||||||
to use without question. On the contrary, each new blob needs to be examined
|
|
||||||
critically by the community, evaluating the need, risk, and alternative options.
|
|
||||||
|
|
||||||
Wherever possible, introducing new blobs should be avoided. That said, there
|
|
||||||
can be situations where a piece of code provided as a blob will enable the rest
|
|
||||||
of the fully open source firmware stack on a brand new platform. If blocking
|
|
||||||
this blob would lead to no support at all for the platform in question in
|
|
||||||
coreboot, this situation needs to be examined carefully. While these kinds
|
|
||||||
of discussion will be coordinated closely with the community (e.g. on the
|
|
||||||
mailing list or dedicated meetings), ultimately it is up to the leadership to
|
|
||||||
decide if there is no agreement between the community and the vendor pushing for
|
|
||||||
the new blob. This decision will be communicated on the mailing list.
|
|
||||||
Please see additionally
|
|
||||||
[coreboot binary policy](https://github.com/coreboot/blobs/blob/master/README.md).
|
|
||||||
|
|
||||||
## Getting the source code
|
## Getting the source code
|
||||||
|
|
||||||
coreboot is primarily developed in the
|
coreboot is primarily developed in the
|
||||||
|
@@ -1,83 +0,0 @@
|
|||||||
# Dell Latitude E7240
|
|
||||||
|
|
||||||
This page is about the notebook [Dell Latitude E7240].
|
|
||||||
|
|
||||||
## Release status
|
|
||||||
|
|
||||||
Dell Latitude E7240 was released in 2013 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. mrc.bin
|
|
||||||
2. Intel ME firmware
|
|
||||||
|
|
||||||
Memory reference code in mrc.bin is used to initialize the Haswell platform.
|
|
||||||
You need this blob to build a working coreboot image. Please read
|
|
||||||
[mrc.bin](../../northbridge/intel/haswell/mrc.bin) for instructions on
|
|
||||||
retrieving and using it.
|
|
||||||
|
|
||||||
Intel ME firmware is in the flash chip. It is not needed when building coreboot.
|
|
||||||
It can be extracted from the OEM firmware. You can also flash only the BIOS
|
|
||||||
region to leave Intel ME firmware untouched.
|
|
||||||
|
|
||||||
## Programming
|
|
||||||
|
|
||||||
The laptop can be flashed internally under OEM firmware using [dell-flash-unlock].
|
|
||||||
|
|
||||||
To flash with an external programmer, you need to remove the battery and the base cover.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
For more details have a look at the general [flashing tutorial].
|
|
||||||
|
|
||||||
It is also possible to flash internally under coreboot.
|
|
||||||
|
|
||||||
## Debugging
|
|
||||||
|
|
||||||
The board can be debugged with EHCI debug. The EHCI debug port is next to the miniDP port.
|
|
||||||
|
|
||||||
There's a serial port on dock, but it's not yet supported in coreboot.
|
|
||||||
|
|
||||||
Schematic of this laptop can be found online. The board name is Compal LA-9431P.
|
|
||||||
|
|
||||||
## Test status
|
|
||||||
|
|
||||||
### Not working
|
|
||||||
|
|
||||||
- EC ACPI
|
|
||||||
- SD/MMC card reader (kernel reports "Timeout waiting for hardware cmd interrupt.")
|
|
||||||
- No internal display before booting to OS when connected with a dock
|
|
||||||
|
|
||||||
### Working
|
|
||||||
|
|
||||||
- Integrated graphics init with libgfxinit
|
|
||||||
- mSATA
|
|
||||||
- WLAN
|
|
||||||
- USB
|
|
||||||
- Keyboard
|
|
||||||
- Touchpad and the buttons on it
|
|
||||||
- Dock: all USB ports, DisplayPort, eSATA
|
|
||||||
- Internal flashing
|
|
||||||
|
|
||||||
|
|
||||||
## Technology
|
|
||||||
|
|
||||||
```{eval-rst}
|
|
||||||
+------------------+-----------------------------+
|
|
||||||
| CPU | Intel Haswell-ULT |
|
|
||||||
+------------------+-----------------------------+
|
|
||||||
| PCH | Intel Lynx Point Low Power |
|
|
||||||
+------------------+-----------------------------+
|
|
||||||
| EC | SMSC MEC5075 |
|
|
||||||
+------------------+-----------------------------+
|
|
||||||
| Super I/O | SMSC ECE5048 |
|
|
||||||
+------------------+-----------------------------+
|
|
||||||
| Coprocessor | Intel Management Engine |
|
|
||||||
+------------------+-----------------------------+
|
|
||||||
```
|
|
||||||
|
|
||||||
[Dell Latitude E7240]: https://www.dell.com/support/home/en-us/product-support/product/latitude-e7240-ultrabook/docs
|
|
||||||
[dell-flash-unlock]: https://github.com/nic3-14159/dell-flash-unlock
|
|
||||||
[flashing tutorial]: ../../tutorial/flashing_firmware/ext_power.md
|
|
Binary file not shown.
Before Width: | Height: | Size: 97 KiB |
@@ -1,42 +0,0 @@
|
|||||||
# QEMU SBSA emulator
|
|
||||||
This page describes how to build and run ```coreboot``` for QEMU's sbsa-ref machine.
|
|
||||||
The qemu-sbsa ```coreboot``` image acts as BL-3.3 for Arm Trusted Firmware (```TF-A```) and
|
|
||||||
mainly takes care of setting up SMBIOS and ACPI tables, hence, in order to boot,
|
|
||||||
you also need to supply a ```TF-A``` image.
|
|
||||||
|
|
||||||
## Building TF-A
|
|
||||||
|
|
||||||
You can build ```TF-A``` from source by fetching
|
|
||||||
```
|
|
||||||
https://github.com/ARM-software/arm-trusted-firmware
|
|
||||||
```
|
|
||||||
and building the qemu-sbsa platform
|
|
||||||
```
|
|
||||||
PLAT=qemu_sbsa
|
|
||||||
```
|
|
||||||
Upon entry, ```coreboot``` expects a FDT pointer in x0, so make sure to compile ```TF-A``` with
|
|
||||||
```
|
|
||||||
ARM_LINUX_KERNEL_AS_BL33=1
|
|
||||||
```
|
|
||||||
This will force ```TF-A``` to pass a pointer to the FDT in x0.
|
|
||||||
|
|
||||||
## Building coreboot
|
|
||||||
|
|
||||||
Simply select the qemu-sbsa board and, optionally, configure a payload. We recommend
|
|
||||||
the ```leanefi``` payload. ```leanefi``` will setup a minimal set of UEFI services, just enough
|
|
||||||
to boot into a linux kernel.
|
|
||||||
|
|
||||||
## Running coreboot in QEMU
|
|
||||||
|
|
||||||
Once you have obtained ```TF-A``` and ```coreboot``` images, launch qemu via
|
|
||||||
|
|
||||||
```bash
|
|
||||||
qemu-system-aarch64 -nographic -m 1024 -M sbsa-ref -pflash <path/to/TFA.fd> \
|
|
||||||
-pflash <path/to/coreboot.rom>
|
|
||||||
```
|
|
||||||
|
|
||||||
## LBBR bootflow
|
|
||||||
|
|
||||||
arm and 9elements worked together in order to create a LBBR compliant bootflow
|
|
||||||
consisting of ```TF-A```, ```coreboot```, ```leanefi``` and ```LinuxBoot```. A proof of concept
|
|
||||||
can be found here https://gitlab.arm.com/systemready/firmware-build/linuxboot/lbbr-coreboot-poc
|
|
@@ -1,80 +0,0 @@
|
|||||||
# HP EliteBook 8560w
|
|
||||||
|
|
||||||
This page describes how to run coreboot on the [HP EliteBook 8560w].
|
|
||||||
|
|
||||||
## Required proprietary blobs
|
|
||||||
|
|
||||||
- Intel Firmware Descriptor, ME and GbE firmware
|
|
||||||
- EC: please read [HP Laptops with KBC1126 Embedded Controller](hp_kbc1126_laptops)
|
|
||||||
|
|
||||||
## Flashing instructions
|
|
||||||
|
|
||||||
When running vendor firmware, external flashing is needed.
|
|
||||||
|
|
||||||
HP EliteBook 8560w has an 8MiB 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.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
```{eval-rst}
|
|
||||||
+---------------------+------------+
|
|
||||||
| Type | Value |
|
|
||||||
+=====================+============+
|
|
||||||
| Socketed flash | no |
|
|
||||||
+---------------------+------------+
|
|
||||||
| Model | MX25L6406E |
|
|
||||||
+---------------------+------------+
|
|
||||||
| Size | 8 MiB |
|
|
||||||
+---------------------+------------+
|
|
||||||
| Package | SOIC-8 |
|
|
||||||
+---------------------+------------+
|
|
||||||
| Write protection | no |
|
|
||||||
+---------------------+------------+
|
|
||||||
| Dual BIOS feature | no |
|
|
||||||
+---------------------+------------+
|
|
||||||
| In circuit flashing | yes |
|
|
||||||
+---------------------+------------+
|
|
||||||
| Internal flashing | yes |
|
|
||||||
+---------------------+------------+
|
|
||||||
```
|
|
||||||
|
|
||||||
## Working
|
|
||||||
|
|
||||||
- i7-2720QM, 8G+8G
|
|
||||||
- Arch Linux boot from SeaBIOS payload
|
|
||||||
- EHCI debug: the port is beside the eSATA port
|
|
||||||
- SATA
|
|
||||||
- eSATA
|
|
||||||
- USB2 and USB3
|
|
||||||
- keyboard
|
|
||||||
- Gigabit Ethernet
|
|
||||||
- WLAN
|
|
||||||
- WWAN
|
|
||||||
- VGA and DisplayPort
|
|
||||||
- audio
|
|
||||||
- EC ACPI
|
|
||||||
- Using `me_cleaner`
|
|
||||||
- dock: PS/2 keyboard, USB, DisplayPort
|
|
||||||
- TPM
|
|
||||||
- S3 suspend/resume
|
|
||||||
|
|
||||||
## Technology
|
|
||||||
|
|
||||||
```{eval-rst}
|
|
||||||
+------------------+--------------------------------------------------+
|
|
||||||
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
|
|
||||||
+------------------+--------------------------------------------------+
|
|
||||||
| Southbridge | bd82x6x |
|
|
||||||
+------------------+--------------------------------------------------+
|
|
||||||
| CPU | model_206ax |
|
|
||||||
+------------------+--------------------------------------------------+
|
|
||||||
| Super I/O | SMSC LPC47n217 |
|
|
||||||
+------------------+--------------------------------------------------+
|
|
||||||
| EC | SMSC KBC1126 |
|
|
||||||
+------------------+--------------------------------------------------+
|
|
||||||
| Coprocessor | Intel Management Engine |
|
|
||||||
+------------------+--------------------------------------------------+
|
|
||||||
```
|
|
||||||
|
|
||||||
[HP EliteBook 8560w]: https://support.hp.com/us-en/product/hp-elitebook-8560w-mobile-workstation/5071171
|
|
Binary file not shown.
Before Width: | Height: | Size: 50 KiB |
@@ -14,7 +14,7 @@ therefore the automatic fan control will not increase the fan speed.
|
|||||||
|
|
||||||
## Flashing coreboot
|
## Flashing coreboot
|
||||||
|
|
||||||
```{eval-rst}
|
```{eval_rst}
|
||||||
+---------------------+-------------------------+
|
+---------------------+-------------------------+
|
||||||
| Type | Value |
|
| Type | Value |
|
||||||
+=====================+=========================+
|
+=====================+=========================+
|
||||||
@@ -82,7 +82,7 @@ until cleanly power cycled.
|
|||||||
|
|
||||||
## Technology
|
## Technology
|
||||||
|
|
||||||
```{eval-rst}
|
```{eval_rst}
|
||||||
+------------------+--------------------------------------------------+
|
+------------------+--------------------------------------------------+
|
||||||
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
|
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
|
||||||
+------------------+--------------------------------------------------+
|
+------------------+--------------------------------------------------+
|
||||||
|
@@ -76,7 +76,6 @@ N130WU / N131WU <clevo/n130wu/index.md>
|
|||||||
```{toctree}
|
```{toctree}
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
Latitude E7240 <dell/e7240.md>
|
|
||||||
OptiPlex 9010 SFF <dell/optiplex_9010.md>
|
OptiPlex 9010 SFF <dell/optiplex_9010.md>
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -90,7 +89,6 @@ The boards in this section are not real mainboards, but emulators.
|
|||||||
Spike RISC-V emulator <emulation/spike-riscv.md>
|
Spike RISC-V emulator <emulation/spike-riscv.md>
|
||||||
QEMU RISC-V emulator <emulation/qemu-riscv.md>
|
QEMU RISC-V emulator <emulation/qemu-riscv.md>
|
||||||
QEMU AArch64 emulator <emulation/qemu-aarch64.md>
|
QEMU AArch64 emulator <emulation/qemu-aarch64.md>
|
||||||
QEMU SBSA emulator <emulation/qemu-sbsa.md>
|
|
||||||
QEMU x86 Q35 <emulation/qemu-q35.md>
|
QEMU x86 Q35 <emulation/qemu-q35.md>
|
||||||
QEMU x86 PC <emulation/qemu-i440fx.md>
|
QEMU x86 PC <emulation/qemu-i440fx.md>
|
||||||
QEMU POWER9 <emulation/qemu-power9.md>
|
QEMU POWER9 <emulation/qemu-power9.md>
|
||||||
@@ -142,7 +140,6 @@ HP Laptops with KBC1126 EC <hp/hp_kbc1126_laptops.md>
|
|||||||
HP Sure Start <hp/hp_sure_start.md>
|
HP Sure Start <hp/hp_sure_start.md>
|
||||||
EliteBook 2170p <hp/2170p.md>
|
EliteBook 2170p <hp/2170p.md>
|
||||||
EliteBook 2560p <hp/2560p.md>
|
EliteBook 2560p <hp/2560p.md>
|
||||||
EliteBook 8560w <hp/8560w.md>
|
|
||||||
EliteBook 8760w <hp/8760w.md>
|
EliteBook 8760w <hp/8760w.md>
|
||||||
EliteBook Folio 9480m <hp/folio_9480m.md>
|
EliteBook Folio 9480m <hp/folio_9480m.md>
|
||||||
EliteBook 820 G2 <hp/elitebook_820_g2.md>
|
EliteBook 820 G2 <hp/elitebook_820_g2.md>
|
||||||
@@ -330,7 +327,6 @@ LabTop Mk III <starlabs/labtop_kbl.md>
|
|||||||
LabTop Mk IV <starlabs/labtop_cml.md>
|
LabTop Mk IV <starlabs/labtop_cml.md>
|
||||||
StarLite Mk III <starlabs/lite_glk.md>
|
StarLite Mk III <starlabs/lite_glk.md>
|
||||||
StarLite Mk IV <starlabs/lite_glkr.md>
|
StarLite Mk IV <starlabs/lite_glkr.md>
|
||||||
StarLite Mk V <starlabs/lite_adl.md>
|
|
||||||
StarBook Mk V <starlabs/starbook_tgl.md>
|
StarBook Mk V <starlabs/starbook_tgl.md>
|
||||||
StarBook Mk VI <starlabs/starbook_adl.md>
|
StarBook Mk VI <starlabs/starbook_adl.md>
|
||||||
Flashing devices <starlabs/common/flashing.md>
|
Flashing devices <starlabs/common/flashing.md>
|
||||||
|
@@ -82,7 +82,7 @@ It is possible to reduce the Intel ME firmware size to free additional
|
|||||||
space for the `bios` region. This is usually referred to as *cleaning the ME* or
|
space for the `bios` region. This is usually referred to as *cleaning the ME* or
|
||||||
*stripping the ME*.
|
*stripping the ME*.
|
||||||
After reducing the Intel ME firmware size you must modify the original IFD,
|
After reducing the Intel ME firmware size you must modify the original IFD,
|
||||||
[split the resulting coreboot ROM](#splitting-the-corebootrom) and then write
|
[split the resulting coreboot ROM](#splitting-the-coreboot-rom) and then write
|
||||||
each ROM using an [external programmer].
|
each ROM using an [external programmer].
|
||||||
Have a look at [me_cleaner] for more information.
|
Have a look at [me_cleaner] for more information.
|
||||||
|
|
||||||
|
@@ -46,7 +46,7 @@ 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
|
your backup with **ifdtool**](#modifying-flash-descriptor-using-ifdtool), or
|
||||||
[use one from the coreboot repository](#using-checked-in-flash-descriptor-via-bincfg).
|
[use one from the coreboot repository](#using-checked-in-flash-descriptor-via-bincfg).
|
||||||
|
|
||||||
### Modifying flash descriptor using ifdtool
|
#### Modifying flash descriptor using ifdtool
|
||||||
|
|
||||||
Pick the layout according to your chip size from the table below and save it to
|
Pick the layout according to your chip size from the table below and save it to
|
||||||
the `new_layout.txt` file:
|
the `new_layout.txt` file:
|
||||||
@@ -88,7 +88,7 @@ $ mv flashregion_0_flashdescriptor.bin.new.new flashregion_0_flashdescriptor.bin
|
|||||||
|
|
||||||
Continue to the [Configuring coreboot](#configuring-coreboot) section.
|
Continue to the [Configuring coreboot](#configuring-coreboot) section.
|
||||||
|
|
||||||
### Using checked-in flash descriptor via bincfg
|
#### Using checked-in flash descriptor via bincfg
|
||||||
|
|
||||||
There is a copy of an X200's flash descriptor checked into the coreboot
|
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
|
repository. It is supposed to work for the T400/T500 as well. The descriptor
|
||||||
@@ -119,7 +119,7 @@ $ make gen-ifd-x200
|
|||||||
|
|
||||||
It will be saved to the `flashregion_0_fd.bin` file.
|
It will be saved to the `flashregion_0_fd.bin` file.
|
||||||
|
|
||||||
### Configuring coreboot
|
#### Configuring coreboot
|
||||||
|
|
||||||
Now configure coreboot. You need to select correct chip size and specify paths
|
Now configure coreboot. You need to select correct chip size and specify paths
|
||||||
to flash descriptor and gbe dump.
|
to flash descriptor and gbe dump.
|
||||||
|
@@ -49,6 +49,6 @@ The board features:
|
|||||||
## Extra links
|
## Extra links
|
||||||
|
|
||||||
[flashrom]: https://flashrom.org/Flashrom
|
[flashrom]: https://flashrom.org/Flashrom
|
||||||
[flashing tutorial]: ../../tutorial/flashing_firmware/ext_power.md
|
[flashing tutorial]: ../../../../tutorial/flashing_firmware/ext_power.md
|
||||||
[Intel FSP2.0]: ../../soc/intel/fsp/index.md
|
[Intel FSP2.0]: ../../../../soc/intel/fsp/index.md
|
||||||
[AST2500]: https://www.aspeedtech.com/products.php?fPath=20&rId=440
|
[AST2500]: https://www.aspeedtech.com/products.php?fPath=20&rId=440
|
||||||
|
@@ -1,15 +1,15 @@
|
|||||||
# Building coreboot
|
## Building coreboot
|
||||||
|
|
||||||
## Preliminaries
|
### Preliminaries
|
||||||
|
|
||||||
Prior to building coreboot the following files are required:
|
Prior to building coreboot the following files are required:
|
||||||
|
|
||||||
### StarBook series:
|
#### StarBook series:
|
||||||
* Intel Flash Descriptor file (descriptor.bin)
|
* Intel Flash Descriptor file (descriptor.bin)
|
||||||
* Intel Management Engine firmware (me.bin)
|
* Intel Management Engine firmware (me.bin)
|
||||||
* ITE Embedded Controller firmware (ec.bin)
|
* ITE Embedded Controller firmware (ec.bin)
|
||||||
|
|
||||||
### StarLite series:
|
#### StarLite series:
|
||||||
* Intel Flash Descriptor file (descriptor.bin)
|
* Intel Flash Descriptor file (descriptor.bin)
|
||||||
* IFWI Image (ifwi.rom)
|
* IFWI Image (ifwi.rom)
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ The files listed below are optional:
|
|||||||
|
|
||||||
These files exist in the correct location in the [StarLabsLtd/blobs](https://github.com/StarLabsLtd/blobs) repo on GitHub which is used in place of the standard 3rdparty/blobs repo.
|
These files exist in the correct location in the [StarLabsLtd/blobs](https://github.com/StarLabsLtd/blobs) repo on GitHub which is used in place of the standard 3rdparty/blobs repo.
|
||||||
|
|
||||||
## Build
|
### Build
|
||||||
|
|
||||||
The following commands will build a working image, where the last two words represent the
|
The following commands will build a working image, where the last two words represent the
|
||||||
series and processor i.e. `lite_glkr`:
|
series and processor i.e. `lite_glkr`:
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
# Flashing with fwupd
|
# Flashing with fwupd
|
||||||
|
|
||||||
## **Requirements:**
|
#### **Requirements:**
|
||||||
|
|
||||||
* fwupd version 1.5.6 or later
|
* fwupd version 1.5.6 or later
|
||||||
* The battery must be charged to at least 30%
|
* The battery must be charged to at least 30%
|
||||||
@@ -44,7 +44,7 @@ BIOS Lock must be disabled when switching from the standard AMI (American Megatr
|
|||||||
|
|
||||||
4\. Next, press the `F10` key to **Save & Exit** and then `Enter` to confirm.
|
4\. Next, press the `F10` key to **Save & Exit** and then `Enter` to confirm.
|
||||||
|
|
||||||
## **Switching Branch**
|
#### **Switching Branch**
|
||||||
|
|
||||||
Switching branch refers to changing from AMI firmware to coreboot, or vice versa.
|
Switching branch refers to changing from AMI firmware to coreboot, or vice versa.
|
||||||
|
|
||||||
|
@@ -1,82 +0,0 @@
|
|||||||
# StarBook Mk V
|
|
||||||
|
|
||||||
## Specs
|
|
||||||
|
|
||||||
- CPU (full processor specs available at https://ark.intel.com)
|
|
||||||
- Intel N200 (Alder Lake)
|
|
||||||
- EC
|
|
||||||
- ITE IT5570E
|
|
||||||
- USB-C PD Charger
|
|
||||||
- Suspend / resume
|
|
||||||
- GPU
|
|
||||||
- Intel® Iris® Xe Graphics
|
|
||||||
- GOP driver is recommended, VBT is provided
|
|
||||||
- eDP 12.5-inch 2880x1920 or 2160x1440 LCD
|
|
||||||
- 2 x USB-C DisplayPort video
|
|
||||||
- Memory
|
|
||||||
- 16GB on-board
|
|
||||||
- Networking
|
|
||||||
- 9560 CNVi WiFi / Bluetooth
|
|
||||||
- Sound
|
|
||||||
- Realtek ALC269-VB6
|
|
||||||
- Internal speakers
|
|
||||||
- Internal microphone
|
|
||||||
- Combined headphone / microphone 3.5-mm jack
|
|
||||||
- HDMI audio
|
|
||||||
- USB-C DisplayPort audio
|
|
||||||
- Storage
|
|
||||||
- M.2 PCIe SSD
|
|
||||||
- RTS5129 MicroSD card reader
|
|
||||||
- USB
|
|
||||||
- 2 x 5MP CCD Camera
|
|
||||||
- 2 x USB 3.1 Gen 2 Type-C (right)
|
|
||||||
|
|
||||||
## Building coreboot
|
|
||||||
|
|
||||||
Please follow the [Star Labs build instructions](common/building.md) to build coreboot, using `config.starlabs_starbook_adl` as config file.
|
|
||||||
|
|
||||||
### Preliminaries
|
|
||||||
|
|
||||||
Prior to building coreboot the following files are required:
|
|
||||||
* Intel Flash Descriptor file (descriptor.bin)
|
|
||||||
* Intel Management Engine firmware (me.bin)
|
|
||||||
* ITE Embedded Controller firmware (ec.bin)
|
|
||||||
|
|
||||||
The files listed below are optional:
|
|
||||||
- Splash screen image in Windows 3.1 BMP format (Logo.bmp)
|
|
||||||
|
|
||||||
These files exist in the correct location in the StarLabsLtd/blobs repo on GitHub which is used in place of the standard 3rdparty/blobs repo.
|
|
||||||
|
|
||||||
### Build
|
|
||||||
|
|
||||||
The following commands will build a working image:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
make distclean
|
|
||||||
make defconfig KBUILD_DEFCONFIG=configs/config.starlabs_byte_adl
|
|
||||||
make
|
|
||||||
```
|
|
||||||
|
|
||||||
## Flashing coreboot
|
|
||||||
|
|
||||||
```{eval-rst}
|
|
||||||
+---------------------+------------+
|
|
||||||
| Type | Value |
|
|
||||||
+=====================+============+
|
|
||||||
| Socketed flash | no |
|
|
||||||
+---------------------+------------+
|
|
||||||
| Vendor | Winbond |
|
|
||||||
+---------------------+------------+
|
|
||||||
| Model | W25Q256.V |
|
|
||||||
+---------------------+------------+
|
|
||||||
| Size | 32 MiB |
|
|
||||||
+---------------------+------------+
|
|
||||||
| Package | SOIC-8 |
|
|
||||||
+---------------------+------------+
|
|
||||||
| Internal flashing | yes |
|
|
||||||
+---------------------+------------+
|
|
||||||
| External flashing | yes |
|
|
||||||
+---------------------+------------+
|
|
||||||
```
|
|
||||||
|
|
||||||
Please see [here](common/flashing.md) for instructions on how to flash with fwupd.
|
|
@@ -61,6 +61,6 @@ These issues apply to all boards. Have a look at the board-specific issues, too.
|
|||||||
[Supermicro X11 LGA1151 series]: https://www.supermicro.com/products/motherboard/Xeon3000/#1151
|
[Supermicro X11 LGA1151 series]: https://www.supermicro.com/products/motherboard/Xeon3000/#1151
|
||||||
[OpenBMC]: https://www.openbmc.org/
|
[OpenBMC]: https://www.openbmc.org/
|
||||||
[flashrom]: https://flashrom.org/Flashrom
|
[flashrom]: https://flashrom.org/Flashrom
|
||||||
[flashing tutorial]: ../../../tutorial/flashing_firmware/ext_power.md
|
[flashing tutorial]: ../../../../tutorial/flashing_firmware/ext_power.md
|
||||||
[Intel FSP2.0]: ../../../soc/intel/fsp/index.md
|
[Intel FSP2.0]: ../../../../soc/intel/fsp/index.md
|
||||||
[AST2400]: https://www.aspeedtech.com/products.php?fPath=20&rId=376
|
[AST2400]: https://www.aspeedtech.com/products.php?fPath=20&rId=376
|
||||||
|
@@ -160,7 +160,7 @@ As you can see, by using DIMMs with different maximum DRAM frequencies, the
|
|||||||
slowest DIMMs' frequency will be selected, to prevent over-clocking it.
|
slowest DIMMs' frequency will be selected, to prevent over-clocking it.
|
||||||
|
|
||||||
The selected frequency gives the PLL multiplier to operate at. In case the PLL
|
The selected frequency gives the PLL multiplier to operate at. In case the PLL
|
||||||
locks (see Take me to [Hard fuses](#hard-fuses)) the frequency will be used for
|
locks (see Take me to [Hard fuses](#hard_fuses)) the frequency will be used for
|
||||||
all DIMMs. At this point it's not possible to change the multiplier again,
|
all DIMMs. At this point it's not possible to change the multiplier again,
|
||||||
until the system has been powered off. In case the PLL doesn't lock, the next
|
until the system has been powered off. In case the PLL doesn't lock, the next
|
||||||
smaller multiplier will be used until a working multiplier will be found.
|
smaller multiplier will be used until a working multiplier will be found.
|
||||||
|
@@ -66,23 +66,13 @@ delayed, the next release will still be 3 months after the last release.
|
|||||||
|
|
||||||
## Checklist
|
## Checklist
|
||||||
|
|
||||||
### ~6 weeks prior to release
|
### ~2 weeks prior to release
|
||||||
- [ ] Announce upcoming release to mailing list, ask people to test and
|
- [ ] Announce upcoming release to mailing list, ask people to test and
|
||||||
to update release notes.
|
to update release notes.
|
||||||
- [ ] Start marking patches that should to go into the release with a
|
- [ ] Start marking patches that should to go into the release with a
|
||||||
tag "coreboot_release_X.yy".
|
tag "coreboot_release_X.yy"
|
||||||
|
|
||||||
### ~4 weeks prior to release
|
|
||||||
- [ ] Freeze toolchain state. Only relevant fixes are allowed from this point on.
|
|
||||||
- [ ] Schedule release meetings.
|
|
||||||
|
|
||||||
### ~2 weeks prior to release
|
|
||||||
- [ ] Meet with release team.
|
|
||||||
- [ ] Send reminder email to mailing list, ask for people to test, and to update the release notes.
|
|
||||||
- [ ] Update the topic in the IRC channel with the date of the upcoming release.
|
|
||||||
|
|
||||||
### ~1 week prior to release
|
### ~1 week prior to release
|
||||||
- [ ] Meet with release team.
|
|
||||||
- [ ] Send reminder email to mailing list, ask for people to test,
|
- [ ] Send reminder email to mailing list, ask for people to test,
|
||||||
and to update the release notes.
|
and to update the release notes.
|
||||||
- [ ] Update the topic in the IRC channel with the date of the upcoming
|
- [ ] Update the topic in the IRC channel with the date of the upcoming
|
||||||
@@ -90,22 +80,21 @@ delayed, the next release will still be 3 months after the last release.
|
|||||||
- [ ] If there are any deprecations announced for the following release,
|
- [ ] If there are any deprecations announced for the following release,
|
||||||
make sure that a list of currently affected boards and chipsets is
|
make sure that a list of currently affected boards and chipsets is
|
||||||
part of the release notes.
|
part of the release notes.
|
||||||
- [ ] Finalize release notes as much as possible.
|
- [ ] Finalize release notes as much as possible
|
||||||
- [ ] Prepare release notes template for following release.
|
- [ ] Prepare release notes template for following release
|
||||||
- [ ] Update `Documentation/releases/index.md.
|
- [ ] Update `Documentation/releases/index.md`
|
||||||
- [ ] Check which branches need to be released. Any branch with changes
|
- [ ] Check which branches need to be released. Any branch with changes
|
||||||
should get a new release. Announce these branch releases and
|
should get a new release. Announce these branch releases and
|
||||||
prepare release notes.
|
prepare release notes.
|
||||||
|
|
||||||
### Day before release tag
|
### Day before release
|
||||||
- [ ] Make sure patches with tags for the release are merged.
|
- [ ] Make sure patches with tags for the release are merged.
|
||||||
- [ ] Announce to IRC that the release will be tomorrow and ask for
|
- [ ] Announce to IRC that the release will be tomorrow and ask for
|
||||||
testing.
|
testing.
|
||||||
- [ ] Run `util/vboot_list/vboot_list.sh` script to update the list of
|
- [ ] Run `util/vboot_list/vboot_list.sh` script to update the list of
|
||||||
boards supported by vboot.
|
boards supported by vboot.
|
||||||
|
|
||||||
### Day of release tag
|
### Day of release
|
||||||
- [ ] Meet with release team.
|
|
||||||
- [ ] Review the full documentation about doing the release below.
|
- [ ] Review the full documentation about doing the release below.
|
||||||
- [ ] Select a commit ID to base the release upon.
|
- [ ] Select a commit ID to base the release upon.
|
||||||
- [ ] Test the commit selected for release.
|
- [ ] Test the commit selected for release.
|
||||||
@@ -131,24 +120,11 @@ delayed, the next release will still be 3 months after the last release.
|
|||||||
can be used as release builders.
|
can be used as release builders.
|
||||||
|
|
||||||
### Week following the release
|
### Week following the release
|
||||||
- [ ] Do the final release notes - Fill in the release date, remove "Upcoming release"
|
|
||||||
and other filler from the current release notes.
|
|
||||||
- [ ] ADMIN: Upload release files & toolchain tarballs to the web server.
|
|
||||||
- [ ] ADMIN: Upload the final release notes to the web server.
|
|
||||||
- [ ] ADMIN: Upload crossgcc sources to the web server.
|
|
||||||
- [ ] Create coreboot-sdk and coreboot-jenkins-node docker images based on the release ID
|
|
||||||
and push them to dockerhub. These can be used as release builders.
|
|
||||||
- [ ] Update download page to point to files, push to repo.
|
- [ ] Update download page to point to files, push to repo.
|
||||||
|
- [ ] Write and publish blog post with release final notes. Branch
|
||||||
|
releases notes should be included in the same post.
|
||||||
- [ ] Remove code that was announced it was going to be removed.
|
- [ ] Remove code that was announced it was going to be removed.
|
||||||
- [ ] Update AUTHORS file with any new authors.
|
- [ ] Update `Documentation/releases/boards_supported_on_branches.md`
|
||||||
- [ ] Update Documentation/releases/boards_supported_on_branches.md.
|
|
||||||
|
|
||||||
### 7 days after release tag
|
|
||||||
- [ ] Meet with release team.
|
|
||||||
- [ ] Write and publish blog post with release final notes. Branch releases notes (if any)
|
|
||||||
should be included in the same post.
|
|
||||||
- [ ] Set up for next release.
|
|
||||||
|
|
||||||
|
|
||||||
### Creating a branch
|
### Creating a branch
|
||||||
- [ ] Branches are named 4.xx_branch to differentiate from the tags.
|
- [ ] Branches are named 4.xx_branch to differentiate from the tags.
|
||||||
@@ -254,7 +230,6 @@ commit db508565d2483394b709654c57533e55eebace51 (HEAD, tag: 4.6, origin/master,
|
|||||||
...
|
...
|
||||||
````
|
````
|
||||||
|
|
||||||
## Push the signed tag
|
|
||||||
When you used the script to generate the release, a signed tag was
|
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,
|
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
|
just run: `git push origin X.Y`. In case you pushed the wrong tag
|
||||||
|
@@ -12,7 +12,7 @@ optimization.
|
|||||||
The next release is scheduled for mid-May.
|
The next release is scheduled for mid-May.
|
||||||
|
|
||||||
|
|
||||||
## Release number format update
|
### Release number format update
|
||||||
|
|
||||||
The previous release was the last to use the incrementing 4.xx release
|
The previous release was the last to use the incrementing 4.xx release
|
||||||
name scheme. For this and future releases, coreboot has switched to a
|
name scheme. For this and future releases, coreboot has switched to a
|
||||||
@@ -22,7 +22,7 @@ of 00 implied. If we need to do a fix or incremental release, we'll
|
|||||||
append the values .01, .02 and so on to the initial release value.
|
append the values .01, .02 and so on to the initial release value.
|
||||||
|
|
||||||
|
|
||||||
## The master branch is being deleted
|
### The master branch is being deleted
|
||||||
|
|
||||||
The coreboot project changed from master to main roughly 6 months ago,
|
The coreboot project changed from master to main roughly 6 months ago,
|
||||||
and has been keeping the two branches in sync since then to ease the
|
and has been keeping the two branches in sync since then to ease the
|
||||||
@@ -197,7 +197,8 @@ Significant Known and Open Issues
|
|||||||
the version of verstage used in coreboot 24.02.
|
the version of verstage used in coreboot 24.02.
|
||||||
|
|
||||||
|
|
||||||
Issues from the coreboot bugtracker: https://ticket.coreboot.org/
|
## Issues from the coreboot bugtracker: https://ticket.coreboot.org/
|
||||||
|
|
||||||
|
|
||||||
### coreboot-wide or architecture-wide issues
|
### coreboot-wide or architecture-wide issues
|
||||||
|
|
||||||
|
@@ -1,76 +1,37 @@
|
|||||||
coreboot 24.05 release
|
Upcoming release - coreboot 24.05
|
||||||
========================================================================
|
========================================================================
|
||||||
|
|
||||||
The coreboot project is pleased to announce the release of coreboot version
|
The 24.05 release is scheduled for Mid May, 2024
|
||||||
24.05. This update represents three months of hard work and commitment from our
|
|
||||||
community. With over 20 new members and contributions from more than a hundred
|
|
||||||
fifty other people in coding, reviewing patches, and other areas, this release
|
|
||||||
showcases the strength of our collaborative efforts.
|
|
||||||
|
|
||||||
With this release, coreboot has expanded its support, adding 25 new platforms or
|
|
||||||
variants and 2 new processors, further demonstrating our dedication to offering
|
|
||||||
flexible and adaptable firmware solutions. From laptops and servers to embedded
|
|
||||||
devices, coreboot 24.05 is designed to enhance a variety of hardware platforms
|
|
||||||
with its strong features.
|
|
||||||
|
|
||||||
We are grateful to all the contributors who have made this release possible.
|
Update this document with changes that should be in the release notes.
|
||||||
Your expertise and collaborative efforts continue to propel the coreboot project
|
|
||||||
forward. We value the participation of everyone in the community, from long-time
|
|
||||||
developers to those new to the project, and encourage you to explore the new
|
|
||||||
opportunities that coreboot 24.05 offers.
|
|
||||||
|
|
||||||
Our next release will be 24.08, scheduled for mid-August.
|
* Please use Markdown.
|
||||||
|
* See the past few release notes for the general format.
|
||||||
|
* The chip and board additions and removals will be updated right
|
||||||
|
before the release, so those do not need to be added.
|
||||||
|
* Note that all changes before the release are done are marked upcoming.
|
||||||
|
A final version of the notes are done after the release.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Significant or interesting changes
|
Significant or interesting changes
|
||||||
----------------------------------
|
----------------------------------
|
||||||
|
|
||||||
### Mark 64-bit support as stable
|
* Add changes that need a full description here
|
||||||
|
|
||||||
A significant amount of work has gone into fully supporting 64-bit coreboot
|
* This section should have full descriptions and can or should have
|
||||||
builds. There are still additional pieces that are happening, but with SMM
|
a link to the referenced commits.
|
||||||
holding page tables itself, we can consider SMM support stable and safe enough
|
|
||||||
for general use.
|
|
||||||
|
|
||||||
|
|
||||||
### security/tpm: support compiling in multiple TPM drivers
|
|
||||||
|
|
||||||
Previously, boards could only be built with code supporting TPM 1.x or TPM 2.x
|
|
||||||
specifications. This has been updated with code allowing both to be built in
|
|
||||||
simultaneously, allowing the system to query the TPM. For systems with
|
|
||||||
soldered-down TPMs or firmware TPM solutions, it’s still possible to specify a
|
|
||||||
single TPM version so that the code for the other version isn’t included.
|
|
||||||
|
|
||||||
|
|
||||||
### arch/arm64: Add EL1/EL2/EL3 support for arm64
|
|
||||||
|
|
||||||
Previously, arch/arm64 required coreboot to run on EL3 due to EL3 register
|
|
||||||
access. This might be an issue when, for example, one boots into TF-A first and
|
|
||||||
drops into EL2 for coreboot afterwards.
|
|
||||||
|
|
||||||
This patch aims at making arch/arm64 more versatile by removing the current EL3
|
|
||||||
constraint and allowing arm64 coreboot to run on EL1, EL2 and EL3.
|
|
||||||
|
|
||||||
The strategy is to add a Kconfig option (ARM64_CURRENT_EL) which allows us to
|
|
||||||
specify coreboot's EL upon entry. Based on that, we access the appropriate ELx
|
|
||||||
registers. So, for example, when running coreboot on EL1, we would not access
|
|
||||||
vbar_el3 or vbar_el2 but instead vbar_el1. This way, we don't generate faults
|
|
||||||
when accessing higher-EL registers.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Additional coreboot changes
|
Additional coreboot changes
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
* util/smmstoretool: support processing ROMs
|
The following are changes across a number of patches, or changes worth
|
||||||
* cpu/x86: Link page tables in stage if possible
|
noting, but not needing a full description.
|
||||||
* lib/lzmadecode: Allow for 8 byte reads on 64bit to speed up decompression
|
|
||||||
* mb/lenovo/*: Set VR12 PSI to fix crash
|
* Changes that only need a line or two of description go here.
|
||||||
* Numerous fixes for clang support
|
|
||||||
* Ongoing code cleanup
|
|
||||||
* Docs: Replace Recommonmark with MyST Parser. For changes, see the commit
|
|
||||||
message in https://review.coreboot.org/73158
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -79,29 +40,11 @@ Changes to external resources
|
|||||||
|
|
||||||
### Toolchain updates
|
### Toolchain updates
|
||||||
|
|
||||||
* util/kconfig: Uprev to Linux 6.8's kconfig
|
|
||||||
* crossgcc: Upgrade CMake from 3.27.7 to version 3.28.3
|
|
||||||
* util/crossgcc: Update LLVM from 16.0.6 to 17.0.6
|
|
||||||
* crossgcc: Upgrade binutils from 2.41 to 2.42
|
|
||||||
* util/crossgcc/buildgcc: Use Intel mirror for ACPICA
|
|
||||||
|
|
||||||
|
|
||||||
### Git submodule pointers
|
### Git submodule pointers
|
||||||
|
|
||||||
- amd_blobs: Update from commit id 64cdd7c8ef to ae5fc7d277 (1 commits)
|
|
||||||
- arm-trusted-firmware: Update from commit id 17bef2248d to 48f1bc9f52 (517
|
|
||||||
commits)
|
|
||||||
- cmocka: Update from commit id 8931845c35 to 8be3737209 (32 commits)
|
|
||||||
- fsp: Update from commit id 507ef01cce to cc6399e8c7 (14 commits)
|
|
||||||
- intel-microcode: Update from commit id ece0d294a2 to 41af345005 (1 commit)
|
|
||||||
- vboot: Update from commit id 3d37d2aafe to 09fcd2184f (27 commits)
|
|
||||||
|
|
||||||
|
### External payloads
|
||||||
#### External payloads
|
|
||||||
|
|
||||||
* payloads/U-Boot: Upgrade from U-Boot v2023.07 to v2024.4
|
|
||||||
* payloads/edk2: Add Kconfig options for LAPIC timer & UFS support
|
|
||||||
* payloads/Kconfig: Add flat binary as payload option
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -109,155 +52,42 @@ Platform Updates
|
|||||||
----------------
|
----------------
|
||||||
|
|
||||||
### Added mainboards:
|
### Added mainboards:
|
||||||
|
* To be filled in immediately before the release by the release team
|
||||||
* AMD BirmanPlus for Glinda SoC
|
|
||||||
* AMD BirmanPlus for Phoenix SoC
|
|
||||||
* ASROCK Z97 Extreme6
|
|
||||||
* Dell OptiPlex 7020/9020 MT
|
|
||||||
* Dell OptiPlex 7020/9020 SFF
|
|
||||||
* Framework Azalea (Framework 13 AMD 7040)
|
|
||||||
* Google Brox EC ISH
|
|
||||||
* Google Bujia
|
|
||||||
* Google Glassway
|
|
||||||
* Google Greenbayupoc
|
|
||||||
* Google Kyogre
|
|
||||||
* Google Lotso
|
|
||||||
* Google Nova
|
|
||||||
* Google Pujjoga
|
|
||||||
* Google Riven
|
|
||||||
* Google Skitty
|
|
||||||
* Google Squirtle
|
|
||||||
* Google Sundance
|
|
||||||
* Google Tivviks
|
|
||||||
* Google Trulo
|
|
||||||
* Google Veluza
|
|
||||||
* Google Wugtrio
|
|
||||||
* Google Yavista
|
|
||||||
* HP Pro 3500 Series
|
|
||||||
* Lenovo ThinkCentre M700 / M900 Tiny
|
|
||||||
* Lenovo ThinkCentre M710s
|
|
||||||
* Raptor Computing Systems Talos II
|
|
||||||
* SiFive HiFive Unmatched
|
|
||||||
|
|
||||||
|
|
||||||
### Removed Mainboards
|
### Removed Mainboards
|
||||||
|
* To be filled in immediately before the release by the release team
|
||||||
* Intel Alderlake-M RVP
|
|
||||||
* Intel Alderlake-M RVP with Chrome EC
|
|
||||||
|
|
||||||
|
|
||||||
### Updated SoCs
|
### Updated SoCs
|
||||||
|
* To be filled in immediately before the release by the release team
|
||||||
* Added src/soc/ibm/power9
|
|
||||||
* Added src/soc/intel/xeon_sp/gnr
|
|
||||||
* Added src/soc/sifive/fu740
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Statistics from the 24.02 to the 24.05 release
|
Plans to move platform support to a branch
|
||||||
|
------------------------------------------
|
||||||
|
* To be filled in immediately before the release by the release team
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Statistics from the 4.22 to the 24.02 release
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
|
* To be filled in immediately before the release by the release team
|
||||||
|
|
||||||
* Total Commits: 739
|
|
||||||
* Average Commits per day: 8.64
|
|
||||||
* Total lines added: 304721
|
|
||||||
* Average lines added per commit: 412.34
|
|
||||||
* Number of patches adding more than 100 lines: 60
|
|
||||||
* Average lines added per small commit: 37.74
|
|
||||||
* Total lines removed: 16195
|
|
||||||
* Average lines removed per commit: 21.91
|
|
||||||
* Total difference between added and removed: 288526
|
|
||||||
* Total authors: 131
|
|
||||||
* New authors: 23
|
|
||||||
|
|
||||||
|
|
||||||
Significant Known and Open Issues
|
Significant Known and Open Issues
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
## coreboot-wide or architecture-wide issues
|
Issues from the coreboot bugtracker: https://ticket.coreboot.org/
|
||||||
|
* To be filled in immediately before the release by the release team
|
||||||
|
|
||||||
```{eval-rst}
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| # | Subject |
|
|
||||||
+=====+=================================================================+
|
|
||||||
| 522 | 'region_overlap()' issues due to an integer overflow. |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 519 | make gconfig - could not find glade file |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 518 | make xconfig - g++: fatal error: no input files |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Payload-specific issues
|
|
||||||
|
|
||||||
```{eval-rst}
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| # | Subject |
|
|
||||||
+=====+=================================================================+
|
|
||||||
| 499 | edk2 boot fails with RESOURCE_ALLOCATION_TOP_DOWN enabled |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 496 | Missing malloc check in libpayload |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 484 | No USB keyboard support with secondary payloads |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 414 | X9SAE-V: No USB keyboard init on SeaBIOS using Radeon RX 6800XT |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Platform-specific issues
|
|
||||||
|
|
||||||
```{eval-rst}
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| # | Subject |
|
|
||||||
+=====+=================================================================+
|
|
||||||
| 524 | X2APIC Options cause Linux to crash on emulation/qemu-i440fx |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 517 | lenovo x230 boot stuck with connected external monitor |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 509 | SD Card hotplug not working on Apollo Lake |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 507 | Windows GPU driver fails on Google guybrush & skyrim boards |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 506 | APL/GML don't boot OS when CPU microcode included "from tree" |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 505 | Harcuvar CRB - 15 of 16 cores present in the operating system |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 499 | T440p - EDK2 fails with RESOURCE_ALLOCATION_TOP_DOWN enabled |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 495 | Stoney Chromebooks not booting PSPSecureOS |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 478 | X200 booting Linux takes a long time with TSC |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 474 | X200s crashes after graphic init with 8GB RAM |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 457 | Haswell (t440p): CAR mem region conflicts with CBFS_SIZE > 8mb |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 453 | Intel HDMI / DP Audio not present in Windows after libgfxinit |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 449 | ThinkPad T440p fail to start, continuous beeping & LED blinking |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 448 | Thinkpad T440P ACPI Battery Value Issues |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 446 | Optiplex 9010 No Post |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 439 | Lenovo X201 Turbo Boost not working (stuck on 2,4GHz) |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 427 | x200: Two battery charging issues |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 412 | x230 reboots on suspend |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 393 | T500 restarts rather than waking up from suspend |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 350 | I225 PCIe device not detected on Harcuvar |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
coreboot Links and Contact Information
|
coreboot Links and Contact Information
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
* Main Website: https://www.coreboot.org
|
* Main Web site: https://www.coreboot.org
|
||||||
* Downloads: https://coreboot.org/downloads.html
|
* Downloads: https://coreboot.org/downloads.html
|
||||||
* Source control: https://review.coreboot.org
|
* Source control: https://review.coreboot.org
|
||||||
* Documentation: https://doc.coreboot.org
|
* Documentation: https://doc.coreboot.org
|
||||||
|
@@ -1,413 +0,0 @@
|
|||||||
Upcoming release - coreboot 24.08
|
|
||||||
========================================================================
|
|
||||||
|
|
||||||
We are pleased to announce the release of coreboot 24.08, another significant
|
|
||||||
milestone in our ongoing commitment to delivering open-source firmware
|
|
||||||
solutions. This release includes over 900 commits, contributed by more than 130
|
|
||||||
dedicated individuals from our global community. The updates in 24.08 bring
|
|
||||||
various enhancements, optimizations, and new features that further improve the
|
|
||||||
reliability and performance of coreboot across supported platforms.
|
|
||||||
|
|
||||||
We extend our sincere thanks to the patch authors, reviewers, and everyone
|
|
||||||
involved in the coreboot community for their hard work and dedication. Your
|
|
||||||
contributions continue to advance and refine coreboot with each release. As
|
|
||||||
always, thank you for your support and collaboration in driving the future of
|
|
||||||
open-source firmware. The next coreboot release, 24.11 is planned for mid
|
|
||||||
November.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Significant or interesting changes
|
|
||||||
----------------------------------
|
|
||||||
|
|
||||||
### Introduce region_create() functions
|
|
||||||
|
|
||||||
We introduce two new functions to create region objects. They allow us to check
|
|
||||||
for integer overflows (`region_create_untrusted()`) or assert their absence
|
|
||||||
(`region_create()`).
|
|
||||||
|
|
||||||
This fixes potential overflows in `region_overlap()` checks in SMI handlers, where
|
|
||||||
we would wrongfully report MMIO as *not* overlapping SMRAM.
|
|
||||||
|
|
||||||
Also, two cases of `strtol()` in `parse_region()` (cbfstool), where the results were
|
|
||||||
implicitly converted to `size_t`, are replaced with the unsigned `strtoul()`.
|
|
||||||
|
|
||||||
FIT payload support is left out, as it doesn't use the region API (only the
|
|
||||||
struct).
|
|
||||||
|
|
||||||
Ticket: <https://ticket.coreboot.org/issues/522> \
|
|
||||||
Review: <https://review.coreboot.org/79905>
|
|
||||||
|
|
||||||
|
|
||||||
### lib/device_tree: Add some FDT helper functions
|
|
||||||
|
|
||||||
This adds some helper functions for FDT (Flattened Device Tree) , since more and
|
|
||||||
more mainboards seem to need FDT nowadays. For example our QEMU boards need it
|
|
||||||
in order to know how much RAM is available. Also all RISC-V boards in our tree
|
|
||||||
need FDT.
|
|
||||||
|
|
||||||
This also adds some tests in order to test said functions.
|
|
||||||
|
|
||||||
Review: <https://review.coreboot.org/c/coreboot/+/81081>
|
|
||||||
|
|
||||||
|
|
||||||
### device_tree: Add function to get top of memory from a FDT blob
|
|
||||||
|
|
||||||
coreboot needs to figure out top of memory to place CBMEM data. On some non-x86
|
|
||||||
QEMU virtual machines, this is achieved by probing the RAM space to find where
|
|
||||||
the VM starts discarding data since it's not backed by actual RAM. This behavior
|
|
||||||
seems to have changed on the QEMU side since then, VMs using the "virt" model
|
|
||||||
have started raising exceptions/errors instead of silently discarding data
|
|
||||||
(likely [1] for example) which has previously broken coreboot on these emulation
|
|
||||||
boards.
|
|
||||||
|
|
||||||
The qemu-aarch64 and qemu-riscv mainboards are intended for the "virt" models
|
|
||||||
and had this issue, which was mostly fixed by using exception handlers in the
|
|
||||||
RAM detection process [2][3]. But on 32-bit RISC-V we fail to initialize CBMEM
|
|
||||||
if we have 2048 MiB or more of RAM, and on 64-bit RISC-V we had to limit probing
|
|
||||||
to 16383 MiB because it can run into MMIO regions otherwise.
|
|
||||||
|
|
||||||
The qemu-armv7 mainboard code is intended for the "vexpress-a9" model VM which
|
|
||||||
doesn't appear to suffer from this issue. Still, the issue can be observed on
|
|
||||||
the ARMv7 "virt" model via a port based on qemu-aarch64.
|
|
||||||
|
|
||||||
QEMU docs for ARM and RISC-V "virt" models [4][5] recommend reading the device
|
|
||||||
tree blob it provides for device information (incl. RAM size). Implement
|
|
||||||
functions that parse the device tree blob to find described memory regions and
|
|
||||||
calculate the top of memory in order to use it in mainboard code as an
|
|
||||||
alternative to probing RAM space. ARM64 code initializes CBMEM in romstage where
|
|
||||||
malloc isn't available, so take care to do parsing without unflattening the blob
|
|
||||||
and make the code available in romstage as well.
|
|
||||||
|
|
||||||
[1] <https://lore.kernel.org/qemu-devel/1504626814-23124-1-git-send-email-peter.maydell@linaro.org/T/#u> \
|
|
||||||
[2] <https://review.coreboot.org/c/coreboot/+/34774> \
|
|
||||||
[3] <https://review.coreboot.org/c/coreboot/+/36486> \
|
|
||||||
[4] <https://qemu-project.gitlab.io/qemu/system/arm/virt.html> \
|
|
||||||
[5] <https://qemu-project.gitlab.io/qemu/system/riscv/virt.html>
|
|
||||||
|
|
||||||
Review: <https://review.coreboot.org/c/coreboot/+/80322>
|
|
||||||
|
|
||||||
|
|
||||||
### drivers/wifi: Support Bluetooth Regulator Domain Settings
|
|
||||||
|
|
||||||
The 'Bluetooth Increased Power Mode - SAR Limitation' feature provides ability
|
|
||||||
to utilize increased device Transmit power capability for Bluetooth applications
|
|
||||||
in coordination with Wi-Fi adhering to product SAR (Specific Absorption Rate)
|
|
||||||
limit when Bluetooth and Wi-Fi run together.
|
|
||||||
|
|
||||||
This commit introduces a `bluetooth_companion' field to the generic Wi-Fi
|
|
||||||
drivers chip data. This field can be set in the board design device tree to
|
|
||||||
supply the bluetooth device for which the BRDS function must be created.
|
|
||||||
|
|
||||||
The implementation follows document 559910 Intel Connectivity Platforms BIOS
|
|
||||||
Guideline revision 8.3 specification.
|
|
||||||
|
|
||||||
Review: <https://review.coreboot.org/c/coreboot/+/83200>
|
|
||||||
|
|
||||||
|
|
||||||
### acpigen_ps2_keybd: Support Do Not Disturb & Accessibility Keys
|
|
||||||
|
|
||||||
These commits add support for a Do Not Disturb key and an Accessibility key.
|
|
||||||
|
|
||||||
HUTRR94 added support for a new usage titled "System Do Not Disturb" which
|
|
||||||
toggles a system-wide Do Not Disturb setting.
|
|
||||||
|
|
||||||
HUTRR116 added support for a new usage titled "System Accessibility Binding"
|
|
||||||
which toggles a system-wide bound accessibility UI or command.
|
|
||||||
|
|
||||||
HUTRR94: <https://www.usb.org/sites/default/files/hutrr94_-_system_do_not_disturb.pdf> \
|
|
||||||
HUTRR116: <https://www.usb.org/sites/default/files/hutrr116-systemaccessbilitybinding_2.pdf>
|
|
||||||
|
|
||||||
Review: <https://review.coreboot.org/c/coreboot/+/82997> \
|
|
||||||
Review: <https://review.coreboot.org/c/coreboot/+/82996>
|
|
||||||
|
|
||||||
|
|
||||||
### superio/ite/common: Add common driver for GPIO and LED configuration
|
|
||||||
|
|
||||||
Add a generic driver to configure GPIOs and LEDs on common ITE SuperIOs. The
|
|
||||||
driver supports most ITE SuperIOs, except Embedded Controllers. The driver
|
|
||||||
allows configuring every GPIO property with pin granularity.
|
|
||||||
|
|
||||||
Verified against datasheets of all ITE SIOs currently supported by coreboot,
|
|
||||||
except IT8721F (assumed to be the same as IT8720F), IT8623E and IT8629E.
|
|
||||||
|
|
||||||
Review: <https://review.coreboot.org/c/coreboot/+/83355>
|
|
||||||
|
|
||||||
|
|
||||||
### util/cbfstool: Fix linux_trampoline.c generation
|
|
||||||
|
|
||||||
linux_trampoline.c generation is broken with latest crossgcc-i386 toolchain. Fix
|
|
||||||
the issue to enable the building.
|
|
||||||
|
|
||||||
```
|
|
||||||
../cbfstool/linux_trampoline.S: Assembler messages:
|
|
||||||
../cbfstool/linux_trampoline.S:100: Error: no instruction mnemonic
|
|
||||||
suffix given and no register operands; can't size instruction
|
|
||||||
<builtin>: recipe for target '../cbfstool/linux_trampoline.o' failed
|
|
||||||
```
|
|
||||||
|
|
||||||
Review: <https://review.coreboot.org/c/coreboot/+/82704>
|
|
||||||
|
|
||||||
|
|
||||||
### Add LeanEFI payload
|
|
||||||
|
|
||||||
This adds another external payload to coreboot. The payload has been heavily
|
|
||||||
based on u-boots UEFI implementation.
|
|
||||||
|
|
||||||
The LeanEFI payload is basically a translator from coreboot to UEFI. It takes
|
|
||||||
the coreboot tables and transforms them into UEFI interfaces. Although it can
|
|
||||||
potentially load any efi application that can handle the minimized interface
|
|
||||||
that LeanEFI provides, it has only been tested with LinuxBoot (v6.3.5) as a
|
|
||||||
payload. It has been optimized to support only those interfaces that Linux
|
|
||||||
requires to start.
|
|
||||||
|
|
||||||
Among other LeanEFI does not support:
|
|
||||||
- efi capsule update (also efi system resource table)
|
|
||||||
- efi variables
|
|
||||||
- efi text input protocol (it can only output)
|
|
||||||
- most boot services. mostly memory services are left (e.g. alloc/free)
|
|
||||||
- all runtime services (although there is still a very small runtime
|
|
||||||
footprint that is planned to be removed in the near future)
|
|
||||||
- TCG2/TPM (although that is mostly because of laziness)
|
|
||||||
The README.md currently provides more details on why.
|
|
||||||
|
|
||||||
The payload currently only supports arm64 and has only been tested on
|
|
||||||
emulation/simulator targets. The original motivation was to get ACPI on arm64
|
|
||||||
published to the OS without using EDK2. It is however also possible to supply
|
|
||||||
the LeanEFI with a FDT that is published to the OS. At that point one would
|
|
||||||
however probably use coreboot only instead of this shim layer on top. It would
|
|
||||||
be way nicer to have Linux support something other than UEFI to propagate the
|
|
||||||
ACPI tables, but it requires getting the Linux maintainer/community on board. So
|
|
||||||
for now this shim layer circumvents that.
|
|
||||||
|
|
||||||
LBBR Test:
|
|
||||||
1. dump FDT from QEMU like mentioned in aarch64 coreboot doc
|
|
||||||
2. compile u-root however you like (aarch64)
|
|
||||||
3. compile Linux (embed u-root initramfs via Kconfig)
|
|
||||||
4. copy Linux kernel to payloads/leanefi/Image
|
|
||||||
5. copy following coreboot defconfig to configs/defconfig:
|
|
||||||
```
|
|
||||||
CONFIG_BOARD_EMULATION_QEMU_AARCH64=y
|
|
||||||
CONFIG_PAYLOAD_NONE=n
|
|
||||||
CONFIG_PAYLOAD_LEANEFI=y
|
|
||||||
CONFIG_LEANEFI_PAYLOAD=y
|
|
||||||
CONFIG_LEANEFI_PAYLOAD_PATH="[path-to-linux]/arch/arm64/boot/Image"
|
|
||||||
CONFIG_LEANEFI_FDT=y
|
|
||||||
CONFIG_LEANEFI_FDT_PATH="[path-to-dumped-DTB]"
|
|
||||||
```
|
|
||||||
6. compile coreboot \
|
|
||||||
`make defconfig` \
|
|
||||||
`make -j$(nproc)`
|
|
||||||
7. run qemu like mentioned in coreboot doc (no FIT)
|
|
||||||
8. say hello to u-root and optionally kexec into the next kernel
|
|
||||||
|
|
||||||
Review: <https://review.coreboot.org/c/coreboot/+/78913>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Additional coreboot changes
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
* Dropped ChromeEC as a submodule.
|
|
||||||
* Numerous updates to autoport tool, including Haswell support.
|
|
||||||
* Upgrade to Wuffs 0.4.0-alpha.8
|
|
||||||
* Add x86_64 (64-bit) support to LibPayload
|
|
||||||
* Add hda-decoder utility that dumps decoded HDA default configuration registers
|
|
||||||
* Add SBMIOS tables for arm64 platforms
|
|
||||||
* cpu/x86/lapic: Always have LAPIC enabled
|
|
||||||
* arch/arm64: Support calling a trusted monitor
|
|
||||||
* drivers/wifi: Support Wi-Fi 7 11be Enablement
|
|
||||||
* drivers/wifi: Support Radio Frequency Interference Mitigation
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Changes to external resources
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
### Toolchain updates
|
|
||||||
|
|
||||||
* Upgrade CMake from 3.28.3 to 3.29.3
|
|
||||||
* Upgrade nasm from 2.16.01 to 2.16.03
|
|
||||||
* Upgrade LLVM from 17.0.6 to 18.1.6
|
|
||||||
* Upgrade GCC from 13.2 to 14.1.0
|
|
||||||
|
|
||||||
|
|
||||||
### Git submodule pointers
|
|
||||||
|
|
||||||
* /3rdparty/amd_blobs: Update from commit ae5fc7d277 to 26c572974b (2 commits)
|
|
||||||
* /3rdparty/arm-trusted-firmware: Update from commit 48f1bc9f52 to c5b8de86c8 (430 commits)
|
|
||||||
* /3rdparty/fsp: Update from commit cc6399e8c7 to 800c85770b (23 commits)
|
|
||||||
* /3rdparty/intel-microcode: Update from commit 41af345005 to 5278dfcf98 (2 commits)
|
|
||||||
* /3rdparty/libgfxinit: Update from commit a4be8a21b0 to 17cfc92f40 (5 commits)
|
|
||||||
* /3rdparty/vboot: Update from commit 09fcd2184f to f1f70f46dc (69 commits)
|
|
||||||
|
|
||||||
|
|
||||||
Platform Updates
|
|
||||||
----------------
|
|
||||||
|
|
||||||
### New mainboards:
|
|
||||||
|
|
||||||
* Acer Q45T-AM
|
|
||||||
* AOOSTAR WTR R1
|
|
||||||
* ASROCK Fatal1ty Z87 Professional
|
|
||||||
* ASROCK Z87E-ITX
|
|
||||||
* ASROCK Z87M OC Formula
|
|
||||||
* ASROCK Z97E-ITX/ac
|
|
||||||
* CWWK CW-ADL-4L-V1.0
|
|
||||||
* Dell Inc. Latitude E6430
|
|
||||||
* Dell Inc. Latitude E7240
|
|
||||||
* Dell Inc. XPS 8300
|
|
||||||
* Emulation QEMU sbsa
|
|
||||||
* GIGABYTE GA-H61M-S2P-R3
|
|
||||||
* Google Awasuki
|
|
||||||
* Google Brox TI PDC
|
|
||||||
* Google Domika
|
|
||||||
* Google Fatcat
|
|
||||||
* Google Jubilant
|
|
||||||
* Google Orisa
|
|
||||||
* Google Rauru
|
|
||||||
* Google Rex 64
|
|
||||||
* Google Teliks
|
|
||||||
* Google Tereid
|
|
||||||
* HP EliteBook 8560w
|
|
||||||
* Intel Avenue City CRB
|
|
||||||
* Intel Beechnut City CRB
|
|
||||||
* Protectli VP6630/VP6650/VP6670
|
|
||||||
* Star Labs Star Labs Lite Mk V (N200)
|
|
||||||
* System76 addw4
|
|
||||||
* System76 darp10
|
|
||||||
* System76 darp10-b
|
|
||||||
* System76 oryp12
|
|
||||||
|
|
||||||
|
|
||||||
### Updated SoCs & socket definitions
|
|
||||||
|
|
||||||
* Added src/cpu/intel/socket_LGA1700
|
|
||||||
* Added src/cpu/intel/socket_LGA3647_1
|
|
||||||
* Added src/cpu/intel/socket_LGA4189
|
|
||||||
* Added src/cpu/intel/socket_LGA4677
|
|
||||||
* Added src/soc/intel/pantherlake
|
|
||||||
* Added src/soc/mediatek/mt8196
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Statistics from the 24.05 to the 24.08 release
|
|
||||||
----------------------------------------------
|
|
||||||
|
|
||||||
* Total Commits: 883
|
|
||||||
* Average Commits per day: 8.78
|
|
||||||
* Total lines added: 105457
|
|
||||||
* Average lines added per commit: 119.43
|
|
||||||
* Number of patches adding more than 100 lines: 98
|
|
||||||
* Average lines added per small commit: 37.67
|
|
||||||
* Total lines removed: 18689
|
|
||||||
* Average lines removed per commit: 21.17
|
|
||||||
* Total difference between added and removed: 86768
|
|
||||||
* Total authors: 136
|
|
||||||
* New authors: 33
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Significant Known and Open Issues
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
### coreboot-wide or architecture-wide issues
|
|
||||||
|
|
||||||
```{eval-rst}
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| # | Subject |
|
|
||||||
+=====+=================================================================+
|
|
||||||
| 519 | make gconfig - could not find glade file |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 518 | make xconfig - g++: fatal error: no input files |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
### Payload-specific issues
|
|
||||||
|
|
||||||
```{eval-rst}
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| # | Subject |
|
|
||||||
+=====+=================================================================+
|
|
||||||
| 552 | X201 not booting with edk2 payload |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 549 | SeaBIOS Windows 10/11 BSOD "ACPI BIOS ERROR" (Thinkpad W530) |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 499 | edk2 boot fails with RESOURCE_ALLOCATION_TOP_DOWN enabled |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 496 | Missing malloc check in libpayload |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 484 | No USB keyboard support with secondary payloads |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 414 | X9SAE-V: No USB keyboard init on SeaBIOS using Radeon RX 6800XT |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
### Platform-specific issues
|
|
||||||
|
|
||||||
```{eval-rst}
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| # | Subject |
|
|
||||||
+=====+=================================================================+
|
|
||||||
| 548 | Lenovo X201 Fails To Recognize Upgraded WiFi Card |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 538 | x230: Dock Causes Internal Display to "Permanently" Malfunction |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 535 | T420: Power light stays off after reboot |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 528 | Building qemu-i440fx with CONFIG_CBFS_VERIFICATION fails |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 524 | X2APIC Options cause Linux to crash on emulation/qemu-i440fx |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 517 | lenovo x230 boot stuck with connected external monitor |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 509 | SD Card hotplug not working on Apollo Lake |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 507 | Windows GPU driver fails on Google guybrush & skyrim boards |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 506 | APL/GML don't boot OS when CPU microcode included "from tree" |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 505 | Harcuvar CRB - 15 of 16 cores present in the operating system |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 499 | T440p - EDK2 fails with RESOURCE_ALLOCATION_TOP_DOWN enabled |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 495 | Stoney Chromebooks not booting PSPSecureOS |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 478 | X200 booting Linux takes a long time with TSC |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 474 | X200s crashes after graphic init with 8GB RAM |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 457 | Haswell (t440p): CAR mem region conflicts with CBFS_SIZE > 8mb |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 453 | Intel HDMI / DP Audio not present in Windows after libgfxinit |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 449 | ThinkPad T440p fail to start, continuous beeping & LED blinking |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 448 | Thinkpad T440P ACPI Battery Value Issues |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 446 | Optiplex 9010 No Post |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 439 | Lenovo X201 Turbo Boost not working (stuck on 2,4GHz) |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 427 | x200: Two battery charging issues |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 412 | x230 reboots on suspend |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 393 | T500 restarts rather than waking up from suspend |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
| 350 | I225 PCIe device not detected on Harcuvar |
|
|
||||||
+-----+-----------------------------------------------------------------+
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
coreboot Links and Contact Information
|
|
||||||
--------------------------------------
|
|
||||||
|
|
||||||
* Main Web site: <https://www.coreboot.org>
|
|
||||||
* Downloads: <https://coreboot.org/downloads.html>
|
|
||||||
* Source control: <https://review.coreboot.org>
|
|
||||||
* Documentation: <https://doc.coreboot.org>
|
|
||||||
* Issue tracker: <https://ticket.coreboot.org/projects/coreboot>
|
|
||||||
* Donations: <https://coreboot.org/donate.html>
|
|
@@ -1,95 +0,0 @@
|
|||||||
Upcoming release - coreboot 24.11
|
|
||||||
========================================================================
|
|
||||||
|
|
||||||
The 24.11 release is scheduled for Mid November, 2024
|
|
||||||
|
|
||||||
|
|
||||||
Update this document with changes that should be in the release notes.
|
|
||||||
|
|
||||||
* Please use Markdown.
|
|
||||||
* See the past few release notes for the general format.
|
|
||||||
* The chip and board additions and removals will be updated right
|
|
||||||
before the release, so those do not need to be added.
|
|
||||||
* Note that all changes before the release are done are marked upcoming.
|
|
||||||
A final version of the notes are done after the release.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Significant or interesting changes
|
|
||||||
----------------------------------
|
|
||||||
|
|
||||||
* Add changes that need a full description here
|
|
||||||
|
|
||||||
* This section should have full descriptions and can or should have
|
|
||||||
a link to the referenced commits.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Additional coreboot changes
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
The following are changes across a number of patches, or changes worth
|
|
||||||
noting, but not needing a full description.
|
|
||||||
|
|
||||||
* Changes that only need a line or two of description go here.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Changes to external resources
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
### Toolchain updates
|
|
||||||
|
|
||||||
|
|
||||||
### Git submodule pointers
|
|
||||||
|
|
||||||
|
|
||||||
### External payloads
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Platform Updates
|
|
||||||
----------------
|
|
||||||
|
|
||||||
### Added mainboards:
|
|
||||||
* To be filled in immediately before the release by the release team
|
|
||||||
|
|
||||||
|
|
||||||
### Removed Mainboards
|
|
||||||
* To be filled in immediately before the release by the release team
|
|
||||||
|
|
||||||
|
|
||||||
### Updated SoCs
|
|
||||||
* To be filled in immediately before the release by the release team
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Plans to move platform support to a branch
|
|
||||||
------------------------------------------
|
|
||||||
* To be filled in immediately before the release by the release team
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Statistics from the 24.08 to the 24.11 release
|
|
||||||
--------------------------------------------
|
|
||||||
* To be filled in immediately before the release by the release team
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Significant Known and Open Issues
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
Issues from the coreboot bugtracker: https://ticket.coreboot.org/
|
|
||||||
* To be filled in immediately before the release by the release team
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
coreboot Links and Contact Information
|
|
||||||
--------------------------------------
|
|
||||||
|
|
||||||
* Main Web site: https://www.coreboot.org
|
|
||||||
* Downloads: https://coreboot.org/downloads.html
|
|
||||||
* Source control: https://review.coreboot.org
|
|
||||||
* Documentation: https://doc.coreboot.org
|
|
||||||
* Issue tracker: https://ticket.coreboot.org/projects/coreboot
|
|
||||||
* Donations: https://coreboot.org/donate.html
|
|
@@ -214,7 +214,7 @@ Deprecations
|
|||||||
|
|
||||||
In order to minimize the usage of PCI bus mastering, the options we introduced in
|
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
|
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).
|
see [Preparations to minimize enabling PCI bus mastering](#preparations-to-minimize-enabling-pci-bus-mastering-in-coreboot).
|
||||||
|
|
||||||
### Resource allocator v3
|
### Resource allocator v3
|
||||||
|
|
||||||
|
@@ -13,7 +13,7 @@ about the coreboot project. There have been a number of new companies
|
|||||||
starting to use coreboot recently, and we appreciate all of the
|
starting to use coreboot recently, and we appreciate all of the
|
||||||
contributions and support.
|
contributions and support.
|
||||||
|
|
||||||
## Upcoming switch from master branch to main branch
|
### Upcoming switch from master branch to main branch
|
||||||
|
|
||||||
Historically, the initial branch that was created in a new git
|
Historically, the initial branch that was created in a new git
|
||||||
repository was named ‘master’. In line with many other projects,
|
repository was named ‘master’. In line with many other projects,
|
||||||
|
@@ -11,7 +11,7 @@ releases, this one reflects a commitment to open source innovation,
|
|||||||
security enhancements, and expanding hardware support.
|
security enhancements, and expanding hardware support.
|
||||||
|
|
||||||
|
|
||||||
## 4.22.01 release
|
### 4.22.01 release
|
||||||
|
|
||||||
The week between tagging a release and announcing it publicly is used
|
The week between tagging a release and announcing it publicly is used
|
||||||
to test the tagged version and make sure everything is working as we
|
to test the tagged version and make sure everything is working as we
|
||||||
@@ -22,7 +22,7 @@ For the 4.22 release cycle we found an uninitialized variable error on
|
|||||||
the sandybridge/ivybridge platforms and rolled that into the 4.22.01
|
the sandybridge/ivybridge platforms and rolled that into the 4.22.01
|
||||||
release package.
|
release package.
|
||||||
|
|
||||||
## coreboot version naming update
|
### coreboot version naming update
|
||||||
|
|
||||||
This release is the last release to use the incrementing 4.xx release
|
This release is the last release to use the incrementing 4.xx release
|
||||||
name scheme. For future releases, coreboot is switching to a
|
name scheme. For future releases, coreboot is switching to a
|
||||||
@@ -33,7 +33,7 @@ the 24.02 release, we'll append the values .01, .02 and so on to the
|
|||||||
initial release value.
|
initial release value.
|
||||||
|
|
||||||
|
|
||||||
## coreboot default branch update
|
### coreboot default branch update
|
||||||
|
|
||||||
Immediately after the 4.21 release, the coreboot project changed the
|
Immediately after the 4.21 release, the coreboot project changed the
|
||||||
default git branch from 'master' to 'main'. For the first couple of
|
default git branch from 'master' to 'main'. For the first couple of
|
||||||
|
@@ -6,7 +6,7 @@ Please add to the release notes as changes are added:
|
|||||||
```{toctree}
|
```{toctree}
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
24.11 - November 2024 <coreboot-24.11-relnotes.md>
|
24.05 - May 2024 <coreboot-24.05-relnotes.md>
|
||||||
```
|
```
|
||||||
|
|
||||||
The [checklist] contains instructions to ensure that a release covers all
|
The [checklist] contains instructions to ensure that a release covers all
|
||||||
@@ -22,8 +22,6 @@ important is taken care of.
|
|||||||
```{toctree}
|
```{toctree}
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
24.08 - August 2024 <coreboot-24.08-relnotes.md>
|
|
||||||
24.05 - May 2024 <coreboot-24.05-relnotes.md>
|
|
||||||
24.02 - February 2024 <coreboot-24.02-relnotes.md>
|
24.02 - February 2024 <coreboot-24.02-relnotes.md>
|
||||||
4.22 - November 2023 <coreboot-4.22-relnotes.md>
|
4.22 - November 2023 <coreboot-4.22-relnotes.md>
|
||||||
4.21 - August 2023 <coreboot-4.21-relnotes.md>
|
4.21 - August 2023 <coreboot-4.21-relnotes.md>
|
||||||
|
@@ -4,8 +4,6 @@
|
|||||||
- Birman for Phoenix SoC using FSP
|
- Birman for Phoenix SoC using FSP
|
||||||
- Birman for Phoenix SoC using openSIL
|
- Birman for Phoenix SoC using openSIL
|
||||||
- Birman for Glinda SoC
|
- Birman for Glinda SoC
|
||||||
- BirmanPlus for Phoenix SoC
|
|
||||||
- BirmanPlus for Glinda SoC
|
|
||||||
- Chausie
|
- Chausie
|
||||||
- Majolica
|
- Majolica
|
||||||
- Mayan for Phoenix SoC
|
- Mayan for Phoenix SoC
|
||||||
@@ -37,11 +35,6 @@
|
|||||||
- Tricky (Dell Chromebox 3010)
|
- Tricky (Dell Chromebox 3010)
|
||||||
- Zako (HP Chromebox G1)
|
- Zako (HP Chromebox G1)
|
||||||
- Brox
|
- Brox
|
||||||
- Brox EC ISH
|
|
||||||
- Brox TI PDC
|
|
||||||
- Greenbayupoc
|
|
||||||
- Jubilant
|
|
||||||
- Lotso
|
|
||||||
- Agah
|
- Agah
|
||||||
- Anahera
|
- Anahera
|
||||||
- Anahera4ES
|
- Anahera4ES
|
||||||
@@ -55,13 +48,11 @@
|
|||||||
- Constitution
|
- Constitution
|
||||||
- Crota
|
- Crota
|
||||||
- Dochi
|
- Dochi
|
||||||
- Domika
|
|
||||||
- Felwinter
|
- Felwinter
|
||||||
- Gaelin
|
- Gaelin
|
||||||
- Gimble
|
- Gimble
|
||||||
- Gimble4ES
|
- Gimble4ES
|
||||||
- Gladios
|
- Gladios
|
||||||
- Glassway
|
|
||||||
- Gothrax
|
- Gothrax
|
||||||
- Hades
|
- Hades
|
||||||
- Kano
|
- Kano
|
||||||
@@ -83,16 +74,11 @@
|
|||||||
- Quandiso
|
- Quandiso
|
||||||
- Redrix
|
- Redrix
|
||||||
- Redrix4ES
|
- Redrix4ES
|
||||||
- Riven
|
|
||||||
- Skolas
|
- Skolas
|
||||||
- Skolas4ES
|
- Skolas4ES
|
||||||
- Taeko
|
- Taeko
|
||||||
- Taeko4ES
|
- Taeko4ES
|
||||||
- Taniks
|
- Taniks
|
||||||
- Teliks
|
|
||||||
- Tereid
|
|
||||||
- Tivviks
|
|
||||||
- Trulo
|
|
||||||
- Uldren
|
- Uldren
|
||||||
- Vell
|
- Vell
|
||||||
- Volmar
|
- Volmar
|
||||||
@@ -101,30 +87,19 @@
|
|||||||
- Yavilla
|
- Yavilla
|
||||||
- Zydron
|
- Zydron
|
||||||
- Xol
|
- Xol
|
||||||
- Nova
|
|
||||||
- Bujia
|
|
||||||
- Yavista
|
|
||||||
- Sundance
|
|
||||||
- Pujjoga
|
|
||||||
- Orisa
|
|
||||||
- Butterfly (HP Pavilion Chromebook 14)
|
- Butterfly (HP Pavilion Chromebook 14)
|
||||||
- Cherry
|
- Cherry
|
||||||
- Dojo
|
- Dojo
|
||||||
- Tomato
|
- Tomato
|
||||||
- Kingler
|
- Kingler
|
||||||
- Kyogre
|
|
||||||
- Ponyta
|
|
||||||
- Squirtle
|
|
||||||
- Steelix
|
- Steelix
|
||||||
- Voltorb
|
- Voltorb
|
||||||
- Chinchou
|
- Ponyta
|
||||||
- Krabby
|
- Krabby
|
||||||
- Magikarp
|
|
||||||
- Skitty
|
|
||||||
- Tentacruel
|
- Tentacruel
|
||||||
- Veluza
|
- Magikarp
|
||||||
|
- Chinchou
|
||||||
- Starmie
|
- Starmie
|
||||||
- Wugtrio
|
|
||||||
- Banon (Acer Chromebook 15 (CB3-532))
|
- Banon (Acer Chromebook 15 (CB3-532))
|
||||||
- Celes (Samsung Chromebook 3)
|
- Celes (Samsung Chromebook 3)
|
||||||
- Cyan (Acer Chromebook R11 (C738T))
|
- Cyan (Acer Chromebook R11 (C738T))
|
||||||
@@ -138,7 +113,6 @@
|
|||||||
- Wizpig
|
- Wizpig
|
||||||
- Drallion
|
- Drallion
|
||||||
- Eve (Google Pixelbook)
|
- Eve (Google Pixelbook)
|
||||||
- Fatcat
|
|
||||||
- Fizz
|
- Fizz
|
||||||
- Karma
|
- Karma
|
||||||
- Endeavour
|
- Endeavour
|
||||||
@@ -242,7 +216,6 @@
|
|||||||
- Puff
|
- Puff
|
||||||
- Scout
|
- Scout
|
||||||
- Wyvern (CTL Chromebox CBx2)
|
- Wyvern (CTL Chromebox CBx2)
|
||||||
- Rauru
|
|
||||||
- Reef/Electro (Acer Chromebook Spin 11 R751T)
|
- Reef/Electro (Acer Chromebook Spin 11 R751T)
|
||||||
- Pyro (Lenovo Thinkpad (Yoga) 11e Chromebook)
|
- Pyro (Lenovo Thinkpad (Yoga) 11e Chromebook)
|
||||||
- Sand (Acer Chromebook 15 CB515-1HT/1H)
|
- Sand (Acer Chromebook 15 CB515-1HT/1H)
|
||||||
@@ -258,7 +231,6 @@
|
|||||||
- Rex EC ISH
|
- Rex EC ISH
|
||||||
- Rex4ES
|
- Rex4ES
|
||||||
- Rex4ES EC ISH
|
- Rex4ES EC ISH
|
||||||
- Rex 64
|
|
||||||
- Screebo
|
- Screebo
|
||||||
- Screebo4ES
|
- Screebo4ES
|
||||||
- Arcada (Latitude 5300 2-in-1 Chromebook Enterprise)
|
- Arcada (Latitude 5300 2-in-1 Chromebook Enterprise)
|
||||||
@@ -326,7 +298,6 @@
|
|||||||
- Woomax (ASUS Chromebook Flip CM5)
|
- Woomax (ASUS Chromebook Flip CM5)
|
||||||
|
|
||||||
## HP
|
## HP
|
||||||
- Compaq Elite 8300 USDT
|
|
||||||
- Z220 CMT Workstation
|
- Z220 CMT Workstation
|
||||||
- Z220 SFF Workstation
|
- Z220 SFF Workstation
|
||||||
|
|
||||||
@@ -334,6 +305,8 @@
|
|||||||
- Alderlake-P RVP
|
- Alderlake-P RVP
|
||||||
- Alderlake-P RVP with Chrome EC
|
- Alderlake-P RVP with Chrome EC
|
||||||
- Alderlake-P RVP with Microchip EC
|
- Alderlake-P RVP with Microchip EC
|
||||||
|
- Alderlake-M RVP
|
||||||
|
- Alderlake-M RVP with Chrome EC
|
||||||
- Alderlake-N RVP
|
- Alderlake-N RVP
|
||||||
- Alderlake-N RVP with Chrome EC
|
- Alderlake-N RVP with Chrome EC
|
||||||
- Raptorlake silicon with Alderlake-P RVP
|
- Raptorlake silicon with Alderlake-P RVP
|
||||||
@@ -392,7 +365,6 @@
|
|||||||
- ThinkPad X230
|
- ThinkPad X230
|
||||||
- ThinkPad X230t
|
- ThinkPad X230t
|
||||||
- ThinkPad X230s
|
- ThinkPad X230s
|
||||||
- ThinkPad X230 eDP Mod (2K/FHD)
|
|
||||||
- ThinkPad X60 / X60s / X60t
|
- ThinkPad X60 / X60s / X60t
|
||||||
|
|
||||||
## MSI
|
## MSI
|
||||||
@@ -405,8 +377,8 @@
|
|||||||
- Elgon (GBCv2)
|
- Elgon (GBCv2)
|
||||||
|
|
||||||
## Protectli
|
## Protectli
|
||||||
- VP6630/VP6650/VP6670
|
- VP4630/VP4650
|
||||||
- VP4630/VP4650/VP4670
|
- VP4670
|
||||||
- VP2420
|
- VP2420
|
||||||
|
|
||||||
## SAMSUNG
|
## SAMSUNG
|
||||||
@@ -430,7 +402,6 @@
|
|||||||
- Star Labs StarBook Mk V (i3-1115G4 and i7-1165G7)
|
- Star Labs StarBook Mk V (i3-1115G4 and i7-1165G7)
|
||||||
- Star Labs StarBook Mk VI (i3-1220P and i7-1260P)
|
- Star Labs StarBook Mk VI (i3-1220P and i7-1260P)
|
||||||
- Star Labs StarBook Mk VI (i3-1315U and i7-1360P)
|
- Star Labs StarBook Mk VI (i3-1315U and i7-1360P)
|
||||||
- Star Labs Lite Mk V (N200)
|
|
||||||
|
|
||||||
## Supermicro
|
## Supermicro
|
||||||
- X11SSH-TF
|
- X11SSH-TF
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
# CSE FW update mechanism for devices in field
|
CSE FW update mechanism for devices in field
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
|
@@ -78,7 +78,7 @@ Looks like a WDT.
|
|||||||
### LDN8
|
### LDN8
|
||||||
|
|
||||||
Custom HWM space. It exposes 256 byte of IO config space.
|
Custom HWM space. It exposes 256 byte of IO config space.
|
||||||
See [HWM](#hwm) for more details.
|
See [HWM](#HWM) for more details.
|
||||||
|
|
||||||
## HWM
|
## HWM
|
||||||
|
|
||||||
|
@@ -30,7 +30,7 @@ Download, configure, and build coreboot
|
|||||||
|
|
||||||
Debian based distros:
|
Debian based distros:
|
||||||
`sudo apt-get install -y bison build-essential curl flex git gnat
|
`sudo apt-get install -y bison build-essential curl flex git gnat
|
||||||
libncurses-dev libssl-dev zlib1g-dev pkgconf`
|
libncurses5-dev libssl-dev m4 zlib1g-dev pkg-config`
|
||||||
|
|
||||||
Arch based distros:
|
Arch based distros:
|
||||||
`sudo pacman -S base-devel curl git gcc-ada ncurses zlib`
|
`sudo pacman -S base-devel curl git gcc-ada ncurses zlib`
|
||||||
@@ -86,7 +86,7 @@ make -C payloads/coreinfo
|
|||||||
|
|
||||||
### Step 5 - Configure the build
|
### Step 5 - Configure the build
|
||||||
|
|
||||||
#### Configure your mainboard
|
##### Configure your mainboard
|
||||||
|
|
||||||
```Bash
|
```Bash
|
||||||
make menuconfig
|
make menuconfig
|
||||||
@@ -104,7 +104,7 @@ select < Exit >
|
|||||||
These should be the default selections, so if anything else was set, run
|
These should be the default selections, so if anything else was set, run
|
||||||
`make distclean` to remove your old config file and start over.
|
`make distclean` to remove your old config file and start over.
|
||||||
|
|
||||||
#### Optionally use your system toolchain (Again, not recommended)
|
##### Optionally use your system toolchain (Again, not recommended)
|
||||||
|
|
||||||
```Text
|
```Text
|
||||||
select 'General Setup' menu
|
select 'General Setup' menu
|
||||||
@@ -112,7 +112,7 @@ select 'Allow building with any toolchain'
|
|||||||
select < Exit >
|
select < Exit >
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Select the payload
|
##### Select the payload
|
||||||
|
|
||||||
```Text
|
```Text
|
||||||
select 'Payload' menu
|
select 'Payload' menu
|
||||||
@@ -125,7 +125,7 @@ select < Exit >
|
|||||||
select < Yes >
|
select < Yes >
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Check your configuration (optional step):
|
##### Check your configuration (optional step):
|
||||||
|
|
||||||
```Bash
|
```Bash
|
||||||
make savedefconfig
|
make savedefconfig
|
||||||
@@ -202,11 +202,11 @@ of the installed packages:
|
|||||||
|
|
||||||
* `build-essential` or `base-devel` are the basic tools for building software.
|
* `build-essential` or `base-devel` are the basic tools for building software.
|
||||||
* `git` is needed to download coreboot from the coreboot git repository.
|
* `git` is needed to download coreboot from the coreboot git repository.
|
||||||
* `libncurses-dev` or `ncurses` is needed to build the menu for 'make menuconfig'
|
* `libncurses5-dev` or `ncurses` is needed to build the menu for 'make menuconfig'
|
||||||
* `m4, bison, curl, flex, zlib1g-dev, gcc, gnat` and `g++` or `clang`
|
* `m4, bison, curl, flex, zlib1g-dev, gcc, gnat` and `g++` or `clang`
|
||||||
are needed to build the coreboot toolchain. `gcc` and `gnat` have to be
|
are needed to build the coreboot toolchain. `gcc` and `gnat` have to be
|
||||||
of the same version.
|
of the same version.
|
||||||
* `libssl-dev, pkgconf` are needed to build coreboot image (Step 6).
|
* `libssl-dev, pkg-config` are needed to build coreboot image (Step 6).
|
||||||
In particular, `libcrypto` provided by `libssl-dev` package.
|
In particular, `libcrypto` provided by `libssl-dev` package.
|
||||||
|
|
||||||
If you started with a different distribution or package management
|
If you started with a different distribution or package management
|
||||||
|
@@ -14,7 +14,7 @@ to make sure your patch compiles cleanly for all.
|
|||||||
Note that abuild is a tool to do a simple build test, and binaries it
|
Note that abuild is a tool to do a simple build test, and binaries it
|
||||||
produces may well not boot if flashed to a system.
|
produces may well not boot if flashed to a system.
|
||||||
|
|
||||||
## Basic usage
|
### Basic usage
|
||||||
|
|
||||||
abuild needs to be run from the coreboot directory. If you cd into the
|
abuild needs to be run from the coreboot directory. If you cd into the
|
||||||
coreboot/util/abuild directory and try to run it from there, it will
|
coreboot/util/abuild directory and try to run it from there, it will
|
||||||
@@ -30,7 +30,7 @@ example, to build the Lenovo X230 target, run:
|
|||||||
$ util/abuild/abuild -t lenovo/x230
|
$ util/abuild/abuild -t lenovo/x230
|
||||||
```
|
```
|
||||||
|
|
||||||
## Where builds and logs are stored
|
### Where builds and logs are stored
|
||||||
|
|
||||||
The resulting images and logs are stored in directory coreboot-builds/
|
The resulting images and logs are stored in directory coreboot-builds/
|
||||||
under your current directory. This can be overridden with --outdir:
|
under your current directory. This can be overridden with --outdir:
|
||||||
@@ -53,7 +53,7 @@ coreboot-builds/passing_boards and coreboot-builds/failing_boards.
|
|||||||
**These logs are overwritten with each abuild run.** Save them elsewhere
|
**These logs are overwritten with each abuild run.** Save them elsewhere
|
||||||
if you feel a need to reference the results later.
|
if you feel a need to reference the results later.
|
||||||
|
|
||||||
## Payloads
|
### Payloads
|
||||||
|
|
||||||
You can also specify a payload directory with -p:
|
You can also specify a payload directory with -p:
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ You can also tell abuild not to use a payload:
|
|||||||
util/abuild/abuild -t lenovo/x230 -p none
|
util/abuild/abuild -t lenovo/x230 -p none
|
||||||
```
|
```
|
||||||
|
|
||||||
## Build non-default configurations
|
### Build non-default configurations
|
||||||
|
|
||||||
Sometimes you do need to build test a custom, non-default configuration.
|
Sometimes you do need to build test a custom, non-default configuration.
|
||||||
This can be accomplished by placing a config file in configs/.
|
This can be accomplished by placing a config file in configs/.
|
||||||
@@ -142,7 +142,7 @@ a file named `myconfig` with this line:
|
|||||||
and run `abuild -K myconfig` to build everything with a silent postcar
|
and run `abuild -K myconfig` to build everything with a silent postcar
|
||||||
stage.
|
stage.
|
||||||
|
|
||||||
## Selectively build certain targets only (also config file naming caveats)
|
### Selectively build certain targets only (also config file naming caveats)
|
||||||
|
|
||||||
The P8Z77-M PRO example above would fail for P8Z77-M, because the
|
The P8Z77-M PRO example above would fail for P8Z77-M, because the
|
||||||
config file name is ambiguous. `abuild` would pick up this config when
|
config file name is ambiguous. `abuild` would pick up this config when
|
||||||
@@ -166,7 +166,7 @@ util/abuild/abuild --skip_unset USE_NATIVE_RAMINIT
|
|||||||
This example skips building configs not using (Sandy/Ivy Bridge) native
|
This example skips building configs not using (Sandy/Ivy Bridge) native
|
||||||
RAM init.
|
RAM init.
|
||||||
|
|
||||||
## Additional Examples
|
### Additional Examples
|
||||||
|
|
||||||
Many boards have multiple variants. You can build for a specific
|
Many boards have multiple variants. You can build for a specific
|
||||||
variant of a board:
|
variant of a board:
|
||||||
@@ -203,7 +203,7 @@ Of course, the real power of abuild is in testing multiple boards.
|
|||||||
util/abuild/abuild -B -y -c 8 -p none
|
util/abuild/abuild -B -y -c 8 -p none
|
||||||
```
|
```
|
||||||
|
|
||||||
## Full options list
|
### Full options list
|
||||||
|
|
||||||
```text
|
```text
|
||||||
coreboot autobuild v0.11.01 (Feb 3, 2023)
|
coreboot autobuild v0.11.01 (Feb 3, 2023)
|
||||||
|
@@ -11,7 +11,7 @@ make
|
|||||||
./intelp2m -file /path/to/inteltool.log
|
./intelp2m -file /path/to/inteltool.log
|
||||||
```
|
```
|
||||||
|
|
||||||
## Platforms
|
### Platforms
|
||||||
|
|
||||||
It is possible to use templates for parsing inteltool.log files.
|
It is possible to use templates for parsing inteltool.log files.
|
||||||
To specify such a pattern, use the option `-t <template number>`.
|
To specify such a pattern, use the option `-t <template number>`.
|
||||||
@@ -51,13 +51,13 @@ platform type is set using the -p option (Sunrise by default):
|
|||||||
./intelp2m -p <platform> -file path/to/inteltool.log
|
./intelp2m -p <platform> -file path/to/inteltool.log
|
||||||
```
|
```
|
||||||
|
|
||||||
## Packages
|
### Packages
|
||||||
|
|
||||||
![][pckgs]
|
![][pckgs]
|
||||||
|
|
||||||
[pckgs]: gopackages.png
|
[pckgs]: gopackages.png
|
||||||
|
|
||||||
## Bit fields in macros
|
### Bit fields in macros
|
||||||
|
|
||||||
Use the `-fld=cb` option to only generate a sequence of bit fields in
|
Use the `-fld=cb` option to only generate a sequence of bit fields in
|
||||||
a new macro:
|
a new macro:
|
||||||
@@ -71,7 +71,7 @@ _PAD_CFG_STRUCT(GPIO_37, PAD_FUNC(NF1) | PAD_TRIG(OFF) | PAD_TRIG(OFF), \
|
|||||||
PAD_PULL(DN_20K)), /* LPSS_UART0_TXD */
|
PAD_PULL(DN_20K)), /* LPSS_UART0_TXD */
|
||||||
```
|
```
|
||||||
|
|
||||||
## Raw DW0, DW1 register value
|
### Raw DW0, DW1 register value
|
||||||
|
|
||||||
To generate the gpio.c with raw PAD_CFG_DW0 and PAD_CFG_DW1 register
|
To generate the gpio.c with raw PAD_CFG_DW0 and PAD_CFG_DW1 register
|
||||||
values you need to use the -fld=raw option:
|
values you need to use the -fld=raw option:
|
||||||
@@ -96,7 +96,7 @@ _PAD_CFG_STRUCT(GPP_A10, 0x44000500, 0x00000000),
|
|||||||
_PAD_CFG_STRUCT(GPP_A10, 0x44000500, 0x00000000),
|
_PAD_CFG_STRUCT(GPP_A10, 0x44000500, 0x00000000),
|
||||||
```
|
```
|
||||||
|
|
||||||
## Macro Check
|
### Macro Check
|
||||||
|
|
||||||
After generating the macro, the utility checks all used
|
After generating the macro, the utility checks all used
|
||||||
fields of the configuration registers. If some field has been
|
fields of the configuration registers. If some field has been
|
||||||
@@ -115,7 +115,7 @@ PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_38, UP_20K, DEEP, NF1, HIZCRx1, DISPUPD),
|
|||||||
PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_39, UP_20K, DEEP, NF1, TxLASTRxE, DISPUPD),
|
PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_39, UP_20K, DEEP, NF1, TxLASTRxE, DISPUPD),
|
||||||
```
|
```
|
||||||
|
|
||||||
## Information level
|
### Information level
|
||||||
|
|
||||||
The utility can generate additional information about the bit
|
The utility can generate additional information about the bit
|
||||||
fields of the DW0 and DW1 configuration registers. Using the
|
fields of the DW0 and DW1 configuration registers. Using the
|
||||||
@@ -158,7 +158,7 @@ PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_39, UP_20K, DEEP, NF1, TxLASTRxE, \
|
|||||||
DISPUPD),
|
DISPUPD),
|
||||||
```
|
```
|
||||||
|
|
||||||
## Ignoring Fields
|
### Ignoring Fields
|
||||||
|
|
||||||
Utilities can generate the _PAD_CFG_STRUCT macro and exclude fields
|
Utilities can generate the _PAD_CFG_STRUCT macro and exclude fields
|
||||||
from it that are not in the corresponding PAD_CFG_*() macro:
|
from it that are not in the corresponding PAD_CFG_*() macro:
|
||||||
@@ -177,7 +177,7 @@ _PAD_CFG_STRUCT(GPIO_39, PAD_FUNC(NF1) | PAD_RESET(DEEP), \
|
|||||||
PAD_PULL(UP_20K) | PAD_IOSTERM(DISPUPD)),
|
PAD_PULL(UP_20K) | PAD_IOSTERM(DISPUPD)),
|
||||||
```
|
```
|
||||||
|
|
||||||
## FSP-style macro
|
### FSP-style macro
|
||||||
|
|
||||||
The utility allows one to generate macros that include fsp/edk2-platform
|
The utility allows one to generate macros that include fsp/edk2-platform
|
||||||
style bitfields:
|
style bitfields:
|
||||||
@@ -205,6 +205,6 @@ style bitfields:
|
|||||||
GpioPadConfigLock },
|
GpioPadConfigLock },
|
||||||
```
|
```
|
||||||
|
|
||||||
## Supported Chipsets
|
### Supported Chipsets
|
||||||
|
|
||||||
Sunrise PCH, Lewisburg PCH, Apollo Lake SoC, CannonLake-LP SoCs
|
Sunrise PCH, Lewisburg PCH, Apollo Lake SoC, CannonLake-LP SoCs
|
||||||
|
30
MAINTAINERS
30
MAINTAINERS
@@ -263,12 +263,11 @@ DELL MAINBOARDS
|
|||||||
S: Orphan
|
S: Orphan
|
||||||
F: src/mainboard/dell/
|
F: src/mainboard/dell/
|
||||||
|
|
||||||
DELL LATITUDE MAINBOARDS
|
DELL E6400 MAINBOARD
|
||||||
M: Nicholas Chin <nic.c3.14@gmail.com>
|
M: Nicholas Chin <nic.c3.14@gmail.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/mainboard/dell/e6400/
|
F: src/mainboard/dell/e6400/
|
||||||
F: src/mainboard/dell/snb_ivb_latitude/
|
|
||||||
F: src/mainboard/dell/e7240/
|
|
||||||
|
|
||||||
|
|
||||||
EMULATION MAINBOARDS
|
EMULATION MAINBOARDS
|
||||||
@@ -337,16 +336,9 @@ M: Nick Vaccaro <nvaccaro@chromium.org>
|
|||||||
M: Eric Lai <ericllai@google.com>
|
M: Eric Lai <ericllai@google.com>
|
||||||
M: Kapil Porwal <kapilporwal@google.com>
|
M: Kapil Porwal <kapilporwal@google.com>
|
||||||
M: Dinesh Gehlot <digehlot@google.com>
|
M: Dinesh Gehlot <digehlot@google.com>
|
||||||
M: Rishika Raj <rishikaraj@google.com>
|
|
||||||
M: Jayvik Desai <jayvik@google.com>
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/mainboard/google/brya/
|
F: src/mainboard/google/brya/
|
||||||
|
|
||||||
GOOGLE FATCAT MAINBOARDS
|
|
||||||
M: Subrata Banik <subratabanik@google.com>
|
|
||||||
M: Pranava Y N <pranavayn@google.com>
|
|
||||||
F: src/mainboard/google/fatcat/
|
|
||||||
|
|
||||||
GOOGLE HATCH MAINBOARDS
|
GOOGLE HATCH MAINBOARDS
|
||||||
M: Subrata Banik <subratabanik@google.com>
|
M: Subrata Banik <subratabanik@google.com>
|
||||||
M: Nick Vaccaro <nvaccaro@chromium.org>
|
M: Nick Vaccaro <nvaccaro@chromium.org>
|
||||||
@@ -604,8 +596,7 @@ F: src/mainboard/siemens/mc_ehl/
|
|||||||
|
|
||||||
|
|
||||||
SIFIVE MAINBOARDS
|
SIFIVE MAINBOARDS
|
||||||
M: Maximilian Brune <maximilian.brune@9elements.com>
|
S: Orphan
|
||||||
S: Maintained
|
|
||||||
F: src/mainboard/sifive/
|
F: src/mainboard/sifive/
|
||||||
|
|
||||||
|
|
||||||
@@ -666,7 +657,6 @@ F: src/mainboard/emulation/qemu-power8/
|
|||||||
|
|
||||||
RISC-V ARCHITECTURE
|
RISC-V ARCHITECTURE
|
||||||
M: Ronald Minnich <rminnich@gmail.com>
|
M: Ronald Minnich <rminnich@gmail.com>
|
||||||
M: Maximilian Brune <maximilian.brune@9elements.com>
|
|
||||||
R: Philipp Hug <philipp@hug.cx>
|
R: Philipp Hug <philipp@hug.cx>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/arch/riscv/
|
F: src/arch/riscv/
|
||||||
@@ -789,11 +779,6 @@ M: Ronak Kanabar <ronak.kanabar@intel.com>
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/drivers/intel/fsp2_0/
|
F: src/drivers/intel/fsp2_0/
|
||||||
|
|
||||||
INTEL DPTF
|
|
||||||
M: Sumeet Pawnikar <sumeet.r.pawnikar@intel.com>
|
|
||||||
S: Maintained
|
|
||||||
F: src/drivers/intel/dptf/
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Systems on a Chip
|
# Systems on a Chip
|
||||||
################################################################################
|
################################################################################
|
||||||
@@ -866,8 +851,6 @@ M: Subrata Banik <subratabanik@google.com>
|
|||||||
M: Nick Vaccaro <nvaccaro@chromium.org>
|
M: Nick Vaccaro <nvaccaro@chromium.org>
|
||||||
M: Kapil Porwal <kapilporwal@google.com>
|
M: Kapil Porwal <kapilporwal@google.com>
|
||||||
M: Dinesh Gehlot <digehlot@google.com>
|
M: Dinesh Gehlot <digehlot@google.com>
|
||||||
M: Rishika Raj <rishikaraj@google.com>
|
|
||||||
M: Jayvik Desai <jayvik@google.com>
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/soc/intel/alderlake/
|
F: src/soc/intel/alderlake/
|
||||||
|
|
||||||
@@ -910,13 +893,6 @@ M: Dinesh Gehlot <digehlot@google.com>
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/soc/intel/meteorlake/
|
F: src/soc/intel/meteorlake/
|
||||||
|
|
||||||
INTEL PANTHERLAKE SOC
|
|
||||||
M: Subrata Banik <subratabanik@google.com>
|
|
||||||
M: Kapil Porwal <kapilporwal@google.com>
|
|
||||||
M: Pranava Y N <pranavayn@google.com>
|
|
||||||
S: Maintained
|
|
||||||
F: src/soc/intel/pantherlake/
|
|
||||||
|
|
||||||
INTEL TIGERLAKE SOC
|
INTEL TIGERLAKE SOC
|
||||||
M: Subrata Banik <subratabanik@google.com>
|
M: Subrata Banik <subratabanik@google.com>
|
||||||
M: Nick Vaccaro <nvaccaro@chromium.org>
|
M: Nick Vaccaro <nvaccaro@chromium.org>
|
||||||
|
97
Makefile
97
Makefile
@@ -94,15 +94,10 @@ help_coreboot help::
|
|||||||
@echo ' sphinx - Build sphinx documentation for coreboot'
|
@echo ' sphinx - Build sphinx documentation for coreboot'
|
||||||
@echo ' sphinx-lint - Build sphinx documentation for coreboot with warnings as errors'
|
@echo ' sphinx-lint - Build sphinx documentation for coreboot with warnings as errors'
|
||||||
@echo ' filelist - Show files used in current build'
|
@echo ' filelist - Show files used in current build'
|
||||||
@echo ' printall - Print makefile info for debugging'
|
@echo ' printall - print makefile info for debugging'
|
||||||
@echo ' gitconfig - Set up git to submit patches to coreboot'
|
@echo ' gitconfig - set up git to submit patches to coreboot'
|
||||||
@echo ' ctags / ctags-project - Make ctags file for all of coreboot or current board'
|
@echo ' ctags / ctags-project - make ctags file for all of coreboot or current board'
|
||||||
@echo ' cscope / cscope-project - Make cscope.out file for coreboot or current board'
|
@echo ' cscope / cscope-project - make cscope.out file for coreboot or current board'
|
||||||
@echo
|
|
||||||
@echo '*** site-local related targets ***'
|
|
||||||
@echo ' symlink - Create symbolic links from site-local into coreboot tree'
|
|
||||||
@echo ' clean-symlink - Remove symbolic links created by "make symlink"'
|
|
||||||
@echo ' cleanall-symlink - Remove all symbolic links in the coreboot tree'
|
|
||||||
@echo
|
@echo
|
||||||
|
|
||||||
# This include must come _before_ the pattern rules below!
|
# This include must come _before_ the pattern rules below!
|
||||||
@@ -222,7 +217,8 @@ endif
|
|||||||
|
|
||||||
# The primary target needs to be here before we include the
|
# The primary target needs to be here before we include the
|
||||||
# other files
|
# other files
|
||||||
real-all: site-local-target real-target
|
|
||||||
|
real-all: real-target
|
||||||
|
|
||||||
# must come rather early
|
# must come rather early
|
||||||
.SECONDARY:
|
.SECONDARY:
|
||||||
@@ -491,77 +487,27 @@ sphinx:
|
|||||||
sphinx-lint:
|
sphinx-lint:
|
||||||
$(MAKE) SPHINXOPTS=-W -C Documentation sphinx
|
$(MAKE) SPHINXOPTS=-W -C Documentation sphinx
|
||||||
|
|
||||||
# Look at all of the files in the SYMLINK_LIST and create the symbolic links
|
|
||||||
# into the coreboot tree. Each symlink.txt file in site-local should be in the
|
|
||||||
# directory linked from and have a single line with the path to the location to
|
|
||||||
# link to. The path must be relative to the top of the coreboot directory.
|
|
||||||
symlink:
|
symlink:
|
||||||
if [ -z "$(SYMLINK_LIST)" ]; then \
|
@echo "Creating Symbolic Links.."; \
|
||||||
echo "No site-local symbolic links to create."; \
|
|
||||||
exit 0; \
|
|
||||||
fi; \
|
|
||||||
echo "Creating symbolic links.."; \
|
|
||||||
for link in $(SYMLINK_LIST); do \
|
for link in $(SYMLINK_LIST); do \
|
||||||
LINKTO="$(top)/$$(head -n 1 "$${link}")"; \
|
SYMLINK=`cat $$link`; \
|
||||||
LINKFROM=$$(dirname "$$(realpath "$${link}")"); \
|
REALPATH=`realpath $$link`; \
|
||||||
if [ -L "$${LINKTO}" ]; then \
|
if [ -L "$$SYMLINK" ]; then \
|
||||||
echo " $${LINKTO} exists - skipping"; \
|
|
||||||
continue; \
|
continue; \
|
||||||
fi; \
|
elif [ ! -e "$$SYMLINK" ]; then \
|
||||||
LINKTO="$$(realpath -m "$${LINKTO}")" 2>/dev/null; \
|
echo -e "\tLINK $$SYMLINK -> $$(dirname $$REALPATH)"; \
|
||||||
if [ "$${LINKTO}" = "$$(echo "$${LINKTO}" | sed "s|^$(top)||" )" ]; then \
|
ln -s $$(dirname $$REALPATH) $$SYMLINK; \
|
||||||
echo " FAILED: $${LINKTO} is outside of current directory." >&2; \
|
|
||||||
continue; \
|
|
||||||
fi; \
|
|
||||||
if [ ! -e "$${LINKTO}" ]; then \
|
|
||||||
echo " LINK $${LINKTO} -> $${LINKFROM}"; \
|
|
||||||
ln -s "$${LINKFROM}" "$${LINKTO}" || \
|
|
||||||
echo "FAILED: Could not create link." >&2; \
|
|
||||||
else \
|
else \
|
||||||
echo " FAILED: $${LINKTO} exists as a file or directory." >&2; \
|
echo -e "\tFAILED: $$SYMLINK exists"; \
|
||||||
fi; \
|
fi \
|
||||||
done
|
done
|
||||||
|
|
||||||
clean-symlink:
|
clean-symlink:
|
||||||
if [ -z "$(SYMLINK_LIST)" ]; then \
|
@echo "Deleting symbolic link";\
|
||||||
echo "No site-local symbolic links to clean."; \
|
EXISTING_SYMLINKS=`find -L ./src -xtype l | grep -v 3rdparty`; \
|
||||||
exit 0; \
|
for link in $$EXISTING_SYMLINKS; do \
|
||||||
fi; \
|
echo -e "\tUNLINK $$link"; \
|
||||||
echo "Removing site-local symbolic links from tree.."; \
|
rm "$$link"; \
|
||||||
for link in $(SYMLINK_LIST); do \
|
|
||||||
SYMLINK="$(top)/$$(head -n 1 "$${link}")"; \
|
|
||||||
if [ "$${SYMLINK}" = "$$(echo "$${SYMLINK}" | sed "s|^$(top)||")" ]; then \
|
|
||||||
echo " FAILED: $${SYMLINK} is outside of current directory." >&2; \
|
|
||||||
continue; \
|
|
||||||
elif [ ! -L "$${SYMLINK}" ]; then \
|
|
||||||
echo " $${SYMLINK} does not exist - skipping"; \
|
|
||||||
continue; \
|
|
||||||
fi; \
|
|
||||||
if [ -L "$${SYMLINK}" ]; then \
|
|
||||||
REALDIR="$$(realpath "$${link}")"; \
|
|
||||||
echo " UNLINK $${link} (linked from $${REALDIR})"; \
|
|
||||||
rm "$${SYMLINK}"; \
|
|
||||||
fi; \
|
|
||||||
done; \
|
|
||||||
EXISTING_SYMLINKS="$$(find $(top) -type l | grep -v "3rdparty\|crossgcc" )"; \
|
|
||||||
if [ -z "$${EXISTING_SYMLINKS}" ]; then \
|
|
||||||
echo " No remaining symbolic links found in tree."; \
|
|
||||||
else \
|
|
||||||
echo " Remaining symbolic links found:"; \
|
|
||||||
for link in $${EXISTING_SYMLINKS}; do \
|
|
||||||
echo " $${link}"; \
|
|
||||||
done; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
cleanall-symlink:
|
|
||||||
echo "Deleting all symbolic links in the coreboot tree (excluding 3rdparty & crossgcc)"; \
|
|
||||||
EXISTING_SYMLINKS="$$(find $(top) -type l | grep -v "3rdparty\|crossgcc" )"; \
|
|
||||||
for link in $${EXISTING_SYMLINKS}; do \
|
|
||||||
if [ -L "$${link}" ]; then \
|
|
||||||
REALDIR="$$(realpath "$${link}")"; \
|
|
||||||
echo " UNLINK $${link} (linked from $${REALDIR})"; \
|
|
||||||
rm "$${link}"; \
|
|
||||||
fi; \
|
|
||||||
done
|
done
|
||||||
|
|
||||||
clean-for-update:
|
clean-for-update:
|
||||||
@@ -591,5 +537,4 @@ distclean: clean clean-ctags clean-cscope distclean-payloads distclean-utils
|
|||||||
rm -f abuild*.xml junit.xml* util/lint/junit.xml
|
rm -f abuild*.xml junit.xml* util/lint/junit.xml
|
||||||
|
|
||||||
.PHONY: $(PHONY) clean clean-for-update clean-cscope cscope distclean sphinx sphinx-lint
|
.PHONY: $(PHONY) clean clean-for-update clean-cscope cscope distclean sphinx sphinx-lint
|
||||||
.PHONY: ctags-project cscope-project clean-ctags
|
.PHONY: ctags-project cscope-project clean-ctags symlink clean-symlink
|
||||||
.PHONY: symlink clean-symlink cleanall-symlink
|
|
||||||
|
103
Makefile.mk
103
Makefile.mk
@@ -90,23 +90,13 @@ show_coreboot: | files_added
|
|||||||
.PHONY: show_notices
|
.PHONY: show_notices
|
||||||
show_notices:: | show_coreboot
|
show_notices:: | show_coreboot
|
||||||
|
|
||||||
# This rule allows the site-local makefile to run before starting the actual
|
|
||||||
# coreboot build. It should not be used in the regular coreboot makefiles.
|
|
||||||
# Note: This gets run after the immediate makefile code like updating the
|
|
||||||
# submodules, but before any other targets.
|
|
||||||
.PHONY: site-local-target
|
|
||||||
site-local-target::
|
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
# our phony targets
|
# our phony targets
|
||||||
PHONY+= clean-abuild coreboot check-style build_complete
|
PHONY+= clean-abuild coreboot check-style build_complete
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
# root source directories of coreboot
|
# root source directories of coreboot
|
||||||
# site-local Makefile.mk must go first to override default locations (for binaries etc.)
|
subdirs-y := src/lib src/commonlib/ src/console src/device src/acpi src/superio/common
|
||||||
subdirs-y := site-local
|
|
||||||
|
|
||||||
subdirs-y += src/lib src/commonlib/ src/console src/device src/acpi src/superio/common
|
|
||||||
subdirs-$(CONFIG_EC_ACPI) += src/ec/intel
|
subdirs-$(CONFIG_EC_ACPI) += src/ec/intel
|
||||||
subdirs-y += src/ec/acpi $(wildcard src/ec/*/*) $(wildcard src/southbridge/*/*)
|
subdirs-y += src/ec/acpi $(wildcard src/ec/*/*) $(wildcard src/southbridge/*/*)
|
||||||
subdirs-y += $(wildcard src/soc/*) $(wildcard src/soc/*/common) $(filter-out $(wildcard src/soc/*/common),$(wildcard src/soc/*/*))
|
subdirs-y += $(wildcard src/soc/*) $(wildcard src/soc/*/common) $(filter-out $(wildcard src/soc/*/common),$(wildcard src/soc/*/*))
|
||||||
@@ -122,6 +112,8 @@ subdirs-y += src/mainboard/$(MAINBOARDDIR)
|
|||||||
subdirs-y += src/security
|
subdirs-y += src/security
|
||||||
subdirs-y += payloads payloads/external
|
subdirs-y += payloads payloads/external
|
||||||
subdirs-$(CONFIG_SBOM) += src/sbom
|
subdirs-$(CONFIG_SBOM) += src/sbom
|
||||||
|
|
||||||
|
subdirs-y += site-local
|
||||||
subdirs-y += util/checklist util/testing
|
subdirs-y += util/checklist util/testing
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
@@ -178,7 +170,7 @@ _int-multiply2=$(shell expr $(call _toint,$1) \* $(call _toint,$2))
|
|||||||
int-multiply=$(if $(filter 1,$(words $1)),$(strip $1),$(call int-multiply,$(call _int-multiply2,$(word 1,$1),$(word 2,$1)) $(wordlist 3,$(words $1),$1)))
|
int-multiply=$(if $(filter 1,$(words $1)),$(strip $1),$(call int-multiply,$(call _int-multiply2,$(word 1,$1),$(word 2,$1)) $(wordlist 3,$(words $1),$1)))
|
||||||
int-divide=$(if $(filter 1,$(words $1)),$(strip $1),$(shell expr $(call _toint,$(word 1,$1)) / $(call _toint,$(word 2,$1))))
|
int-divide=$(if $(filter 1,$(words $1)),$(strip $1),$(shell expr $(call _toint,$(word 1,$1)) / $(call _toint,$(word 2,$1))))
|
||||||
int-remainder=$(if $(filter 1,$(words $1)),$(strip $1),$(shell expr $(call _toint,$(word 1,$1)) % $(call _toint,$(word 2,$1))))
|
int-remainder=$(if $(filter 1,$(words $1)),$(strip $1),$(shell expr $(call _toint,$(word 1,$1)) % $(call _toint,$(word 2,$1))))
|
||||||
int-shift-left=$(shell echo -n $$(($(call _toint,$(word 1, $1)) << $(call _toint,$(word 2, $1)))))
|
int-shift-left=$(shell echo "$(call _toint,$(word 1, $1)) * (2 ^ $(call _toint,$(word 2, $1)))" | bc)
|
||||||
int-lt=$(if $(filter 1,$(words $1)),$(strip $1),$(shell expr $(call _toint,$(word 1,$1)) \< $(call _toint,$(word 2,$1))))
|
int-lt=$(if $(filter 1,$(words $1)),$(strip $1),$(shell expr $(call _toint,$(word 1,$1)) \< $(call _toint,$(word 2,$1))))
|
||||||
int-gt=$(if $(filter 1,$(words $1)),$(strip $1),$(shell expr $(call _toint,$(word 1,$1)) \> $(call _toint,$(word 2,$1))))
|
int-gt=$(if $(filter 1,$(words $1)),$(strip $1),$(shell expr $(call _toint,$(word 1,$1)) \> $(call _toint,$(word 2,$1))))
|
||||||
int-eq=$(if $(filter 1,$(words $1)),$(strip $1),$(shell expr $(call _toint,$(word 1,$1)) = $(call _toint,$(word 2,$1))))
|
int-eq=$(if $(filter 1,$(words $1)),$(strip $1),$(shell expr $(call _toint,$(word 1,$1)) = $(call _toint,$(word 2,$1))))
|
||||||
@@ -482,11 +474,7 @@ COREBOOT_EXTRA_VERSION := -$(call strip_quotes,$(CONFIG_LOCALVERSION))
|
|||||||
COREBOOT_EXPORTS += COREBOOT_EXTRA_VERSION
|
COREBOOT_EXPORTS += COREBOOT_EXTRA_VERSION
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CPPFLAGS_common := -Isrc
|
CPPFLAGS_common := -Isrc -Isrc/include -Isrc/commonlib/include -Isrc/commonlib/bsd/include -I$(obj)
|
||||||
CPPFLAGS_common += -Isrc/include
|
|
||||||
CPPFLAGS_common += -Isrc/commonlib/include
|
|
||||||
CPPFLAGS_common += -Isrc/commonlib/bsd/include
|
|
||||||
CPPFLAGS_common += -I$(obj)
|
|
||||||
VBOOT_SOURCE ?= 3rdparty/vboot
|
VBOOT_SOURCE ?= 3rdparty/vboot
|
||||||
CPPFLAGS_common += -I$(VBOOT_SOURCE)/firmware/include
|
CPPFLAGS_common += -I$(VBOOT_SOURCE)/firmware/include
|
||||||
CPPFLAGS_common += -include $(src)/include/kconfig.h
|
CPPFLAGS_common += -include $(src)/include/kconfig.h
|
||||||
@@ -504,62 +492,31 @@ ifeq ($(CONFIG_PCI_OPTION_ROM_RUN_YABEL)$(CONFIG_PCI_OPTION_ROM_RUN_REALMODE),y)
|
|||||||
CPPFLAGS_ramstage += -Isrc/device/oprom/include
|
CPPFLAGS_ramstage += -Isrc/device/oprom/include
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CFLAGS_common += -pipe
|
CFLAGS_common += -pipe -g -nostdinc -std=gnu11
|
||||||
CFLAGS_common += -g
|
CFLAGS_common += -nostdlib -Wall -Wundef -Wstrict-prototypes -Wmissing-prototypes
|
||||||
CFLAGS_common += -nostdinc
|
CFLAGS_common += -Wwrite-strings -Wredundant-decls -Wno-trigraphs -Wimplicit-fallthrough
|
||||||
CFLAGS_common += -std=gnu11
|
CFLAGS_common += -Wshadow -Wdate-time -Wtype-limits -Wvla -Wold-style-definition
|
||||||
CFLAGS_common += -nostdlib
|
CFLAGS_common += -Wdangling-else -Wmissing-include-dirs
|
||||||
CFLAGS_common += -Wall
|
CFLAGS_common += -fno-common -ffreestanding -fno-builtin -fomit-frame-pointer
|
||||||
CFLAGS_common += -Wundef
|
CFLAGS_common += -fstrict-aliasing -ffunction-sections -fdata-sections -fno-pie
|
||||||
CFLAGS_common += -Wstrict-prototypes
|
|
||||||
CFLAGS_common += -Wmissing-prototypes
|
|
||||||
CFLAGS_common += -Wwrite-strings
|
|
||||||
CFLAGS_common += -Wredundant-decls
|
|
||||||
CFLAGS_common += -Wno-trigraphs
|
|
||||||
CFLAGS_common += -Wimplicit-fallthrough
|
|
||||||
CFLAGS_common += -Wshadow
|
|
||||||
CFLAGS_common += -Wdate-time
|
|
||||||
CFLAGS_common += -Wtype-limits
|
|
||||||
CFLAGS_common += -Wvla
|
|
||||||
CFLAGS_common += -Wold-style-definition
|
|
||||||
CFLAGS_common += -Wdangling-else
|
|
||||||
CFLAGS_common += -Wmissing-include-dirs
|
|
||||||
CFLAGS_common += -fno-common
|
|
||||||
CFLAGS_common += -ffreestanding
|
|
||||||
CFLAGS_common += -fno-builtin
|
|
||||||
CFLAGS_common += -fomit-frame-pointer
|
|
||||||
CFLAGS_common += -fstrict-aliasing
|
|
||||||
CFLAGS_common += -ffunction-sections
|
|
||||||
CFLAGS_common += -fdata-sections
|
|
||||||
CFLAGS_common += -fno-pie
|
|
||||||
CFLAGS_common += -Wstring-compare
|
CFLAGS_common += -Wstring-compare
|
||||||
ifeq ($(CONFIG_COMPILER_GCC),y)
|
ifeq ($(CONFIG_COMPILER_GCC),y)
|
||||||
CFLAGS_common += -Wold-style-declaration
|
CFLAGS_common += -Wold-style-declaration
|
||||||
CFLAGS_common += -Wcast-function-type
|
|
||||||
# Don't add these GCC specific flags when running scan-build
|
# Don't add these GCC specific flags when running scan-build
|
||||||
ifeq ($(CCC_ANALYZER_OUTPUT_FORMAT),)
|
ifeq ($(CCC_ANALYZER_OUTPUT_FORMAT),)
|
||||||
CFLAGS_common += -Wno-packed-not-aligned
|
CFLAGS_common += -Wno-packed-not-aligned
|
||||||
CFLAGS_common += -fconserve-stack
|
CFLAGS_common += -fconserve-stack
|
||||||
CFLAGS_common += -Wnull-dereference
|
CFLAGS_common += -Wnull-dereference
|
||||||
CFLAGS_common += -Wlogical-op
|
CFLAGS_common += -Wlogical-op -Wduplicated-cond -Wno-array-compare
|
||||||
CFLAGS_common += -Wduplicated-cond
|
|
||||||
CFLAGS_common += -Wno-array-compare
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ADAFLAGS_common += -gnatp
|
ADAFLAGS_common += -gnatp
|
||||||
ADAFLAGS_common += -Wuninitialized
|
ADAFLAGS_common += -Wuninitialized -Wall -Werror
|
||||||
ADAFLAGS_common += -Wall
|
ADAFLAGS_common += -pipe -g -nostdinc
|
||||||
ADAFLAGS_common += -Werror
|
ADAFLAGS_common += -Wstrict-aliasing -Wshadow
|
||||||
ADAFLAGS_common += -pipe
|
ADAFLAGS_common += -fno-common -fomit-frame-pointer
|
||||||
ADAFLAGS_common += -g
|
ADAFLAGS_common += -ffunction-sections -fdata-sections
|
||||||
ADAFLAGS_common += -nostdinc
|
|
||||||
ADAFLAGS_common += -Wstrict-aliasing
|
|
||||||
ADAFLAGS_common += -Wshadow
|
|
||||||
ADAFLAGS_common += -fno-common
|
|
||||||
ADAFLAGS_common += -fomit-frame-pointer
|
|
||||||
ADAFLAGS_common += -ffunction-sections
|
|
||||||
ADAFLAGS_common += -fdata-sections
|
|
||||||
ADAFLAGS_common += -fno-pie
|
ADAFLAGS_common += -fno-pie
|
||||||
# Ada warning options:
|
# Ada warning options:
|
||||||
#
|
#
|
||||||
@@ -599,11 +556,7 @@ ADAFLAGS_common += -gnatwa.eeD.HHTU.U.W.Y
|
|||||||
# Disable style checks for now
|
# Disable style checks for now
|
||||||
ADAFLAGS_common += -gnatyN
|
ADAFLAGS_common += -gnatyN
|
||||||
|
|
||||||
LDFLAGS_common := --gc-sections
|
LDFLAGS_common := --gc-sections -nostdlib --nmagic -static
|
||||||
LDFLAGS_common += -nostdlib
|
|
||||||
LDFLAGS_common += --nmagic
|
|
||||||
LDFLAGS_common += -static
|
|
||||||
LDFLAGS_common += -z noexecstack
|
|
||||||
|
|
||||||
# Workaround for RISC-V linker bug, merge back into above line when fixed.
|
# Workaround for RISC-V linker bug, merge back into above line when fixed.
|
||||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=27180
|
# https://sourceware.org/bugzilla/show_bug.cgi?id=27180
|
||||||
@@ -1314,15 +1267,6 @@ ifeq ($(CONFIG_CBFS_VERIFICATION),y)
|
|||||||
fi
|
fi
|
||||||
endif # CONFIG_CBFS_VERIFICATION
|
endif # CONFIG_CBFS_VERIFICATION
|
||||||
|
|
||||||
define link_stage
|
|
||||||
# $1 stage name
|
|
||||||
|
|
||||||
$$(objcbfs)/$(1).debug: $$$$($(1)-libs) $$$$($(1)-objs)
|
|
||||||
@printf " LINK $$(subst $$(obj)/,,$$(@))\n"
|
|
||||||
$$(LD_$(1)) $$(LDFLAGS_$(1)) -o $$@ -L$$(obj) $$(COMPILER_RT_FLAGS_$(1)) --whole-archive --start-group $$(filter-out %.ld,$$($(1)-objs)) $$($(1)-libs) --no-whole-archive $$(COMPILER_RT_$(1)) --end-group -T $(call src-to-obj,$(1),$(CONFIG_MEMLAYOUT_LD_FILE))
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_SEPARATE_ROMSTAGE),y)
|
ifeq ($(CONFIG_SEPARATE_ROMSTAGE),y)
|
||||||
cbfs-files-y += $(CONFIG_CBFS_PREFIX)/romstage
|
cbfs-files-y += $(CONFIG_CBFS_PREFIX)/romstage
|
||||||
$(CONFIG_CBFS_PREFIX)/romstage-file := $(objcbfs)/romstage.elf
|
$(CONFIG_CBFS_PREFIX)/romstage-file := $(objcbfs)/romstage.elf
|
||||||
@@ -1332,6 +1276,15 @@ ifeq ($(CONFIG_ARCH_ROMSTAGE_ARM),y)
|
|||||||
$(CONFIG_CBFS_PREFIX)/romstage-options := -b 0
|
$(CONFIG_CBFS_PREFIX)/romstage-options := -b 0
|
||||||
endif
|
endif
|
||||||
ifeq ($(CONFIG_ARCH_ROMSTAGE_X86_32)$(CONFIG_ARCH_ROMSTAGE_X86_64),y)
|
ifeq ($(CONFIG_ARCH_ROMSTAGE_X86_32)$(CONFIG_ARCH_ROMSTAGE_X86_64),y)
|
||||||
|
# Use a 64 byte alignment to provide a minimum alignment
|
||||||
|
# requirement for the overall romstage. While the first object within
|
||||||
|
# romstage could have a 4 byte minimum alignment that doesn't mean the linker
|
||||||
|
# won't decide the entire section should be aligned to a larger value. In the
|
||||||
|
# future cbfstool should add XIP files proper and honor the alignment
|
||||||
|
# requirements of the program segment.
|
||||||
|
#
|
||||||
|
# Make sure that segment for .car.data is ignored while adding romstage.
|
||||||
|
$(CONFIG_CBFS_PREFIX)/romstage-align := 64
|
||||||
ifeq ($(CONFIG_NO_XIP_EARLY_STAGES),y)
|
ifeq ($(CONFIG_NO_XIP_EARLY_STAGES),y)
|
||||||
$(CONFIG_CBFS_PREFIX)/romstage-options := -S ".car.data"
|
$(CONFIG_CBFS_PREFIX)/romstage-options := -S ".car.data"
|
||||||
else
|
else
|
||||||
|
@@ -1,50 +0,0 @@
|
|||||||
# Type this in coreboot root directory to get a working .config:
|
|
||||||
# make defconfig KBUILD_DEFCONFIG=configs/builder/config.intel.crb.avc
|
|
||||||
|
|
||||||
#
|
|
||||||
# [RO] Board Configurations
|
|
||||||
#
|
|
||||||
CONFIG_VENDOR_INTEL=y
|
|
||||||
CONFIG_BOARD_INTEL_AVENUECITY_CRB=y
|
|
||||||
|
|
||||||
CONFIG_HAVE_CONFIGURABLE_RAMSTAGE=y
|
|
||||||
CONFIG_CONFIGURABLE_RAMSTAGE=y
|
|
||||||
|
|
||||||
CONFIG_NO_GFX_INIT=y
|
|
||||||
|
|
||||||
CONFIG_HAVE_IFD_BIN=y
|
|
||||||
CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION=y
|
|
||||||
CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
|
|
||||||
CONFIG_ADD_FSP_BINARIES=y
|
|
||||||
CONFIG_PAYLOAD_LINUX=y
|
|
||||||
|
|
||||||
CONFIG_UART_FOR_CONSOLE=0
|
|
||||||
CONFIG_CONSOLE_SERIAL_115200=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# [RW] IFWI Ingredients
|
|
||||||
#
|
|
||||||
CONFIG_IFD_BIN_PATH="site-local/avenuecity/descriptor.bin"
|
|
||||||
CONFIG_CPU_UCODE_BINARIES="site-local/avenuecity/ucode.mcb"
|
|
||||||
CONFIG_FSP_T_FILE="site-local/avenuecity/Server_T.fd"
|
|
||||||
CONFIG_FSP_M_FILE="site-local/avenuecity/Server_M.fd"
|
|
||||||
CONFIG_FSP_S_FILE="site-local/avenuecity/Server_S.fd"
|
|
||||||
CONFIG_FSP_HEADER_PATH="src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/"
|
|
||||||
|
|
||||||
CONFIG_PAYLOAD_FILE="site-local/avenuecity/linuxboot_bzImage"
|
|
||||||
CONFIG_LINUX_COMMAND_LINE="loglevel=7 earlyprintk=serial,ttyS0,115200 console=ttyS0,115200"
|
|
||||||
|
|
||||||
#
|
|
||||||
# [RW] Debug Settings
|
|
||||||
#
|
|
||||||
CONFIG_CONSOLE_POST=y
|
|
||||||
CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8=y
|
|
||||||
|
|
||||||
CONFIG_VERIFY_HOBS=y
|
|
||||||
CONFIG_DISPLAY_MTRRS=y
|
|
||||||
|
|
||||||
CONFIG_DISPLAY_FSP_CALLS_AND_STATUS=y
|
|
||||||
CONFIG_DISPLAY_FSP_HEADER=y
|
|
||||||
|
|
||||||
CONFIG_HAVE_DEBUG_GPIO=y
|
|
||||||
CONFIG_DEBUG_GPIO=y
|
|
@@ -1,50 +0,0 @@
|
|||||||
# Type this in coreboot root directory to get a working .config:
|
|
||||||
# make defconfig KBUILD_DEFCONFIG=configs/builder/config.intel.crb.bnc
|
|
||||||
|
|
||||||
#
|
|
||||||
# [RO] Board Configurations
|
|
||||||
#
|
|
||||||
CONFIG_VENDOR_INTEL=y
|
|
||||||
CONFIG_BOARD_INTEL_BEECHNUTCITY_CRB=y
|
|
||||||
|
|
||||||
CONFIG_HAVE_CONFIGURABLE_RAMSTAGE=y
|
|
||||||
CONFIG_CONFIGURABLE_RAMSTAGE=y
|
|
||||||
|
|
||||||
CONFIG_NO_GFX_INIT=y
|
|
||||||
|
|
||||||
CONFIG_HAVE_IFD_BIN=y
|
|
||||||
CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION=y
|
|
||||||
CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
|
|
||||||
CONFIG_ADD_FSP_BINARIES=y
|
|
||||||
CONFIG_PAYLOAD_LINUX=y
|
|
||||||
|
|
||||||
CONFIG_UART_FOR_CONSOLE=0
|
|
||||||
CONFIG_CONSOLE_SERIAL_115200=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# [RW] IFWI Ingredients
|
|
||||||
#
|
|
||||||
CONFIG_IFD_BIN_PATH="site-local/beechnutcity/descriptor.bin"
|
|
||||||
CONFIG_CPU_UCODE_BINARIES="site-local/beechnutcity/ucode.mcb"
|
|
||||||
CONFIG_FSP_T_FILE="site-local/beechnutcity/Server_T.fd"
|
|
||||||
CONFIG_FSP_M_FILE="site-local/beechnutcity/Server_M.fd"
|
|
||||||
CONFIG_FSP_S_FILE="site-local/beechnutcity/Server_S.fd"
|
|
||||||
CONFIG_FSP_HEADER_PATH="src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/"
|
|
||||||
|
|
||||||
CONFIG_PAYLOAD_FILE="site-local/beechnutcity/linuxboot_bzImage"
|
|
||||||
CONFIG_LINUX_COMMAND_LINE="loglevel=7 earlyprintk=serial,ttyS0,115200 console=ttyS0,115200"
|
|
||||||
|
|
||||||
#
|
|
||||||
# [RW] Debug Settings
|
|
||||||
#
|
|
||||||
CONFIG_CONSOLE_POST=y
|
|
||||||
CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8=y
|
|
||||||
|
|
||||||
CONFIG_VERIFY_HOBS=y
|
|
||||||
CONFIG_DISPLAY_MTRRS=y
|
|
||||||
|
|
||||||
CONFIG_DISPLAY_FSP_CALLS_AND_STATUS=y
|
|
||||||
CONFIG_DISPLAY_FSP_HEADER=y
|
|
||||||
|
|
||||||
CONFIG_HAVE_DEBUG_GPIO=y
|
|
||||||
CONFIG_DEBUG_GPIO=y
|
|
13
configs/config.protectli_vp4630_vp4650
Normal file
13
configs/config.protectli_vp4630_vp4650
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
CONFIG_VENDOR_PROTECTLI=y
|
||||||
|
CONFIG_BOARD_PROTECTLI_VP4630_VP4650=y
|
||||||
|
CONFIG_TPM_MEASURED_BOOT=y
|
||||||
|
CONFIG_SMMSTORE_SIZE=0x40000
|
||||||
|
CONFIG_TPM2=y
|
||||||
|
CONFIG_POST_IO_PORT=0x80
|
||||||
|
CONFIG_PAYLOAD_EDK2=y
|
||||||
|
CONFIG_EDK2_BOOT_MANAGER_ESCAPE=y
|
||||||
|
CONFIG_EDK2_BOOT_TIMEOUT=6
|
||||||
|
CONFIG_EDK2_FOLLOW_BGRT_SPEC=y
|
||||||
|
# CONFIG_EDK2_FULL_SCREEN_SETUP is not set
|
||||||
|
CONFIG_EDK2_SD_MMC_TIMEOUT=10
|
||||||
|
CONFIG_EDK2_SERIAL_SUPPORT=y
|
@@ -1,5 +1,5 @@
|
|||||||
CONFIG_VENDOR_PROTECTLI=y
|
CONFIG_VENDOR_PROTECTLI=y
|
||||||
CONFIG_BOARD_PROTECTLI_VP46XX=y
|
CONFIG_BOARD_PROTECTLI_VP4670=y
|
||||||
CONFIG_TPM_MEASURED_BOOT=y
|
CONFIG_TPM_MEASURED_BOOT=y
|
||||||
CONFIG_SMMSTORE_SIZE=0x40000
|
CONFIG_SMMSTORE_SIZE=0x40000
|
||||||
CONFIG_TPM2=y
|
CONFIG_TPM2=y
|
@@ -1,3 +0,0 @@
|
|||||||
CONFIG_VENDOR_SIFIVE=y
|
|
||||||
CONFIG_BOARD_SIFIVE_HIFIVE_UNLEASHED=y
|
|
||||||
CONFIG_RISCV_OPENSBI=y
|
|
@@ -28,7 +28,6 @@ payloads/external/edk2 \
|
|||||||
payloads/external/GRUB2 \
|
payloads/external/GRUB2 \
|
||||||
payloads/external/LinuxBoot \
|
payloads/external/LinuxBoot \
|
||||||
payloads/external/skiboot \
|
payloads/external/skiboot \
|
||||||
payloads/external/leanefi \
|
|
||||||
payloads/external/coreDOOM \
|
payloads/external/coreDOOM \
|
||||||
|
|
||||||
force-payload:
|
force-payload:
|
||||||
|
2
payloads/external/LinuxBoot/Makefile
vendored
2
payloads/external/LinuxBoot/Makefile
vendored
@@ -33,7 +33,7 @@ endif
|
|||||||
|
|
||||||
ifeq ($(CONFIG_LINUXBOOT_KERNEL_BZIMAGE),y)
|
ifeq ($(CONFIG_LINUXBOOT_KERNEL_BZIMAGE),y)
|
||||||
|
|
||||||
build/bzImage: $(kernel_dir)/arch/x86/boot/bzImage build/initramfs | build
|
build/bzImage: $(kernel_dir)/arch/x86/boot/bzImage | build
|
||||||
cp $< $@
|
cp $< $@
|
||||||
|
|
||||||
else ifeq ($(CONFIG_LINUXBOOT_KERNEL_UIMAGE),y)
|
else ifeq ($(CONFIG_LINUXBOOT_KERNEL_UIMAGE),y)
|
||||||
|
9
payloads/external/Makefile.mk
vendored
9
payloads/external/Makefile.mk
vendored
@@ -381,7 +381,7 @@ payloads/external/iPXE/ipxe/ipxe.rom ipxe: $(DOTCONFIG) $(IPXE_CONFIG_SCRIPT)
|
|||||||
CONFIG_HAS_SCRIPT=$(CONFIG_IPXE_ADD_SCRIPT) \
|
CONFIG_HAS_SCRIPT=$(CONFIG_IPXE_ADD_SCRIPT) \
|
||||||
CONFIG_IPXE_NO_PROMPT=$(CONFIG_IPXE_NO_PROMPT) \
|
CONFIG_IPXE_NO_PROMPT=$(CONFIG_IPXE_NO_PROMPT) \
|
||||||
CONFIG_IPXE_HAS_HTTPS=$(CONFIG_IPXE_HAS_HTTPS) \
|
CONFIG_IPXE_HAS_HTTPS=$(CONFIG_IPXE_HAS_HTTPS) \
|
||||||
CONFIG_IPXE_TRUST_CMD=$(CONFIG_IPXE_TRUST_CMD)
|
MFLAGS= MAKEFLAGS=
|
||||||
|
|
||||||
# LinuxBoot
|
# LinuxBoot
|
||||||
LINUXBOOT_CROSS_COMPILE_ARCH-$(CONFIG_LINUXBOOT_X86) = x86_32
|
LINUXBOOT_CROSS_COMPILE_ARCH-$(CONFIG_LINUXBOOT_X86) = x86_32
|
||||||
@@ -435,13 +435,6 @@ payloads/external/skiboot/build/skiboot.elf:
|
|||||||
$(MAKE) -C payloads/external/skiboot all \
|
$(MAKE) -C payloads/external/skiboot all \
|
||||||
CONFIG_SKIBOOT_GIT_REPO=$(CONFIG_SKIBOOT_GIT_REPO) \
|
CONFIG_SKIBOOT_GIT_REPO=$(CONFIG_SKIBOOT_GIT_REPO) \
|
||||||
CONFIG_SKIBOOT_REVISION=$(CONFIG_SKIBOOT_REVISION)
|
CONFIG_SKIBOOT_REVISION=$(CONFIG_SKIBOOT_REVISION)
|
||||||
|
|
||||||
# leanefi
|
|
||||||
|
|
||||||
payloads/external/leanefi/leanefi/build/leanefi.elf: FORCE $(DOTCONFIG)
|
|
||||||
$(MAKE) -C payloads/external/leanefi
|
|
||||||
FORCE: ;
|
|
||||||
|
|
||||||
# COREDOOM
|
# COREDOOM
|
||||||
|
|
||||||
payloads/external/coreDOOM/coredoom/doomgeneric/coredoom.elf coredoom:
|
payloads/external/coreDOOM/coredoom/doomgeneric/coredoom.elf coredoom:
|
||||||
|
2
payloads/external/edk2/Kconfig
vendored
2
payloads/external/edk2/Kconfig
vendored
@@ -319,7 +319,7 @@ config EDK2_USE_LAPIC_TIMER
|
|||||||
|
|
||||||
config EDK2_CUSTOM_BUILD_PARAMS
|
config EDK2_CUSTOM_BUILD_PARAMS
|
||||||
string "edk2 additional custom build parameters"
|
string "edk2 additional custom build parameters"
|
||||||
default ""
|
default "-D VARIABLE_SUPPORT=SMMSTORE" if EDK2_REPO_MRCHROMEBOX && SMMSTORE_V2
|
||||||
help
|
help
|
||||||
edk2 has build options that are not modified by coreboot, and these can be
|
edk2 has build options that are not modified by coreboot, and these can be
|
||||||
found in `UefiPayloadPkg/UefiPayloadPkg.dsc`. Forks may also support
|
found in `UefiPayloadPkg/UefiPayloadPkg.dsc`. Forks may also support
|
||||||
|
6
payloads/external/edk2/Makefile
vendored
6
payloads/external/edk2/Makefile
vendored
@@ -37,8 +37,6 @@ BUILD_STR += -s
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
BUILD_STR += -D BUILD_ARCH=X64
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# EDK II (edk2/master) has the following build options relevant to coreboot:
|
# EDK II (edk2/master) has the following build options relevant to coreboot:
|
||||||
#
|
#
|
||||||
@@ -69,10 +67,8 @@ endif
|
|||||||
ifneq ($(CONFIG_EDK2_SERIAL_SUPPORT),y)
|
ifneq ($(CONFIG_EDK2_SERIAL_SUPPORT),y)
|
||||||
BUILD_STR += -D DISABLE_SERIAL_TERMINAL=TRUE
|
BUILD_STR += -D DISABLE_SERIAL_TERMINAL=TRUE
|
||||||
endif
|
endif
|
||||||
# VARIABLE_SUPPORT = EMU
|
|
||||||
# MAX_VARIABLE_SIZE = 0x10000
|
# MAX_VARIABLE_SIZE = 0x10000
|
||||||
ifeq ($(CONFIG_SMMSTORE_V2),y)
|
ifeq ($(CONFIG_SMMSTORE_V2),y)
|
||||||
BUILD_STR += -D VARIABLE_SUPPORT=SMMSTORE
|
|
||||||
BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize=0x8000
|
BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize=0x8000
|
||||||
endif
|
endif
|
||||||
# PCIE_BASE_ADDRESS = 0
|
# PCIE_BASE_ADDRESS = 0
|
||||||
@@ -224,7 +220,7 @@ logo: $(EDK2_PATH)
|
|||||||
BMP3:$(EDK2_PATH)/MdeModulePkg/Logo/Logo.bmp;; \
|
BMP3:$(EDK2_PATH)/MdeModulePkg/Logo/Logo.bmp;; \
|
||||||
esac \
|
esac \
|
||||||
|
|
||||||
gop_driver: $(EDK2_PATH)
|
gop_driver:
|
||||||
if [ -n "$(CONFIG_EDK2_GOP_DRIVER)" ]; then \
|
if [ -n "$(CONFIG_EDK2_GOP_DRIVER)" ]; then \
|
||||||
echo "Using GOP driver $(CONFIG_EDK2_GOP_FILE)"; \
|
echo "Using GOP driver $(CONFIG_EDK2_GOP_FILE)"; \
|
||||||
cp $(top)/$(CONFIG_EDK2_GOP_FILE) $(EDK2_PATH)/UefiPayloadPkg/IntelGopDriver.efi; \
|
cp $(top)/$(CONFIG_EDK2_GOP_FILE) $(EDK2_PATH)/UefiPayloadPkg/IntelGopDriver.efi; \
|
||||||
|
9
payloads/external/iPXE/Kconfig
vendored
9
payloads/external/iPXE/Kconfig
vendored
@@ -108,16 +108,7 @@ config IPXE_HAS_HTTPS
|
|||||||
Enable HTTPS protocol, which allows you to encrypt all communication
|
Enable HTTPS protocol, which allows you to encrypt all communication
|
||||||
with a web server and to verify the server's identity
|
with a web server and to verify the server's identity
|
||||||
|
|
||||||
config IPXE_TRUST_CMD
|
|
||||||
bool "Enable TRUST commands"
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Enable imgverify and imgtrust commands, which allow you to verify
|
|
||||||
digital signature of file prior loading it, and restrict to loading
|
|
||||||
trusted files only.
|
|
||||||
|
|
||||||
endif # BUILD_IPXE
|
endif # BUILD_IPXE
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
endif # PXE
|
endif # PXE
|
||||||
|
3
payloads/external/iPXE/Makefile
vendored
3
payloads/external/iPXE/Makefile
vendored
@@ -52,9 +52,6 @@ endif
|
|||||||
ifeq ($(CONFIG_IPXE_HAS_HTTPS),y)
|
ifeq ($(CONFIG_IPXE_HAS_HTTPS),y)
|
||||||
sed -i'' 's|.*DOWNLOAD_PROTO_HTTPS|#define DOWNLOAD_PROTO_HTTPS|g' "$(project_dir)/src/config/general.h"
|
sed -i'' 's|.*DOWNLOAD_PROTO_HTTPS|#define DOWNLOAD_PROTO_HTTPS|g' "$(project_dir)/src/config/general.h"
|
||||||
endif
|
endif
|
||||||
ifeq ($(CONFIG_IPXE_TRUST_CMD),y)
|
|
||||||
sed -i'' 's|.*IMAGE_TRUST_CMD|#define IMAGE_TRUST_CMD|g' "$(project_dir)/src/config/general.h"
|
|
||||||
endif
|
|
||||||
|
|
||||||
build: config $(CONFIG_SCRIPT)
|
build: config $(CONFIG_SCRIPT)
|
||||||
ifeq ($(CONFIG_HAS_SCRIPT),y)
|
ifeq ($(CONFIG_HAS_SCRIPT),y)
|
||||||
|
60
payloads/external/leanefi/Kconfig
vendored
60
payloads/external/leanefi/Kconfig
vendored
@@ -1,60 +0,0 @@
|
|||||||
## SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
if PAYLOAD_LEANEFI
|
|
||||||
|
|
||||||
menu "leanEFI configuration"
|
|
||||||
|
|
||||||
config PAYLOAD_FILE
|
|
||||||
string
|
|
||||||
default "payloads/external/leanefi/leanefi/build/leanefi.elf"
|
|
||||||
|
|
||||||
config LEANEFI_EFI_ECPT
|
|
||||||
bool
|
|
||||||
default y if ARCH_ARM64
|
|
||||||
|
|
||||||
config LEANEFI_HEAP_SIZE
|
|
||||||
int "Heap size"
|
|
||||||
default 131072
|
|
||||||
help
|
|
||||||
This is the heap size (malloc'able size) available
|
|
||||||
to the payload.
|
|
||||||
|
|
||||||
If unsure, set to 131072 (128K)
|
|
||||||
|
|
||||||
config LEANEFI_STACK_SIZE
|
|
||||||
int "Stack size"
|
|
||||||
default 16384
|
|
||||||
help
|
|
||||||
This is the stack size available to the payload.
|
|
||||||
|
|
||||||
If unsure, set to 16384 (16K)
|
|
||||||
|
|
||||||
config LEANEFI_BASE_ADDRESS
|
|
||||||
hex "Base address"
|
|
||||||
default 0x62000000 if BOARD_EMULATION_QEMU_AARCH64
|
|
||||||
#default 0x10023300000 if BOARD_EMULATION_QEMU_SBSA
|
|
||||||
help
|
|
||||||
This is the base address for the payload.
|
|
||||||
|
|
||||||
config LEANEFI_PAYLOAD
|
|
||||||
bool "Add a payload"
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
If selected leanEFI will start a payload.
|
|
||||||
This option should only be unselected for debug purposes.
|
|
||||||
|
|
||||||
config LEANEFI_PAYLOAD_PATH
|
|
||||||
string "path to leanefi payload"
|
|
||||||
depends on LEANEFI_PAYLOAD
|
|
||||||
|
|
||||||
config LEANEFI_FDT
|
|
||||||
bool "Add an FDT that is propagated as EFI configuration table"
|
|
||||||
default y if BOARD_EMULATION_QEMU_AARCH64
|
|
||||||
|
|
||||||
config LEANEFI_FDT_PATH
|
|
||||||
string "path to FDT"
|
|
||||||
depends on LEANEFI_FDT
|
|
||||||
|
|
||||||
endmenu
|
|
||||||
|
|
||||||
endif
|
|
8
payloads/external/leanefi/Kconfig.name
vendored
8
payloads/external/leanefi/Kconfig.name
vendored
@@ -1,8 +0,0 @@
|
|||||||
## SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
config PAYLOAD_LEANEFI
|
|
||||||
bool "leanefi"
|
|
||||||
depends on ARCH_ARM64
|
|
||||||
help
|
|
||||||
Select this option if you want to build a coreboot image
|
|
||||||
with an leanefi payload.
|
|
23
payloads/external/leanefi/Makefile
vendored
23
payloads/external/leanefi/Makefile
vendored
@@ -1,23 +0,0 @@
|
|||||||
## SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
unexport KCONFIG_AUTOHEADER
|
|
||||||
unexport KCONFIG_AUTOCONFIG
|
|
||||||
unexport KCONFIG_DEPENDENCIES
|
|
||||||
unexport KCONFIG_SPLITCONFIG
|
|
||||||
unexport KCONFIG_TRISTATE
|
|
||||||
unexport KCONFIG_NEGATIVES
|
|
||||||
unexport $(COREBOOT_EXPORTS)
|
|
||||||
|
|
||||||
build: leanefi
|
|
||||||
$(MAKE) -C leanefi
|
|
||||||
|
|
||||||
leanefi:
|
|
||||||
git clone "https://review.coreboot.org/leanefi"
|
|
||||||
|
|
||||||
distclean:
|
|
||||||
rm -rf leanefi
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -rf leanefi/build
|
|
||||||
|
|
||||||
.PHONY: build clean distclean
|
|
@@ -106,22 +106,17 @@ menu "Architecture Options"
|
|||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "Target Architecture"
|
prompt "Target Architecture"
|
||||||
default ARCH_X86_32
|
default ARCH_X86
|
||||||
|
|
||||||
config ARCH_ARM
|
config ARCH_ARM
|
||||||
bool "ARM"
|
bool "ARM"
|
||||||
help
|
help
|
||||||
Support the ARM architecture
|
Support the ARM architecture
|
||||||
|
|
||||||
config ARCH_X86_32
|
config ARCH_X86
|
||||||
bool "x86_32"
|
bool "x86"
|
||||||
help
|
help
|
||||||
Support the x86_32 architecture
|
Support the x86 architecture
|
||||||
|
|
||||||
config ARCH_X86_64
|
|
||||||
bool "x86_64"
|
|
||||||
help
|
|
||||||
Support the x86_64 architecture
|
|
||||||
|
|
||||||
config ARCH_ARM64
|
config ARCH_ARM64
|
||||||
bool "ARM64"
|
bool "ARM64"
|
||||||
@@ -138,12 +133,6 @@ config ARCH_MOCK
|
|||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config ARCH_X86
|
|
||||||
bool
|
|
||||||
default y if ARCH_X86_32 || ARCH_X86_64
|
|
||||||
help
|
|
||||||
Support the x86 architecture
|
|
||||||
|
|
||||||
config MULTIBOOT
|
config MULTIBOOT
|
||||||
bool "Multiboot header support"
|
bool "Multiboot header support"
|
||||||
depends on ARCH_X86
|
depends on ARCH_X86
|
||||||
|
@@ -118,8 +118,7 @@ ARCH-y := $(ARCHDIR-y)
|
|||||||
# override here.
|
# override here.
|
||||||
ARCH-$(CONFIG_LP_ARCH_ARM) := arm
|
ARCH-$(CONFIG_LP_ARCH_ARM) := arm
|
||||||
ARCH-$(CONFIG_LP_ARCH_ARM64) := arm64
|
ARCH-$(CONFIG_LP_ARCH_ARM64) := arm64
|
||||||
ARCH-$(CONFIG_LP_ARCH_X86_32) := x86_32
|
ARCH-$(CONFIG_LP_ARCH_X86) := x86_32
|
||||||
ARCH-$(CONFIG_LP_ARCH_X86_64) := x86_64
|
|
||||||
ARCH-$(CONFIG_LP_ARCH_MOCK) := mock
|
ARCH-$(CONFIG_LP_ARCH_MOCK) := mock
|
||||||
|
|
||||||
# Five cases where we don't need fully populated $(obj) lists:
|
# Five cases where we don't need fully populated $(obj) lists:
|
||||||
|
@@ -56,6 +56,7 @@ classes-$(CONFIG_LP_REMOTEGDB) += libgdb
|
|||||||
classes-$(CONFIG_LP_VBOOT_LIB) += vboot_fw
|
classes-$(CONFIG_LP_VBOOT_LIB) += vboot_fw
|
||||||
classes-$(CONFIG_LP_VBOOT_LIB) += tlcl
|
classes-$(CONFIG_LP_VBOOT_LIB) += tlcl
|
||||||
libraries := $(classes-y)
|
libraries := $(classes-y)
|
||||||
|
classes-y += head.o
|
||||||
|
|
||||||
subdirs-y := arch/$(ARCHDIR-y)
|
subdirs-y := arch/$(ARCHDIR-y)
|
||||||
subdirs-y += crypto libc drivers libpci gdb
|
subdirs-y += crypto libc drivers libpci gdb
|
||||||
@@ -96,7 +97,7 @@ $(obj)/libpayload-config.h: $(KCONFIG_AUTOHEADER) $(obj)/libpayload.config
|
|||||||
cmp $@ $< 2>/dev/null || cp $< $@
|
cmp $@ $< 2>/dev/null || cp $< $@
|
||||||
|
|
||||||
library-targets = $(addsuffix .a,$(addprefix $(obj)/,$(libraries))) $(obj)/libpayload.a
|
library-targets = $(addsuffix .a,$(addprefix $(obj)/,$(libraries))) $(obj)/libpayload.a
|
||||||
lib: $$(library-targets) $(obj)/libpayload.ldscript
|
lib: $$(library-targets) $(obj)/head.o
|
||||||
|
|
||||||
extract_nth=$(word $(1), $(subst |, ,$(2)))
|
extract_nth=$(word $(1), $(subst |, ,$(2)))
|
||||||
|
|
||||||
@@ -115,16 +116,17 @@ $(obj)/%.a: $$(%-objs)
|
|||||||
printf " AR $(subst $(CURDIR)/,,$(@))\n"
|
printf " AR $(subst $(CURDIR)/,,$(@))\n"
|
||||||
printf "create $@\n$(foreach objc,$(filter-out %.a,$^),addmod $(objc)\n)$(foreach lib,$(filter %.a,$^),addlib $(lib)\n)save\nend\n" | $(AR) -M
|
printf "create $@\n$(foreach objc,$(filter-out %.a,$^),addmod $(objc)\n)$(foreach lib,$(filter %.a,$^),addlib $(lib)\n)save\nend\n" | $(AR) -M
|
||||||
|
|
||||||
$(obj)/libpayload.ldscript: arch/$(ARCHDIR-y)/libpayload.ldscript $(obj)/libpayload-config.h
|
$(obj)/head.o: $(obj)/arch/$(ARCHDIR-y)/head.head.o.o
|
||||||
@printf " LDSCRIPT $@\n"
|
printf " CP $(subst $(CURDIR)/,,$(@))\n"
|
||||||
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -E -P -x assembler-with-cpp -undef -o $@ $<
|
cp $^ $@
|
||||||
|
|
||||||
install: real-target
|
install: real-target
|
||||||
printf " INSTALL $(DESTDIR)/libpayload/lib\n"
|
printf " INSTALL $(DESTDIR)/libpayload/lib\n"
|
||||||
install -m 755 -d $(DESTDIR)/libpayload/lib
|
install -m 755 -d $(DESTDIR)/libpayload/lib
|
||||||
install -m 644 $(library-targets) $(DESTDIR)/libpayload/lib/
|
install -m 644 $(library-targets) $(DESTDIR)/libpayload/lib/
|
||||||
install -m 644 $(obj)/libpayload.ldscript $(DESTDIR)/libpayload/lib/
|
install -m 644 arch/$(ARCHDIR-y)/libpayload.ldscript $(DESTDIR)/libpayload/lib/
|
||||||
install -m 755 -d $(DESTDIR)/libpayload/lib/$(ARCHDIR-y)
|
install -m 755 -d $(DESTDIR)/libpayload/lib/$(ARCHDIR-y)
|
||||||
|
install -m 644 $(obj)/head.o $(DESTDIR)/libpayload/lib/$(ARCHDIR-y)
|
||||||
printf " INSTALL $(DESTDIR)/libpayload/include\n"
|
printf " INSTALL $(DESTDIR)/libpayload/include\n"
|
||||||
install -m 755 -d $(DESTDIR)/libpayload/include
|
install -m 755 -d $(DESTDIR)/libpayload/include
|
||||||
find include -type d -exec install -m755 -d $(DESTDIR)/libpayload/{} \;
|
find include -type d -exec install -m755 -d $(DESTDIR)/libpayload/{} \;
|
||||||
|
@@ -29,7 +29,7 @@
|
|||||||
CFLAGS += -mthumb -march=armv7-a
|
CFLAGS += -mthumb -march=armv7-a
|
||||||
arm_asm_flags = -Wa,-mthumb -Wa,-mimplicit-it=always -Wa,-mno-warn-deprecated
|
arm_asm_flags = -Wa,-mthumb -Wa,-mimplicit-it=always -Wa,-mno-warn-deprecated
|
||||||
|
|
||||||
libc-y += head.S
|
head.o-y += head.S
|
||||||
libc-y += eabi_compat.c
|
libc-y += eabi_compat.c
|
||||||
libc-y += main.c sysinfo.c
|
libc-y += main.c sysinfo.c
|
||||||
libc-y += timer.c coreboot.c util.S
|
libc-y += timer.c coreboot.c util.S
|
||||||
@@ -44,4 +44,5 @@ libc-$(CONFIG_LP_GPL) += memcpy.S memset.S memmove.S
|
|||||||
libgdb-y += gdb.c
|
libgdb-y += gdb.c
|
||||||
|
|
||||||
# Add other classes here when you put assembly files into them!
|
# Add other classes here when you put assembly files into them!
|
||||||
|
head.o-S-ccopts += $(arm_asm_flags)
|
||||||
libc-S-ccopts += $(arm_asm_flags)
|
libc-S-ccopts += $(arm_asm_flags)
|
||||||
|
@@ -29,7 +29,7 @@
|
|||||||
CFLAGS += -march=armv8-a
|
CFLAGS += -march=armv8-a
|
||||||
arm64_asm_flags =
|
arm64_asm_flags =
|
||||||
|
|
||||||
libc-y += head.S
|
head.o-y += head.S
|
||||||
libc-y += main.c sysinfo.c
|
libc-y += main.c sysinfo.c
|
||||||
libc-y += timer.c coreboot.c util.S
|
libc-y += timer.c coreboot.c util.S
|
||||||
libc-y += virtual.c
|
libc-y += virtual.c
|
||||||
@@ -42,4 +42,5 @@ libc-y += mmu.c
|
|||||||
libgdb-y += gdb.c
|
libgdb-y += gdb.c
|
||||||
|
|
||||||
# Add other classes here when you put assembly files into them!
|
# Add other classes here when you put assembly files into them!
|
||||||
libc-S-ccopts += $(arm64_asm_flags)
|
head.o-S-ccopts += $(arm64_asm_flags)
|
||||||
|
libc-S-ccopts += $(arm64_asm_flags)
|
||||||
|
@@ -41,9 +41,6 @@
|
|||||||
mov w10, #0 // w10 = 2 * cache level
|
mov w10, #0 // w10 = 2 * cache level
|
||||||
mov w8, #1 // w8 = constant 0b1
|
mov w8, #1 // w8 = constant 0b1
|
||||||
|
|
||||||
mrs x12, id_aa64mmfr2_el1 // read ID_AA64MMFR2_EL1
|
|
||||||
ubfx x12, x12, #20, #4 // [23:20] - CCIDX support
|
|
||||||
|
|
||||||
1: //next_level
|
1: //next_level
|
||||||
add w2, w10, w10, lsr #1 // calculate 3 * cache level
|
add w2, w10, w10, lsr #1 // calculate 3 * cache level
|
||||||
lsr w1, w0, w2 // extract 3-bit cache type for this level
|
lsr w1, w0, w2 // extract 3-bit cache type for this level
|
||||||
@@ -55,14 +52,8 @@
|
|||||||
mrs x1, ccsidr_el1 // w1 = read ccsidr
|
mrs x1, ccsidr_el1 // w1 = read ccsidr
|
||||||
and w2, w1, #7 // w2 = log2(linelen_bytes) - 4
|
and w2, w1, #7 // w2 = log2(linelen_bytes) - 4
|
||||||
add w2, w2, #4 // w2 = log2(linelen_bytes)
|
add w2, w2, #4 // w2 = log2(linelen_bytes)
|
||||||
|
ubfx w4, w1, #3, #10 // w4 = associativity - 1 (also
|
||||||
cbz x12, 11f // check FEAT_CCIDX for associativity
|
// max way number)
|
||||||
// branch to 11 if FEAT_CCIDX is not implemented
|
|
||||||
ubfx x4, x1, #3, #21 // x4 = associativity CCSIDR_EL1[23:3]
|
|
||||||
b 12f
|
|
||||||
11:
|
|
||||||
ubfx x4, x1, #3, #10 // x4 = associativity CCSIDR_EL1[12:3]
|
|
||||||
12:
|
|
||||||
clz w5, w4 // w5 = 32 - log2(ways)
|
clz w5, w4 // w5 = 32 - log2(ways)
|
||||||
// (bit position of way in DC)
|
// (bit position of way in DC)
|
||||||
lsl w9, w4, w5 // w9 = max way number
|
lsl w9, w4, w5 // w9 = max way number
|
||||||
@@ -70,13 +61,7 @@
|
|||||||
lsl w16, w8, w5 // w16 = amount to decrement (way
|
lsl w16, w8, w5 // w16 = amount to decrement (way
|
||||||
// number per iteration)
|
// number per iteration)
|
||||||
2: //next_way
|
2: //next_way
|
||||||
cbz x12, 21f // check FEAT_CCIDX for numsets
|
ubfx w7, w1, #13, #15 // w7 = max set #, right aligned
|
||||||
// branch to 21 if FEAT_CCIDX is not implemented
|
|
||||||
ubfx x7, x1, #32, #24 // x7(w7) = numsets CCSIDR_EL1[55:32]
|
|
||||||
b 22f
|
|
||||||
21:
|
|
||||||
ubfx w7, w1, #13, #15 // w7 = numsets CCSIDR_EL1[27:13]
|
|
||||||
22:
|
|
||||||
lsl w7, w7, w2 // w7 = max set #, DC aligned
|
lsl w7, w7, w2 // w7 = max set #, DC aligned
|
||||||
lsl w17, w8, w2 // w17 = amount to decrement (set
|
lsl w17, w8, w2 // w17 = amount to decrement (set
|
||||||
// number per iteration)
|
// number per iteration)
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
|
||||||
|
head.o-y += head.c
|
||||||
|
|
||||||
libc-y += virtual.c
|
libc-y += virtual.c
|
||||||
|
|
||||||
CFLAGS += -Wno-address-of-packed-member
|
CFLAGS += -Wno-address-of-packed-member
|
||||||
|
3
payloads/libpayload/arch/mock/head.c
Normal file
3
payloads/libpayload/arch/mock/head.c
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
|
|
||||||
|
/* This file is empty on purpose. It should not be used. */
|
@@ -27,26 +27,16 @@
|
|||||||
##
|
##
|
||||||
|
|
||||||
ifneq ($(CONFIG_LP_COMPILER_LLVM_CLANG),y)
|
ifneq ($(CONFIG_LP_COMPILER_LLVM_CLANG),y)
|
||||||
ifeq ($(CONFIG_LP_ARCH_X86_64),y)
|
|
||||||
CFLAGS += -mpreferred-stack-boundary=4
|
|
||||||
else
|
|
||||||
CFLAGS += -mpreferred-stack-boundary=2
|
CFLAGS += -mpreferred-stack-boundary=2
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
|
|
||||||
libc-$(CONFIG_LP_ARCH_X86_32) += head.S
|
head.o-y += head.S
|
||||||
libc-$(CONFIG_LP_ARCH_X86_64) += head_64.S
|
|
||||||
libc-$(CONFIG_LP_ARCH_X86_64) += pt.S
|
|
||||||
libc-y += main.c sysinfo.c
|
libc-y += main.c sysinfo.c
|
||||||
libc-y += timer.c coreboot.c util.S
|
libc-y += timer.c coreboot.c util.S
|
||||||
libc-y += virtual.c
|
libc-y += exec.S virtual.c
|
||||||
libc-y += selfboot.c cache.c
|
libc-y += selfboot.c cache.c
|
||||||
libc-y += exception.c
|
libc-y += exception_asm.S exception.c
|
||||||
libc-y += delay.c
|
libc-y += delay.c
|
||||||
libc-$(CONFIG_LP_ARCH_X86_32) += exec.c
|
|
||||||
libc-$(CONFIG_LP_ARCH_X86_32) += exec.S
|
|
||||||
libc-$(CONFIG_LP_ARCH_X86_32) += exception_asm.S
|
|
||||||
libc-$(CONFIG_LP_ARCH_X86_64) += exception_asm_64.S
|
|
||||||
|
|
||||||
# Will fall back to default_memXXX() in libc/memory.c if GPL not allowed.
|
# Will fall back to default_memXXX() in libc/memory.c if GPL not allowed.
|
||||||
libc-$(CONFIG_LP_GPL) += string.c
|
libc-$(CONFIG_LP_GPL) += string.c
|
||||||
|
@@ -34,13 +34,7 @@
|
|||||||
|
|
||||||
#define IF_FLAG (1 << 9)
|
#define IF_FLAG (1 << 9)
|
||||||
|
|
||||||
#if CONFIG(LP_ARCH_X86_64)
|
u32 exception_stack[0x400] __attribute__((aligned(8)));
|
||||||
#define REGISTER_FMT "0x%016zx"
|
|
||||||
#else
|
|
||||||
#define REGISTER_FMT "0x%08zx"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
u8 exception_stack[0x400] __aligned(16);
|
|
||||||
|
|
||||||
static interrupt_handler handlers[256];
|
static interrupt_handler handlers[256];
|
||||||
|
|
||||||
@@ -113,15 +107,13 @@ static void dump_stack(uintptr_t addr, size_t bytes)
|
|||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
const int line = 8;
|
const int line = 8;
|
||||||
uint32_t *ptr = (uint32_t *)((uintptr_t)addr & ~(line * sizeof(*ptr) - 1));
|
uint32_t *ptr = (uint32_t *)(addr & ~(line * sizeof(*ptr) - 1));
|
||||||
|
|
||||||
printf("Dumping stack:\n");
|
printf("Dumping stack:\n");
|
||||||
for (i = bytes / sizeof(*ptr); i >= 0; i -= line) {
|
for (i = bytes / sizeof(*ptr); i >= 0; i -= line) {
|
||||||
printf("%p: ", ptr + i);
|
printf("%p: ", ptr + i);
|
||||||
for (j = i; j < i + line; j++) {
|
for (j = i; j < i + line; j++)
|
||||||
if ((uintptr_t)(ptr + j) >= addr && (uintptr_t)(ptr + j) < addr + bytes)
|
|
||||||
printf("%08x ", *(ptr + j));
|
printf("%08x ", *(ptr + j));
|
||||||
}
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -151,27 +143,17 @@ static void dump_exception_state(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
printf("REG_IP: " REGISTER_FMT "\n", exception_state->regs.reg_ip);
|
printf("EIP: 0x%08x\n", exception_state->regs.eip);
|
||||||
printf("REG_FLAGS: " REGISTER_FMT "\n", exception_state->regs.reg_flags);
|
|
||||||
printf("REG_AX: " REGISTER_FMT "\n", exception_state->regs.reg_ax);
|
|
||||||
printf("REG_BX: " REGISTER_FMT "\n", exception_state->regs.reg_bx);
|
|
||||||
printf("REG_CX: " REGISTER_FMT "\n", exception_state->regs.reg_cx);
|
|
||||||
printf("REG_DX: " REGISTER_FMT "\n", exception_state->regs.reg_dx);
|
|
||||||
printf("REG_SP: " REGISTER_FMT "\n", exception_state->regs.reg_sp);
|
|
||||||
printf("REG_BP: " REGISTER_FMT "\n", exception_state->regs.reg_bp);
|
|
||||||
printf("REG_SI: " REGISTER_FMT "\n", exception_state->regs.reg_si);
|
|
||||||
printf("REG_DI: " REGISTER_FMT "\n", exception_state->regs.reg_di);
|
|
||||||
#if CONFIG(LP_ARCH_X86_64)
|
|
||||||
printf("REG_R8: 0x%016zx\n", exception_state->regs.reg_r8);
|
|
||||||
printf("REG_R9: 0x%016zx\n", exception_state->regs.reg_r9);
|
|
||||||
printf("REG_R10: 0x%016zx\n", exception_state->regs.reg_r10);
|
|
||||||
printf("REG_R11: 0x%016zx\n", exception_state->regs.reg_r11);
|
|
||||||
printf("REG_R12: 0x%016zx\n", exception_state->regs.reg_r12);
|
|
||||||
printf("REG_R13: 0x%016zx\n", exception_state->regs.reg_r13);
|
|
||||||
printf("REG_R14: 0x%016zx\n", exception_state->regs.reg_r14);
|
|
||||||
printf("REG_R15: 0x%016zx\n", exception_state->regs.reg_r15);
|
|
||||||
#endif
|
|
||||||
printf("CS: 0x%04x\n", exception_state->regs.cs);
|
printf("CS: 0x%04x\n", exception_state->regs.cs);
|
||||||
|
printf("EFLAGS: 0x%08x\n", exception_state->regs.eflags);
|
||||||
|
printf("EAX: 0x%08x\n", exception_state->regs.eax);
|
||||||
|
printf("ECX: 0x%08x\n", exception_state->regs.ecx);
|
||||||
|
printf("EDX: 0x%08x\n", exception_state->regs.edx);
|
||||||
|
printf("EBX: 0x%08x\n", exception_state->regs.ebx);
|
||||||
|
printf("ESP: 0x%08x\n", exception_state->regs.esp);
|
||||||
|
printf("EBP: 0x%08x\n", exception_state->regs.ebp);
|
||||||
|
printf("ESI: 0x%08x\n", exception_state->regs.esi);
|
||||||
|
printf("EDI: 0x%08x\n", exception_state->regs.edi);
|
||||||
printf("DS: 0x%04x\n", exception_state->regs.ds);
|
printf("DS: 0x%04x\n", exception_state->regs.ds);
|
||||||
printf("ES: 0x%04x\n", exception_state->regs.es);
|
printf("ES: 0x%04x\n", exception_state->regs.es);
|
||||||
printf("SS: 0x%04x\n", exception_state->regs.ss);
|
printf("SS: 0x%04x\n", exception_state->regs.ss);
|
||||||
@@ -182,7 +164,7 @@ static void dump_exception_state(void)
|
|||||||
void exception_dispatch(void)
|
void exception_dispatch(void)
|
||||||
{
|
{
|
||||||
die_if(exception_state->vector >= ARRAY_SIZE(handlers),
|
die_if(exception_state->vector >= ARRAY_SIZE(handlers),
|
||||||
"Invalid vector %zu\n", exception_state->vector);
|
"Invalid vector %u\n", exception_state->vector);
|
||||||
|
|
||||||
u8 vec = exception_state->vector;
|
u8 vec = exception_state->vector;
|
||||||
|
|
||||||
@@ -202,7 +184,7 @@ void exception_dispatch(void)
|
|||||||
vec);
|
vec);
|
||||||
|
|
||||||
dump_exception_state();
|
dump_exception_state();
|
||||||
dump_stack(exception_state->regs.reg_sp, 512);
|
dump_stack(exception_state->regs.esp, 512);
|
||||||
/* We don't call apic_eoi because we don't want to ack the interrupt and
|
/* We don't call apic_eoi because we don't want to ack the interrupt and
|
||||||
allow another interrupt to wake the processor. */
|
allow another interrupt to wake the processor. */
|
||||||
halt();
|
halt();
|
||||||
@@ -224,17 +206,6 @@ void set_interrupt_handler(u8 vector, interrupt_handler handler)
|
|||||||
handlers[vector] = handler;
|
handlers[vector] = handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CONFIG(LP_ARCH_X86_64)
|
|
||||||
static uint64_t eflags(void)
|
|
||||||
{
|
|
||||||
uint64_t eflags;
|
|
||||||
asm volatile(
|
|
||||||
"pushfq\n\t"
|
|
||||||
"popq %0\n\t"
|
|
||||||
: "=rm" (eflags));
|
|
||||||
return eflags;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
static uint32_t eflags(void)
|
static uint32_t eflags(void)
|
||||||
{
|
{
|
||||||
uint32_t eflags;
|
uint32_t eflags;
|
||||||
@@ -244,7 +215,6 @@ static uint32_t eflags(void)
|
|||||||
: "=rm" (eflags));
|
: "=rm" (eflags));
|
||||||
return eflags;
|
return eflags;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void enable_interrupts(void)
|
void enable_interrupts(void)
|
||||||
{
|
{
|
||||||
|
@@ -1,351 +0,0 @@
|
|||||||
/*
|
|
||||||
*
|
|
||||||
* Copyright 2024 Google Inc.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* 3. The name of the author may not be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
.align 16
|
|
||||||
.global exception_stack_end
|
|
||||||
exception_stack_end:
|
|
||||||
.quad 0
|
|
||||||
.global exception_state
|
|
||||||
exception_state:
|
|
||||||
.quad 0
|
|
||||||
|
|
||||||
/* Some temporary variables which are used while saving exception state. */
|
|
||||||
vector:
|
|
||||||
.quad 0
|
|
||||||
error_code:
|
|
||||||
.quad 0
|
|
||||||
old_rax:
|
|
||||||
.quad 0
|
|
||||||
old_rcx:
|
|
||||||
.quad 0
|
|
||||||
|
|
||||||
.align 16
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Each exception vector has a small stub associated with it which sets aside
|
|
||||||
* the error code, if any, records which vector we entered from, and calls
|
|
||||||
* the common exception entry point. Some exceptions have error codes and some
|
|
||||||
* don't, so we have a macro for each type.
|
|
||||||
*/
|
|
||||||
|
|
||||||
.macro stub num
|
|
||||||
exception_stub_\num:
|
|
||||||
movq $0, error_code
|
|
||||||
movq $\num, vector
|
|
||||||
jmp exception_common
|
|
||||||
.endm
|
|
||||||
|
|
||||||
.macro stub_err num
|
|
||||||
exception_stub_\num:
|
|
||||||
pop error_code
|
|
||||||
movq $\num, vector
|
|
||||||
jmp exception_common
|
|
||||||
.endm
|
|
||||||
|
|
||||||
.altmacro
|
|
||||||
.macro user_defined_stubs from, to
|
|
||||||
stub \from
|
|
||||||
.if \to-\from
|
|
||||||
user_defined_stubs %(from+1),\to
|
|
||||||
.endif
|
|
||||||
.endm
|
|
||||||
|
|
||||||
stub 0
|
|
||||||
stub 1
|
|
||||||
stub 2
|
|
||||||
stub 3
|
|
||||||
stub 4
|
|
||||||
stub 5
|
|
||||||
stub 6
|
|
||||||
stub 7
|
|
||||||
stub_err 8
|
|
||||||
stub 9
|
|
||||||
stub_err 10
|
|
||||||
stub_err 11
|
|
||||||
stub_err 12
|
|
||||||
stub_err 13
|
|
||||||
stub_err 14
|
|
||||||
stub 15
|
|
||||||
stub 16
|
|
||||||
stub_err 17
|
|
||||||
stub 18
|
|
||||||
stub 19
|
|
||||||
stub 20
|
|
||||||
stub 21
|
|
||||||
stub 22
|
|
||||||
stub 23
|
|
||||||
stub 24
|
|
||||||
stub 25
|
|
||||||
stub 26
|
|
||||||
stub 27
|
|
||||||
stub 28
|
|
||||||
stub 29
|
|
||||||
stub_err 30
|
|
||||||
stub 31
|
|
||||||
/* Split the macro so we avoid a stack overflow. */
|
|
||||||
user_defined_stubs 32, 63
|
|
||||||
user_defined_stubs 64, 127
|
|
||||||
user_defined_stubs 128, 191
|
|
||||||
user_defined_stubs 192, 255
|
|
||||||
|
|
||||||
exception_common:
|
|
||||||
/*
|
|
||||||
* At this point, on x86-64, on the stack there is:
|
|
||||||
* 0(%rsp) rip
|
|
||||||
* 8(%rsp) cs
|
|
||||||
* 16(%rsp) rflags
|
|
||||||
* 24(%rsp) rsp
|
|
||||||
* 32(%rsp) ss
|
|
||||||
*
|
|
||||||
* This section sets up the exception stack.
|
|
||||||
* It saves the old stack pointer (rsp) to preserve RIP, CS, RFLAGS and SS.
|
|
||||||
* Then sets up the new stack pointer to point to the exception stack area.
|
|
||||||
*/
|
|
||||||
movq %rax, old_rax
|
|
||||||
movq %rcx, old_rcx
|
|
||||||
|
|
||||||
mov %rsp, %rax
|
|
||||||
movq exception_stack_end, %rsp
|
|
||||||
/*
|
|
||||||
* The `exception_state` struct is not 16-byte aligned.
|
|
||||||
* Push an extra 8 bytes to ensure the stack pointer
|
|
||||||
* is 16-byte aligned before calling exception_dispatch.
|
|
||||||
*/
|
|
||||||
push $0
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Push values onto the top of the exception stack to form an
|
|
||||||
* exception state structure.
|
|
||||||
*/
|
|
||||||
push vector
|
|
||||||
push error_code
|
|
||||||
|
|
||||||
/* push of the gs, fs, es, ds, ss and cs */
|
|
||||||
mov %gs, %rcx
|
|
||||||
movl %ecx, -4(%rsp) /* gs */
|
|
||||||
mov %fs, %rcx
|
|
||||||
movl %ecx, -8(%rsp) /* fs */
|
|
||||||
movl $0, -12(%rsp) /* es */
|
|
||||||
movl $0, -16(%rsp) /* ds */
|
|
||||||
movq 32(%rax), %rcx
|
|
||||||
movl %ecx, -20(%rsp) /* ss */
|
|
||||||
movq 8(%rax), %rcx
|
|
||||||
movl %ecx, -24(%rsp) /* cs */
|
|
||||||
sub $24, %rsp
|
|
||||||
|
|
||||||
push 16(%rax) /* rflags */
|
|
||||||
push (%rax) /* rip */
|
|
||||||
push %r15
|
|
||||||
push %r14
|
|
||||||
push %r13
|
|
||||||
push %r12
|
|
||||||
push %r11
|
|
||||||
push %r10
|
|
||||||
push %r9
|
|
||||||
push %r8
|
|
||||||
push 24(%rax) /* rsp */
|
|
||||||
push %rbp
|
|
||||||
push %rdi
|
|
||||||
push %rsi
|
|
||||||
push %rdx
|
|
||||||
push old_rcx /* rcx */
|
|
||||||
push %rbx
|
|
||||||
push old_rax /* rax */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Call the C exception handler. It will find the exception state
|
|
||||||
* using the exception_state global pointer. Not
|
|
||||||
* passing parameters means we don't have to worry about what ABI
|
|
||||||
* is being used.
|
|
||||||
*/
|
|
||||||
mov %rsp, exception_state
|
|
||||||
call exception_dispatch
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Restore state from the exception state structure, including any
|
|
||||||
* changes that might have been made.
|
|
||||||
*/
|
|
||||||
pop old_rax
|
|
||||||
pop %rbx
|
|
||||||
pop old_rcx
|
|
||||||
pop %rdx
|
|
||||||
pop %rsi
|
|
||||||
pop %rdi
|
|
||||||
pop %rbp
|
|
||||||
lea exception_stack, %rax
|
|
||||||
pop 24(%rax) /* rsp */
|
|
||||||
pop %r8
|
|
||||||
pop %r9
|
|
||||||
pop %r10
|
|
||||||
pop %r11
|
|
||||||
pop %r12
|
|
||||||
pop %r13
|
|
||||||
pop %r14
|
|
||||||
pop %r15
|
|
||||||
pop (%rax) /* rip */
|
|
||||||
pop 16(%rax) /* rflags */
|
|
||||||
|
|
||||||
/* pop of the gs, fs, es, ds, ss and cs */
|
|
||||||
movl (%rsp), %ecx
|
|
||||||
movq %rcx, 8(%rax) /* cs */
|
|
||||||
movl 4(%rsp), %ecx
|
|
||||||
movq %rcx, 32(%rax) /* ss */
|
|
||||||
movl 16(%rsp), %ecx
|
|
||||||
mov %rcx, %fs /* fs */
|
|
||||||
movl 20(%rsp), %ecx
|
|
||||||
mov %rcx, %gs /* gs */
|
|
||||||
|
|
||||||
mov %rax, %rsp
|
|
||||||
movq old_rax, %rax
|
|
||||||
movq old_rcx, %rcx
|
|
||||||
|
|
||||||
iretq
|
|
||||||
|
|
||||||
/*
|
|
||||||
* We need segment selectors for the IDT, so we need to know where things are
|
|
||||||
* in the GDT. We set one up here which is pretty standard and largely copied
|
|
||||||
* from coreboot.
|
|
||||||
*/
|
|
||||||
.align 16
|
|
||||||
gdt:
|
|
||||||
/* selgdt 0, unused */
|
|
||||||
.word 0x0000, 0x0000
|
|
||||||
.byte 0x00, 0x00, 0x00, 0x00
|
|
||||||
|
|
||||||
/* selgdt 8, unused */
|
|
||||||
.word 0x0000, 0x0000
|
|
||||||
.byte 0x00, 0x00, 0x00, 0x00
|
|
||||||
|
|
||||||
/* selgdt 0x10, flat 4GB code segment */
|
|
||||||
.word 0xffff, 0x0000
|
|
||||||
.byte 0x00, 0x9b, 0xcf, 0x00
|
|
||||||
|
|
||||||
/* selgdt 0x18, flat 4GB data segment */
|
|
||||||
.word 0xffff, 0x0000
|
|
||||||
.byte 0x00, 0x92, 0xcf, 0x00
|
|
||||||
|
|
||||||
/* selgdt 0x20, flat x64 code segment */
|
|
||||||
.word 0xffff, 0x0000
|
|
||||||
.byte 0x00, 0x9b, 0xaf, 0x00
|
|
||||||
gdt_end:
|
|
||||||
|
|
||||||
/* GDT pointer for use with lgdt */
|
|
||||||
.global gdt_ptr
|
|
||||||
gdt_ptr:
|
|
||||||
.word gdt_end - gdt - 1
|
|
||||||
.quad gdt
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Record the target and construct the actual entry at init time. This
|
|
||||||
* is necessary because the linker doesn't want to construct the entry
|
|
||||||
* for us.
|
|
||||||
*/
|
|
||||||
.macro interrupt_gate target
|
|
||||||
.word 0 /* patchable */
|
|
||||||
.word 0x20 /* Target code segment selector */
|
|
||||||
.word 0xee00 /* Present, Type 64-bit Interrupt Gate */
|
|
||||||
.word 0 /* patchable */
|
|
||||||
.quad \target /* patchable */
|
|
||||||
.endm
|
|
||||||
|
|
||||||
.altmacro
|
|
||||||
.macro user_defined_gates from, to
|
|
||||||
interrupt_gate exception_stub_\from
|
|
||||||
.if \to-\from
|
|
||||||
user_defined_gates %(from+1),\to
|
|
||||||
.endif
|
|
||||||
.endm
|
|
||||||
|
|
||||||
.align 16
|
|
||||||
.global idt
|
|
||||||
idt:
|
|
||||||
interrupt_gate exception_stub_0
|
|
||||||
interrupt_gate exception_stub_1
|
|
||||||
interrupt_gate exception_stub_2
|
|
||||||
interrupt_gate exception_stub_3
|
|
||||||
interrupt_gate exception_stub_4
|
|
||||||
interrupt_gate exception_stub_5
|
|
||||||
interrupt_gate exception_stub_6
|
|
||||||
interrupt_gate exception_stub_7
|
|
||||||
interrupt_gate exception_stub_8
|
|
||||||
interrupt_gate exception_stub_9
|
|
||||||
interrupt_gate exception_stub_10
|
|
||||||
interrupt_gate exception_stub_11
|
|
||||||
interrupt_gate exception_stub_12
|
|
||||||
interrupt_gate exception_stub_13
|
|
||||||
interrupt_gate exception_stub_14
|
|
||||||
interrupt_gate exception_stub_15
|
|
||||||
interrupt_gate exception_stub_16
|
|
||||||
interrupt_gate exception_stub_17
|
|
||||||
interrupt_gate exception_stub_18
|
|
||||||
interrupt_gate exception_stub_19
|
|
||||||
interrupt_gate exception_stub_20
|
|
||||||
interrupt_gate exception_stub_21
|
|
||||||
interrupt_gate exception_stub_22
|
|
||||||
interrupt_gate exception_stub_23
|
|
||||||
interrupt_gate exception_stub_24
|
|
||||||
interrupt_gate exception_stub_25
|
|
||||||
interrupt_gate exception_stub_26
|
|
||||||
interrupt_gate exception_stub_27
|
|
||||||
interrupt_gate exception_stub_28
|
|
||||||
interrupt_gate exception_stub_29
|
|
||||||
interrupt_gate exception_stub_30
|
|
||||||
interrupt_gate exception_stub_31
|
|
||||||
user_defined_gates 32, 63
|
|
||||||
user_defined_gates 64, 127
|
|
||||||
user_defined_gates 128, 191
|
|
||||||
user_defined_gates 192, 255
|
|
||||||
idt_end:
|
|
||||||
|
|
||||||
/* IDT pointer for use with lidt */
|
|
||||||
idt_ptr:
|
|
||||||
.word idt_end - idt - 1
|
|
||||||
.quad idt
|
|
||||||
|
|
||||||
.section .text.exception_init_asm
|
|
||||||
.globl exception_init_asm
|
|
||||||
.type exception_init_asm, @function
|
|
||||||
|
|
||||||
exception_init_asm:
|
|
||||||
/* Set up IDT entries */
|
|
||||||
mov $idt, %rax
|
|
||||||
1:
|
|
||||||
movq 8(%rax), %rdi
|
|
||||||
movw %di, (%rax) /* procedure entry point offset bits 0..15 */
|
|
||||||
shr $16, %rdi
|
|
||||||
movw %di, 6(%rax) /* procedure entry point offset bits 16..31 */
|
|
||||||
shr $16, %rdi
|
|
||||||
movl %edi, 8(%rax) /* procedure entry point offset bits 32..63 */
|
|
||||||
movl $0, 12(%rax) /* reserved */
|
|
||||||
add $16, %rax
|
|
||||||
cmp $idt_end, %rax
|
|
||||||
jne 1b
|
|
||||||
|
|
||||||
/* Load the IDT */
|
|
||||||
lidt idt_ptr
|
|
||||||
ret
|
|
@@ -15,7 +15,6 @@
|
|||||||
#include <exception.h>
|
#include <exception.h>
|
||||||
#include <gdb.h>
|
#include <gdb.h>
|
||||||
#include <libpayload.h>
|
#include <libpayload.h>
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
static const u8 type_to_signal[] = {
|
static const u8 type_to_signal[] = {
|
||||||
[EXC_DE] = GDB_SIGFPE,
|
[EXC_DE] = GDB_SIGFPE,
|
||||||
@@ -54,15 +53,12 @@ void gdb_arch_init(void)
|
|||||||
|
|
||||||
void gdb_arch_enter(void)
|
void gdb_arch_enter(void)
|
||||||
{
|
{
|
||||||
u8 *stack_pointer;
|
u32 *esp;
|
||||||
#if CONFIG(LP_ARCH_X86_64)
|
|
||||||
asm volatile ("movq %%rsp, %0" : "=r"(stack_pointer));
|
asm volatile ("mov %%esp, %0" : "=r"(esp) );
|
||||||
#else
|
|
||||||
asm volatile ("mov %%esp, %0" : "=r"(stack_pointer));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Avoid reentrant exceptions, just call the hook if in one already. */
|
/* Avoid reentrant exceptions, just call the hook if in one already. */
|
||||||
if (stack_pointer >= exception_stack && stack_pointer <= exception_stack_end)
|
if (esp >= exception_stack && esp <= exception_stack_end)
|
||||||
gdb_exception_hook(EXC_BP);
|
gdb_exception_hook(EXC_BP);
|
||||||
else
|
else
|
||||||
asm volatile ("int3");
|
asm volatile ("int3");
|
||||||
@@ -70,12 +66,12 @@ void gdb_arch_enter(void)
|
|||||||
|
|
||||||
int gdb_arch_set_single_step(int on)
|
int gdb_arch_set_single_step(int on)
|
||||||
{
|
{
|
||||||
const size_t tf_bit = 1 << 8;
|
const u32 tf_bit = 1 << 8;
|
||||||
|
|
||||||
if (on)
|
if (on)
|
||||||
exception_state->regs.reg_flags |= tf_bit;
|
exception_state->regs.eflags |= tf_bit;
|
||||||
else
|
else
|
||||||
exception_state->regs.reg_flags &= ~tf_bit;
|
exception_state->regs.eflags &= ~tf_bit;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
.code32
|
.code32
|
||||||
.global _entry
|
.global _entry
|
||||||
.section .text._entry
|
.text
|
||||||
.align 4
|
.align 4
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -38,14 +38,37 @@
|
|||||||
* change anything.
|
* change anything.
|
||||||
*/
|
*/
|
||||||
_entry:
|
_entry:
|
||||||
|
jmp _init
|
||||||
|
|
||||||
/* Add multiboot header and jump around it when building with multiboot support. */
|
.align 4
|
||||||
#if CONFIG(LP_MULTIBOOT)
|
|
||||||
#include "multiboot_header.inc"
|
#define MB_MAGIC 0x1BADB002
|
||||||
#endif
|
#define MB_FLAGS 0x00010003
|
||||||
|
|
||||||
|
mb_header:
|
||||||
|
.long MB_MAGIC
|
||||||
|
.long MB_FLAGS
|
||||||
|
.long -(MB_MAGIC + MB_FLAGS)
|
||||||
|
.long mb_header
|
||||||
|
.long _start
|
||||||
|
.long _edata
|
||||||
|
.long _end
|
||||||
|
.long _init
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function saves off the previous stack and switches us to our
|
||||||
|
* own execution environment.
|
||||||
|
*/
|
||||||
|
_init:
|
||||||
/* No interrupts, please. */
|
/* No interrupts, please. */
|
||||||
cli
|
cli
|
||||||
|
|
||||||
|
#if CONFIG(LP_MULTIBOOT)
|
||||||
|
/* Store EAX and EBX */
|
||||||
|
movl %eax, loader_eax
|
||||||
|
movl %ebx, loader_ebx
|
||||||
|
#endif
|
||||||
|
|
||||||
/* save pointer to coreboot tables */
|
/* save pointer to coreboot tables */
|
||||||
movl 4(%esp), %eax
|
movl 4(%esp), %eax
|
||||||
movl %eax, cb_header_ptr
|
movl %eax, cb_header_ptr
|
||||||
|
@@ -1,141 +0,0 @@
|
|||||||
/*
|
|
||||||
*
|
|
||||||
* Copyright (C) 2024 Google Inc.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* 3. The name of the author may not be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define IA32_EFER 0xC0000080
|
|
||||||
#define EFER_LME (1 << 8)
|
|
||||||
|
|
||||||
.code32
|
|
||||||
.global _entry
|
|
||||||
.section .text._entry
|
|
||||||
.align 4
|
|
||||||
|
|
||||||
/*
|
|
||||||
* WARNING: Critical Code Section - 32/64-bit Compatibility
|
|
||||||
* This code between `_entry` and `jnz _init64` is executed during system initialization.
|
|
||||||
* It MUST function correctly regardless of whether the system is booting in:
|
|
||||||
* - 32-bit protected mode
|
|
||||||
* - 64-bit long mode
|
|
||||||
* To achieve this, ONLY use instructions that produce identical binary output in both modes.
|
|
||||||
* Thoroughly test ALL modifications to this section in BOTH 32-bit and 64-bit boot
|
|
||||||
* environments.
|
|
||||||
*/
|
|
||||||
|
|
||||||
_entry:
|
|
||||||
|
|
||||||
/* Add multiboot header and jump around it when building with multiboot support. */
|
|
||||||
#if CONFIG(LP_MULTIBOOT)
|
|
||||||
#include "multiboot_header.inc"
|
|
||||||
#endif
|
|
||||||
/* No interrupts, please. */
|
|
||||||
cli
|
|
||||||
|
|
||||||
movl $IA32_EFER, %ecx
|
|
||||||
rdmsr
|
|
||||||
testl $EFER_LME, %eax
|
|
||||||
jnz _init64
|
|
||||||
|
|
||||||
lgdt %cs:gdt_ptr
|
|
||||||
|
|
||||||
/* save pointer to coreboot tables */
|
|
||||||
movl 4(%esp), %eax
|
|
||||||
/*
|
|
||||||
* NOTE: coreboot tables has passed over the top of the stack
|
|
||||||
* while calling in protected mode.
|
|
||||||
*/
|
|
||||||
movl %eax, cb_header_ptr
|
|
||||||
|
|
||||||
call init_page_table
|
|
||||||
movl $pm4le, %eax
|
|
||||||
|
|
||||||
/* load identity mapped page tables */
|
|
||||||
movl %eax, %cr3
|
|
||||||
|
|
||||||
/* enable PAE */
|
|
||||||
movl %cr4, %eax
|
|
||||||
btsl $5, %eax
|
|
||||||
movl %eax, %cr4
|
|
||||||
|
|
||||||
/* enable long mode */
|
|
||||||
movl $(IA32_EFER), %ecx
|
|
||||||
rdmsr
|
|
||||||
btsl $8, %eax
|
|
||||||
wrmsr
|
|
||||||
|
|
||||||
/* enable paging */
|
|
||||||
movl %cr0, %eax
|
|
||||||
btsl $31, %eax
|
|
||||||
movl %eax, %cr0
|
|
||||||
|
|
||||||
/* Jump to selgdt 0x20, flat x64 code segment */
|
|
||||||
ljmp $0x20, $_entry64
|
|
||||||
|
|
||||||
.code64
|
|
||||||
.align 16
|
|
||||||
_init64:
|
|
||||||
movabs $gdt_ptr, %rax
|
|
||||||
lgdt (%rax)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Note: The `cb_header_ptr` has passed as the first argument
|
|
||||||
* to the x86-64 calling convention.
|
|
||||||
*/
|
|
||||||
movq %rdi, cb_header_ptr
|
|
||||||
|
|
||||||
call init_page_table
|
|
||||||
movq $pm4le, %rax
|
|
||||||
|
|
||||||
/* load identity mapped page tables */
|
|
||||||
movq %rax, %cr3
|
|
||||||
|
|
||||||
_entry64:
|
|
||||||
/* Store current stack pointer and set up new stack. */
|
|
||||||
movq %rsp, %rax
|
|
||||||
movabs $_estack, %rsp
|
|
||||||
|
|
||||||
push %rax
|
|
||||||
|
|
||||||
fninit
|
|
||||||
movq %cr0, %rax
|
|
||||||
andq $0xFFFFFFFFFFFFFFFB, %rax /* clear EM */
|
|
||||||
orq $0x00000022, %rax /* set MP, NE */
|
|
||||||
movq %rax, %cr0
|
|
||||||
|
|
||||||
movq %cr4, %rax
|
|
||||||
orq $0x00000600, %rax /* set OSFXSR, OSXMMEXCPT */
|
|
||||||
movq %rax, %cr4
|
|
||||||
|
|
||||||
/* Let's rock. */
|
|
||||||
call start_main
|
|
||||||
|
|
||||||
/* %rax has the return value - pass it on unmolested */
|
|
||||||
_leave:
|
|
||||||
/* Restore old stack. */
|
|
||||||
pop %rsp
|
|
||||||
|
|
||||||
/* Return to the original context. */
|
|
||||||
ret
|
|
@@ -26,13 +26,8 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONFIG(LP_ARCH_X86_64)
|
|
||||||
OUTPUT_FORMAT(elf64-x86-64)
|
|
||||||
OUTPUT_ARCH(x86_64)
|
|
||||||
#else
|
|
||||||
OUTPUT_FORMAT(elf32-i386)
|
OUTPUT_FORMAT(elf32-i386)
|
||||||
OUTPUT_ARCH(i386)
|
OUTPUT_ARCH(i386)
|
||||||
#endif
|
|
||||||
|
|
||||||
ENTRY(_entry)
|
ENTRY(_entry)
|
||||||
|
|
||||||
|
@@ -1,54 +0,0 @@
|
|||||||
/*
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 Advanced Micro Devices, Inc.
|
|
||||||
* Copyright (C) 2017 Patrick Rudolph <siro@das-labor.org>
|
|
||||||
* Copyright (C) 2024 Google Inc.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* 3. The name of the author may not be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define MB_MAGIC 0x1BADB002
|
|
||||||
#define MB_FLAGS 0x00010003
|
|
||||||
|
|
||||||
jmp _init
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Note: The Multiboot standard requires Multiboot header to be placed
|
|
||||||
* below 0x2000 in the resulting image. See:
|
|
||||||
* http://www.gnu.org/software/grub/manual/multiboot/html_node/OS-image-format.html
|
|
||||||
*/
|
|
||||||
mb_header:
|
|
||||||
.long MB_MAGIC
|
|
||||||
.long MB_FLAGS
|
|
||||||
.long -(MB_MAGIC + MB_FLAGS)
|
|
||||||
.long mb_header
|
|
||||||
.long _start
|
|
||||||
.long _edata
|
|
||||||
.long _end
|
|
||||||
.long _init
|
|
||||||
|
|
||||||
_init:
|
|
||||||
/* Store EAX and EBX */
|
|
||||||
movl %eax, loader_eax
|
|
||||||
movl %ebx, loader_ebx
|
|
@@ -1,149 +0,0 @@
|
|||||||
/*
|
|
||||||
*
|
|
||||||
* Copyright 2024 Google Inc.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* 3. The name of the author may not be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* For reference see "AMD64 Architecture Programmer's Manual Volume 2",
|
|
||||||
* Document 24593-Rev. 3.31-July 2019 Chapter 5.3.4
|
|
||||||
*
|
|
||||||
* Page table attributes: WB, User+Supervisor, Present, Writeable, Accessed, Dirty
|
|
||||||
*/
|
|
||||||
|
|
||||||
.section .bss
|
|
||||||
#define _PRES (1ULL << 0)
|
|
||||||
#define _RW (1ULL << 1)
|
|
||||||
#define _US (1ULL << 2)
|
|
||||||
#define _A (1ULL << 5)
|
|
||||||
#define _D (1ULL << 6)
|
|
||||||
#define _PS (1ULL << 7)
|
|
||||||
|
|
||||||
.section .bss.pm4le
|
|
||||||
.global pm4le
|
|
||||||
.align 4096
|
|
||||||
pm4le:
|
|
||||||
.skip 8
|
|
||||||
|
|
||||||
.section .bss.main_page_table
|
|
||||||
.global main_page_table
|
|
||||||
.align 4096
|
|
||||||
main_page_table:
|
|
||||||
.skip 8192
|
|
||||||
|
|
||||||
.section .bss.extra_page_table
|
|
||||||
.global extra_page_table
|
|
||||||
.align 4096
|
|
||||||
extra_page_table:
|
|
||||||
.skip 32
|
|
||||||
|
|
||||||
/*
|
|
||||||
* WARNING: 32-bit/64-bit Mode Compatibility for Page Table Initialization
|
|
||||||
* This `init_page_table` function is designed to work in both 32-bit protected
|
|
||||||
* mode AND 64-bit long mode.
|
|
||||||
*
|
|
||||||
* Key Considerations:
|
|
||||||
* - Assembly Instructions: Use ONLY instructions that have the SAME binary representation
|
|
||||||
* in both 32-bit and 64-bit modes.
|
|
||||||
* - `.code64` Directive: We're compiling with `.code64` to ensure the assembler uses
|
|
||||||
* the correct 64-bit version of instructions (e.g., `inc`).
|
|
||||||
* - Register Notation:
|
|
||||||
* - Use 64-bit register names (like `%rsi`) for register-indirect addressing to avoid
|
|
||||||
* incorrect address size prefixes.
|
|
||||||
* - It's safe to use `%esi` with `mov` instructions, as the high 32 bits are zeroed
|
|
||||||
* in 64-bit mode.
|
|
||||||
*
|
|
||||||
* IMPORTANT:
|
|
||||||
* Thoroughly test ANY changes to this function in BOTH 32-bit and 64-bit boot environments.
|
|
||||||
*/
|
|
||||||
|
|
||||||
.code64
|
|
||||||
.section .text.init_page_table
|
|
||||||
.globl init_page_table
|
|
||||||
.type init_page_table, @function
|
|
||||||
|
|
||||||
init_page_table:
|
|
||||||
mov $0x80000001, %eax
|
|
||||||
cpuid
|
|
||||||
test $(1 << 26), %edx
|
|
||||||
jnz setup_1gb
|
|
||||||
|
|
||||||
setup_2mb:
|
|
||||||
mov $2048, %edi
|
|
||||||
mov $(_PRES + _RW + _US + _PS + _A + _D), %eax
|
|
||||||
mov $0, %ecx
|
|
||||||
mov $main_page_table, %esi
|
|
||||||
|
|
||||||
loop_2mb:
|
|
||||||
mov %eax, (%rsi, %rcx, 8)
|
|
||||||
mov $0, 4(%rsi, %rcx, 8)
|
|
||||||
add $0x200000, %eax
|
|
||||||
inc %ecx
|
|
||||||
cmp %edi, %ecx
|
|
||||||
jb loop_2mb
|
|
||||||
|
|
||||||
mov $4, %edi
|
|
||||||
mov $main_page_table, %eax
|
|
||||||
add $(_PRES + _RW + _US + _A), %eax
|
|
||||||
mov $0, %ecx
|
|
||||||
mov $extra_page_table, %esi
|
|
||||||
|
|
||||||
fill_extra_page_table:
|
|
||||||
mov %eax, (%rsi, %rcx, 8)
|
|
||||||
mov $0, 4(%rsi, %rcx, 8)
|
|
||||||
add $4096, %eax
|
|
||||||
inc %ecx
|
|
||||||
cmp %edi, %ecx
|
|
||||||
jb fill_extra_page_table
|
|
||||||
|
|
||||||
mov $extra_page_table, %eax
|
|
||||||
jmp leave
|
|
||||||
|
|
||||||
setup_1gb:
|
|
||||||
mov $512, %edi
|
|
||||||
mov $(_PRES + _RW + _US + _PS + _A + _D), %eax
|
|
||||||
mov $0, %ebx
|
|
||||||
mov $0, %ecx
|
|
||||||
mov $main_page_table, %esi
|
|
||||||
|
|
||||||
loop_1gb:
|
|
||||||
mov %eax, (%rsi, %rcx, 8)
|
|
||||||
mov %ebx, 4(%rsi, %rcx, 8)
|
|
||||||
add $0x40000000, %eax
|
|
||||||
cmp $0x40000000, %eax
|
|
||||||
ja no_overflow_1gb
|
|
||||||
inc %ebx
|
|
||||||
no_overflow_1gb:
|
|
||||||
inc %ecx
|
|
||||||
cmp %edi, %ecx
|
|
||||||
jb loop_1gb
|
|
||||||
|
|
||||||
mov $main_page_table, %eax
|
|
||||||
|
|
||||||
leave:
|
|
||||||
or $(_PRES + _RW + _US + _A), %eax
|
|
||||||
mov %eax, pm4le
|
|
||||||
|
|
||||||
ret
|
|
@@ -81,16 +81,6 @@ void *memcpy(void *dest, const void *src, size_t n)
|
|||||||
{
|
{
|
||||||
unsigned long d0, d1, d2;
|
unsigned long d0, d1, d2;
|
||||||
|
|
||||||
#if CONFIG(LP_ARCH_X86_64)
|
|
||||||
asm volatile(
|
|
||||||
"rep ; movsq\n\t"
|
|
||||||
"mov %4,%%rcx\n\t"
|
|
||||||
"rep ; movsb\n\t"
|
|
||||||
: "=&c" (d0), "=&D" (d1), "=&S" (d2)
|
|
||||||
: "0" (n >> 3), "g" (n & 7), "1" (dest), "2" (src)
|
|
||||||
: "memory"
|
|
||||||
);
|
|
||||||
#else
|
|
||||||
asm volatile(
|
asm volatile(
|
||||||
"rep ; movsl\n\t"
|
"rep ; movsl\n\t"
|
||||||
"movl %4,%%ecx\n\t"
|
"movl %4,%%ecx\n\t"
|
||||||
@@ -99,7 +89,6 @@ void *memcpy(void *dest, const void *src, size_t n)
|
|||||||
: "0" (n >> 2), "g" (n & 3), "1" (dest), "2" (src)
|
: "0" (n >> 2), "g" (n & 3), "1" (dest), "2" (src)
|
||||||
: "memory"
|
: "memory"
|
||||||
);
|
);
|
||||||
#endif
|
|
||||||
|
|
||||||
return dest;
|
return dest;
|
||||||
}
|
}
|
||||||
|
@@ -74,34 +74,34 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$CONFIG_LP_ARCH_ARM" = "y" ]; then
|
if [ "$CONFIG_LP_ARCH_ARM" = "y" ]; then
|
||||||
_ARCHDIR=arm
|
_ARCHINCDIR=$_INCDIR/arm
|
||||||
|
_ARCHLIBDIR=$_LIBDIR/arm
|
||||||
_ARCHEXTRA=""
|
_ARCHEXTRA=""
|
||||||
|
_ARCH=arm
|
||||||
fi
|
fi
|
||||||
if [ "$CONFIG_LP_ARCH_ARM64" = "y" ]; then
|
if [ "$CONFIG_LP_ARCH_ARM64" = "y" ]; then
|
||||||
_ARCHDIR=arm64
|
_ARCHINCDIR=$_INCDIR/arm64
|
||||||
|
_ARCHLIBDIR=$_LIBDIR/arm64
|
||||||
_ARCHEXTRA=""
|
_ARCHEXTRA=""
|
||||||
|
_ARCH=arm64
|
||||||
fi
|
fi
|
||||||
if [ "$CONFIG_LP_ARCH_X86" = "y" ]; then
|
if [ "$CONFIG_LP_ARCH_X86" = "y" ]; then
|
||||||
_ARCHDIR=x86
|
_ARCHINCDIR=$_INCDIR/x86
|
||||||
if [ "$CONFIG_LP_ARCH_X86_32" = "y" ]; then
|
_ARCHLIBDIR=$_LIBDIR/x86
|
||||||
_ARCHEXTRA="-m32 "
|
_ARCHEXTRA="-m32 "
|
||||||
else
|
_ARCH=x86
|
||||||
_ARCHEXTRA="-m64 "
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
if [ "$CONFIG_LP_ARCH_MOCK" = "y" ]; then
|
if [ "$CONFIG_LP_ARCH_MOCK" = "y" ]; then
|
||||||
_ARCHDIR=mock
|
_ARCHINCDIR=$_INCDIR/mock
|
||||||
|
_ARCHLIBDIR=$_LIBDIR/mock
|
||||||
_ARCHEXTRA=""
|
_ARCHEXTRA=""
|
||||||
|
_ARCH=mock
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_ARCHINCDIR=$_INCDIR/$_ARCHDIR
|
|
||||||
_ARCHLIBDIR=$_LIBDIR/$_ARCHDIR
|
|
||||||
|
|
||||||
if [ -f $_LIBDIR/libpayload.ldscript ]; then
|
if [ -f $_LIBDIR/libpayload.ldscript ]; then
|
||||||
_LDDIR=$_LIBDIR
|
_LDDIR=$_LIBDIR
|
||||||
elif [ -f $BASE/../arch/$_ARCHDIR/libpayload.ldscript ]; then
|
elif [ -f $BASE/../arch/$_ARCH/libpayload.ldscript ]; then
|
||||||
_LDDIR=$BASE/../arch/$_ARCHDIR
|
_LDDIR=$BASE/../arch/$_ARCH
|
||||||
fi
|
fi
|
||||||
# Host arch should youse default linker script
|
# Host arch should youse default linker script
|
||||||
if [ "$CONFIG_LP_ARCH_MOCK" = "y" ]; then
|
if [ "$CONFIG_LP_ARCH_MOCK" = "y" ]; then
|
||||||
@@ -126,10 +126,13 @@ CMDLINE=
|
|||||||
|
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case $1 in
|
case $1 in
|
||||||
-m32|-fno-stack-protector|-m64)
|
-m32|-fno-stack-protector)
|
||||||
shift
|
shift
|
||||||
continue
|
continue
|
||||||
;;
|
;;
|
||||||
|
-m64)
|
||||||
|
error "Invalid option --64 - only 32 bit architectures are supported"
|
||||||
|
;;
|
||||||
-c)
|
-c)
|
||||||
DOLINK=0
|
DOLINK=0
|
||||||
;;
|
;;
|
||||||
@@ -202,6 +205,14 @@ if [ $DOLINK -eq 0 ]; then
|
|||||||
$DEFAULT_CC $CMDLINE $_CFLAGS
|
$DEFAULT_CC $CMDLINE $_CFLAGS
|
||||||
else
|
else
|
||||||
_LIBGCC=`$DEFAULT_CC $_ARCHEXTRA -print-libgcc-file-name`
|
_LIBGCC=`$DEFAULT_CC $_ARCHEXTRA -print-libgcc-file-name`
|
||||||
|
if [ -f $_ARCHLIBDIR/head.o ]; then
|
||||||
|
HEAD_O=$_ARCHLIBDIR/head.o
|
||||||
|
elif [ -f $_OBJ/head.o ]; then
|
||||||
|
HEAD_O=$_OBJ/head.o
|
||||||
|
else
|
||||||
|
echo "Could not find head.o"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$CONFIG_LP_ARM64_A53_ERRATUM_843419" = y ] &&
|
if [ "$CONFIG_LP_ARM64_A53_ERRATUM_843419" = y ] &&
|
||||||
grep -q fix-cortex-a53-843419 $_XCOMPILE; then
|
grep -q fix-cortex-a53-843419 $_XCOMPILE; then
|
||||||
@@ -213,8 +224,13 @@ else
|
|||||||
_LDFLAGS="$_LDFLAGS -Wl,--defsym=CONFIG_LP_STACK_SIZE=$CONFIG_LP_STACK_SIZE"
|
_LDFLAGS="$_LDFLAGS -Wl,--defsym=CONFIG_LP_STACK_SIZE=$CONFIG_LP_STACK_SIZE"
|
||||||
|
|
||||||
if [ $DEBUGME -eq 1 ]; then
|
if [ $DEBUGME -eq 1 ]; then
|
||||||
echo "$DEFAULT_CC $_LDFLAGS $CMDLINE $_CFLAGS -lpayload $_LIBGCC"
|
echo "$DEFAULT_CC $_LDFLAGS $HEAD_O $CMDLINE $_CFLAGS -lpayload $_LIBGCC"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$DEFAULT_CC $_LDFLAGS $CMDLINE $_CFLAGS -lpayload -xnone $_LIBGCC
|
# Note: $_ARCHLIBDIR/head.o must be the first object being linked, because it
|
||||||
|
# contains a Multiboot header. The Multiboot standard requires this
|
||||||
|
# header to be placed below 0x2000 in the resulting image. See:
|
||||||
|
# http://www.gnu.org/software/grub/manual/multiboot/html_node/OS-image-format.html
|
||||||
|
|
||||||
|
$DEFAULT_CC $_LDFLAGS $HEAD_O $CMDLINE $_CFLAGS -lpayload -xnone $_LIBGCC
|
||||||
fi
|
fi
|
||||||
|
@@ -66,7 +66,7 @@ static u8 *ahci_prdbuf_init(ahci_dev_t *const dev,
|
|||||||
u8 *const user_buf, const size_t len,
|
u8 *const user_buf, const size_t len,
|
||||||
const int out)
|
const int out)
|
||||||
{
|
{
|
||||||
if ((uintptr_t)user_buf & 1) {
|
if ((u32)user_buf & 1) {
|
||||||
printf("ahci: Odd buffer pointer (%p).\n", user_buf);
|
printf("ahci: Odd buffer pointer (%p).\n", user_buf);
|
||||||
if (dev->buf) /* orphaned buffer */
|
if (dev->buf) /* orphaned buffer */
|
||||||
free(dev->buf - *(dev->buf - 1));
|
free(dev->buf - *(dev->buf - 1));
|
||||||
@@ -76,7 +76,7 @@ static u8 *ahci_prdbuf_init(ahci_dev_t *const dev,
|
|||||||
dev->user_buf = user_buf;
|
dev->user_buf = user_buf;
|
||||||
dev->write_back = !out;
|
dev->write_back = !out;
|
||||||
dev->buflen = len;
|
dev->buflen = len;
|
||||||
if ((uintptr_t)dev->buf & 1) {
|
if ((u32)dev->buf & 1) {
|
||||||
dev->buf[0] = 1;
|
dev->buf[0] = 1;
|
||||||
dev->buf += 1;
|
dev->buf += 1;
|
||||||
} else {
|
} else {
|
||||||
|
@@ -274,7 +274,7 @@ uhci_stop(hci_t *controller)
|
|||||||
|
|
||||||
#define UHCI_SLEEP_TIME_US 30
|
#define UHCI_SLEEP_TIME_US 30
|
||||||
#define UHCI_TIMEOUT (USB_MAX_PROCESSING_TIME_US / UHCI_SLEEP_TIME_US)
|
#define UHCI_TIMEOUT (USB_MAX_PROCESSING_TIME_US / UHCI_SLEEP_TIME_US)
|
||||||
#define GET_TD(x) ((void *)(((unsigned long)(x))&~0xf))
|
#define GET_TD(x) ((void*)(((unsigned int)(x))&~0xf))
|
||||||
|
|
||||||
static td_t *
|
static td_t *
|
||||||
wait_for_completed_qh(hci_t *controller, qh_t *qh)
|
wait_for_completed_qh(hci_t *controller, qh_t *qh)
|
||||||
|
@@ -96,16 +96,6 @@ static inline uint32_t be32dec(const void *pp)
|
|||||||
(uint32_t)(p[2] << 8) | p[3]);
|
(uint32_t)(p[2] << 8) | p[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint64_t be64dec(const void *pp)
|
|
||||||
{
|
|
||||||
uint8_t const *p = (uint8_t const *)pp;
|
|
||||||
|
|
||||||
return (((uint64_t)p[0] << 56) | ((uint64_t)p[1] << 48) |
|
|
||||||
((uint64_t)p[2] << 40) | ((uint64_t)p[3] << 32) |
|
|
||||||
((uint64_t)p[4] << 24) | ((uint64_t)p[5] << 16) |
|
|
||||||
((uint64_t)p[6] << 8) | p[7]);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline uint16_t le16dec(const void *pp)
|
static inline uint16_t le16dec(const void *pp)
|
||||||
{
|
{
|
||||||
uint8_t const *p = (uint8_t const *)pp;
|
uint8_t const *p = (uint8_t const *)pp;
|
||||||
@@ -121,16 +111,6 @@ static inline uint32_t le32dec(const void *pp)
|
|||||||
(uint32_t)(p[1] << 8) | p[0]);
|
(uint32_t)(p[1] << 8) | p[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint64_t le64dec(const void *pp)
|
|
||||||
{
|
|
||||||
uint8_t const *p = (uint8_t const *)pp;
|
|
||||||
|
|
||||||
return (((uint64_t)p[7] << 56) | ((uint64_t)p[6] << 48) |
|
|
||||||
((uint64_t)p[5] << 40) | ((uint64_t)p[4] << 32) |
|
|
||||||
((uint64_t)p[3] << 24) | ((uint64_t)p[2] << 16) |
|
|
||||||
((uint64_t)p[1] << 8) | p[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void bebitenc(void *pp, uint32_t u, uint8_t b)
|
static inline void bebitenc(void *pp, uint32_t u, uint8_t b)
|
||||||
{
|
{
|
||||||
uint8_t *p = (uint8_t *)pp;
|
uint8_t *p = (uint8_t *)pp;
|
||||||
@@ -150,11 +130,6 @@ static inline void be32enc(void *pp, uint32_t u)
|
|||||||
bebitenc(pp, u, 4);
|
bebitenc(pp, u, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void be64enc(void *pp, uint32_t u)
|
|
||||||
{
|
|
||||||
bebitenc(pp, u, 8);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void lebitenc(void *pp, uint32_t u, uint8_t b)
|
static inline void lebitenc(void *pp, uint32_t u, uint8_t b)
|
||||||
{
|
{
|
||||||
uint8_t *p = (uint8_t *)pp;
|
uint8_t *p = (uint8_t *)pp;
|
||||||
@@ -174,11 +149,6 @@ static inline void le32enc(void *pp, uint32_t u)
|
|||||||
lebitenc(pp, u, 4);
|
lebitenc(pp, u, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void le64enc(void *pp, uint32_t u)
|
|
||||||
{
|
|
||||||
lebitenc(pp, u, 8);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Deprecated names (not in glibc / BSD) */
|
/* Deprecated names (not in glibc / BSD) */
|
||||||
#define htobew(in) htobe16(in)
|
#define htobew(in) htobe16(in)
|
||||||
#define htobel(in) htobe32(in)
|
#define htobel(in) htobe32(in)
|
||||||
|
@@ -54,12 +54,4 @@ typedef long ptrdiff_t;
|
|||||||
#define UINT32_MAX (4294967295U)
|
#define UINT32_MAX (4294967295U)
|
||||||
#define UINT64_MAX (18446744073709551615ULL)
|
#define UINT64_MAX (18446744073709551615ULL)
|
||||||
|
|
||||||
#ifndef SIZE_MAX
|
|
||||||
#ifdef __SIZE_MAX__
|
|
||||||
#define SIZE_MAX __SIZE_MAX__
|
|
||||||
#else
|
|
||||||
#define SIZE_MAX (~(size_t)0)
|
|
||||||
#endif /* __SIZE_MAX__ */
|
|
||||||
#endif /* SIZE_MAX */
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -29,7 +29,6 @@
|
|||||||
#ifndef _STRING_H
|
#ifndef _STRING_H
|
||||||
#define _STRING_H
|
#define _STRING_H
|
||||||
|
|
||||||
#include <commonlib/bsd/string.h>
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -47,12 +46,16 @@ int memcmp(const void *s1, const void *s2, size_t len);
|
|||||||
* @defgroup string String functions
|
* @defgroup string String functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
size_t strnlen(const char *str, size_t maxlen);
|
||||||
|
size_t strlen(const char *str);
|
||||||
int strcmp(const char *s1, const char *s2);
|
int strcmp(const char *s1, const char *s2);
|
||||||
int strncmp(const char *s1, const char *s2, size_t maxlen);
|
int strncmp(const char *s1, const char *s2, size_t maxlen);
|
||||||
int strcasecmp(const char *s1, const char *s2);
|
int strcasecmp(const char *s1, const char *s2);
|
||||||
int strncasecmp(const char *s1, const char *s2, size_t maxlen);
|
int strncasecmp(const char *s1, const char *s2, size_t maxlen);
|
||||||
char *strncpy(char *d, const char *s, size_t n);
|
char *strncpy(char *d, const char *s, size_t n);
|
||||||
char *strcpy(char *d, const char *s);
|
char *strcpy(char *d, const char *s);
|
||||||
|
char *strncat(char *d, const char *s, size_t n);
|
||||||
|
char *strcat(char *d, const char *s);
|
||||||
char *strchr(const char *s, int c);
|
char *strchr(const char *s, int c);
|
||||||
char *strrchr(const char *s, int c);
|
char *strrchr(const char *s, int c);
|
||||||
char *strdup(const char *s);
|
char *strdup(const char *s);
|
||||||
|
@@ -114,8 +114,6 @@ struct sysinfo_t {
|
|||||||
uintptr_t acpi_cnvs;
|
uintptr_t acpi_cnvs;
|
||||||
uintptr_t acpi_rsdp;
|
uintptr_t acpi_rsdp;
|
||||||
uintptr_t smbios;
|
uintptr_t smbios;
|
||||||
uintptr_t cse_bp_info;
|
|
||||||
uintptr_t cse_info;
|
|
||||||
|
|
||||||
#define UNDEFINED_STRAPPING_ID (~0)
|
#define UNDEFINED_STRAPPING_ID (~0)
|
||||||
#define UNDEFINED_FW_CONFIG ~((uint64_t)0)
|
#define UNDEFINED_FW_CONFIG ~((uint64_t)0)
|
||||||
|
@@ -29,7 +29,6 @@
|
|||||||
#ifndef _ARCH_EXCEPTION_H
|
#ifndef _ARCH_EXCEPTION_H
|
||||||
#define _ARCH_EXCEPTION_H
|
#define _ARCH_EXCEPTION_H
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
void exception_init_asm(void);
|
void exception_init_asm(void);
|
||||||
@@ -39,28 +38,20 @@ void disable_interrupts(void);
|
|||||||
/** Returns 1 if interrupts are enabled. */
|
/** Returns 1 if interrupts are enabled. */
|
||||||
int interrupts_enabled(void);
|
int interrupts_enabled(void);
|
||||||
|
|
||||||
#if CONFIG(LP_ARCH_X86_64)
|
struct exception_state
|
||||||
struct exception_state {
|
{
|
||||||
/* Careful: x86/gdb.c currently relies on the size and order of regs. */
|
/* Careful: x86/gdb.c currently relies on the size and order of regs. */
|
||||||
struct {
|
struct {
|
||||||
size_t reg_ax;
|
u32 eax;
|
||||||
size_t reg_bx;
|
u32 ecx;
|
||||||
size_t reg_cx;
|
u32 edx;
|
||||||
size_t reg_dx;
|
u32 ebx;
|
||||||
size_t reg_si;
|
u32 esp;
|
||||||
size_t reg_di;
|
u32 ebp;
|
||||||
size_t reg_bp;
|
u32 esi;
|
||||||
size_t reg_sp;
|
u32 edi;
|
||||||
size_t reg_r8;
|
u32 eip;
|
||||||
size_t reg_r9;
|
u32 eflags;
|
||||||
size_t reg_r10;
|
|
||||||
size_t reg_r11;
|
|
||||||
size_t reg_r12;
|
|
||||||
size_t reg_r13;
|
|
||||||
size_t reg_r14;
|
|
||||||
size_t reg_r15;
|
|
||||||
size_t reg_ip;
|
|
||||||
size_t reg_flags;
|
|
||||||
u32 cs;
|
u32 cs;
|
||||||
u32 ss;
|
u32 ss;
|
||||||
u32 ds;
|
u32 ds;
|
||||||
@@ -68,39 +59,13 @@ struct exception_state {
|
|||||||
u32 fs;
|
u32 fs;
|
||||||
u32 gs;
|
u32 gs;
|
||||||
} regs;
|
} regs;
|
||||||
size_t error_code;
|
u32 error_code;
|
||||||
size_t vector;
|
u32 vector;
|
||||||
} __packed;
|
} __packed;
|
||||||
#else
|
|
||||||
struct exception_state {
|
|
||||||
/* Careful: x86/gdb.c currently relies on the size and order of regs. */
|
|
||||||
struct {
|
|
||||||
size_t reg_ax;
|
|
||||||
size_t reg_cx;
|
|
||||||
size_t reg_dx;
|
|
||||||
size_t reg_bx;
|
|
||||||
size_t reg_sp;
|
|
||||||
size_t reg_bp;
|
|
||||||
size_t reg_si;
|
|
||||||
size_t reg_di;
|
|
||||||
size_t reg_ip;
|
|
||||||
size_t reg_flags;
|
|
||||||
u32 cs;
|
|
||||||
u32 ss;
|
|
||||||
u32 ds;
|
|
||||||
u32 es;
|
|
||||||
u32 fs;
|
|
||||||
u32 gs;
|
|
||||||
} regs;
|
|
||||||
size_t error_code;
|
|
||||||
size_t vector;
|
|
||||||
} __packed;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern struct exception_state *exception_state;
|
extern struct exception_state *exception_state;
|
||||||
|
|
||||||
extern u8 exception_stack[];
|
extern u32 exception_stack[];
|
||||||
extern u8 *exception_stack_end;
|
extern u32 *exception_stack_end;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
EXC_DE = 0, /* Divide by zero */
|
EXC_DE = 0, /* Divide by zero */
|
||||||
|
@@ -33,9 +33,9 @@
|
|||||||
|
|
||||||
static u64 rdtsc(void)
|
static u64 rdtsc(void)
|
||||||
{
|
{
|
||||||
u32 lo, hi;
|
u64 val;
|
||||||
__asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
|
__asm__ __volatile__ ("rdtsc" : "=A" (val));
|
||||||
return (u64)hi << 32 | lo;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
libc-$(CONFIG_LP_LIBC) += malloc.c printf.c console.c string.c
|
libc-$(CONFIG_LP_LIBC) += malloc.c printf.c console.c string.c
|
||||||
libc-$(CONFIG_LP_LIBC) += memory.c ctype.c lib.c libgcc.c
|
libc-$(CONFIG_LP_LIBC) += memory.c ctype.c lib.c libgcc.c
|
||||||
libc-$(CONFIG_LP_LIBC) += rand.c time.c
|
libc-$(CONFIG_LP_LIBC) += rand.c time.c exec.c
|
||||||
libc-$(CONFIG_LP_LIBC) += readline.c getopt_long.c sysinfo.c
|
libc-$(CONFIG_LP_LIBC) += readline.c getopt_long.c sysinfo.c
|
||||||
libc-$(CONFIG_LP_LIBC) += args.c
|
libc-$(CONFIG_LP_LIBC) += args.c
|
||||||
libc-$(CONFIG_LP_LIBC) += strlcpy.c
|
libc-$(CONFIG_LP_LIBC) += strlcpy.c
|
||||||
@@ -47,9 +47,7 @@ ifeq ($(CONFIG_LP_LIBC),y)
|
|||||||
libc-srcs += $(coreboottop)/src/commonlib/bsd/elog.c
|
libc-srcs += $(coreboottop)/src/commonlib/bsd/elog.c
|
||||||
libc-srcs += $(coreboottop)/src/commonlib/bsd/gcd.c
|
libc-srcs += $(coreboottop)/src/commonlib/bsd/gcd.c
|
||||||
libc-srcs += $(coreboottop)/src/commonlib/bsd/ipchksum.c
|
libc-srcs += $(coreboottop)/src/commonlib/bsd/ipchksum.c
|
||||||
libc-srcs += $(coreboottop)/src/commonlib/bsd/string.c
|
|
||||||
ifeq ($(CONFIG_LP_GPL),y)
|
ifeq ($(CONFIG_LP_GPL),y)
|
||||||
libc-srcs += $(coreboottop)/src/commonlib/device_tree.c
|
|
||||||
libc-srcs += $(coreboottop)/src/commonlib/list.c
|
libc-srcs += $(coreboottop)/src/commonlib/list.c
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
@@ -262,12 +262,6 @@ static void cb_parse_cbmem_entry(void *ptr, struct sysinfo_t *info)
|
|||||||
case CBMEM_ID_MEM_CHIP_INFO:
|
case CBMEM_ID_MEM_CHIP_INFO:
|
||||||
info->mem_chip_base = cbmem_entry->address;
|
info->mem_chip_base = cbmem_entry->address;
|
||||||
break;
|
break;
|
||||||
case CBMEM_ID_CSE_BP_INFO:
|
|
||||||
info->cse_bp_info = cbmem_entry->address;
|
|
||||||
break;
|
|
||||||
case CBMEM_ID_CSE_INFO:
|
|
||||||
info->cse_info = cbmem_entry->address;
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -29,10 +29,8 @@
|
|||||||
#include <libpayload-config.h>
|
#include <libpayload-config.h>
|
||||||
#include <libpayload.h>
|
#include <libpayload.h>
|
||||||
|
|
||||||
#if CONFIG(LP_ARCH_X86_32)
|
#if CONFIG(LP_ARCH_X86)
|
||||||
extern void i386_do_exec(long addr, int argc, char **argv, int *ret);
|
extern void i386_do_exec(long addr, int argc, char **argv, int *ret);
|
||||||
#else
|
|
||||||
#error "exec does not currently support x86_64."
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -47,7 +45,7 @@ int exec(long addr, int argc, char **argv)
|
|||||||
{
|
{
|
||||||
int val = -1;
|
int val = -1;
|
||||||
|
|
||||||
#if CONFIG(LP_ARCH_X86_32)
|
#if CONFIG(LP_ARCH_X86)
|
||||||
i386_do_exec(addr, argc, argv, &val);
|
i386_do_exec(addr, argc, argv, &val);
|
||||||
#endif
|
#endif
|
||||||
return val;
|
return val;
|
@@ -35,6 +35,50 @@
|
|||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate the length of a fixed-size string.
|
||||||
|
*
|
||||||
|
* @param str The input string.
|
||||||
|
* @param maxlen Return at most maxlen characters as length of the string.
|
||||||
|
* @return The length of the string, not including the final NUL character.
|
||||||
|
* The maximum length returned is maxlen.
|
||||||
|
*/
|
||||||
|
size_t strnlen(const char *str, size_t maxlen)
|
||||||
|
{
|
||||||
|
size_t len = 0;
|
||||||
|
|
||||||
|
/* NULL and empty strings have length 0. */
|
||||||
|
if (!str)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* Loop until we find a NUL character, or maxlen is reached. */
|
||||||
|
while ((*str++ != '\0') && (len < maxlen))
|
||||||
|
len++;
|
||||||
|
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate the length of a string.
|
||||||
|
*
|
||||||
|
* @param str The input string.
|
||||||
|
* @return The length of the string, not including the final NUL character.
|
||||||
|
*/
|
||||||
|
size_t strlen(const char *str)
|
||||||
|
{
|
||||||
|
size_t len = 0;
|
||||||
|
|
||||||
|
/* NULL and empty strings have length 0. */
|
||||||
|
if (!str)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* Loop until we find a NUL character. */
|
||||||
|
while (*str++ != '\0')
|
||||||
|
len++;
|
||||||
|
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compare two strings.
|
* Compare two strings.
|
||||||
*
|
*
|
||||||
@@ -152,6 +196,46 @@ char *strcpy(char *d, const char *s)
|
|||||||
return strncpy(d, s, strlen(s) + 1);
|
return strncpy(d, s, strlen(s) + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Concatenates two strings
|
||||||
|
*
|
||||||
|
* @param d The destination string.
|
||||||
|
* @param s The source string.
|
||||||
|
* @return A pointer to the destination string.
|
||||||
|
*/
|
||||||
|
char *strcat(char *d, const char *s)
|
||||||
|
{
|
||||||
|
char *p = d + strlen(d);
|
||||||
|
size_t sl = strlen(s);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < sl; i++)
|
||||||
|
p[i] = s[i];
|
||||||
|
|
||||||
|
p[sl] = '\0';
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Concatenates two strings with a maximum length.
|
||||||
|
*
|
||||||
|
* @param d The destination string.
|
||||||
|
* @param s The source string.
|
||||||
|
* @param n Not more than n characters from s will be appended to d.
|
||||||
|
* @return A pointer to the destination string.
|
||||||
|
*/
|
||||||
|
char *strncat(char *d, const char *s, size_t n)
|
||||||
|
{
|
||||||
|
char *p = d + strlen(d);
|
||||||
|
size_t sl = strlen(s);
|
||||||
|
size_t max = n > sl ? sl : n;
|
||||||
|
|
||||||
|
for (size_t i = 0; i < max; i++)
|
||||||
|
p[i] = s[i];
|
||||||
|
|
||||||
|
p[max] = '\0';
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Concatenates two strings with a maximum length.
|
* Concatenates two strings with a maximum length.
|
||||||
*
|
*
|
||||||
|
@@ -15,8 +15,7 @@ vboot-fixup-includes = $(filter -I$(coreboottop)/%, $(1)) \
|
|||||||
$(filter-out -I$(coreboottop)/%,$(1)))))
|
$(filter-out -I$(coreboottop)/%,$(1)))))
|
||||||
|
|
||||||
VBOOT_FIRMWARE_ARCH-$(CONFIG_LP_ARCH_ARM) := arm
|
VBOOT_FIRMWARE_ARCH-$(CONFIG_LP_ARCH_ARM) := arm
|
||||||
VBOOT_FIRMWARE_ARCH-$(CONFIG_LP_ARCH_X86_32) := x86
|
VBOOT_FIRMWARE_ARCH-$(CONFIG_LP_ARCH_X86) := x86
|
||||||
VBOOT_FIRMWARE_ARCH-$(CONFIG_LP_ARCH_X86_64) := x86_64
|
|
||||||
VBOOT_FIRMWARE_ARCH-$(CONFIG_LP_ARCH_ARM64) := arm64
|
VBOOT_FIRMWARE_ARCH-$(CONFIG_LP_ARCH_ARM64) := arm64
|
||||||
|
|
||||||
ifneq ($(CONFIG_LP_ARCH_MOCK),)
|
ifneq ($(CONFIG_LP_ARCH_MOCK),)
|
||||||
|
@@ -399,18 +399,6 @@
|
|||||||
"ranksPerChannel": 1,
|
"ranksPerChannel": 1,
|
||||||
"speedMbps": 4267
|
"speedMbps": 4267
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "SDVB8D8A34XGCL3N3T",
|
|
||||||
"attribs": {
|
|
||||||
"densityPerChannelGb": 8,
|
|
||||||
"banks": 8,
|
|
||||||
"channelsPerDie": 2,
|
|
||||||
"diesPerPackage": 2,
|
|
||||||
"bitWidthPerChannel": 16,
|
|
||||||
"ranksPerChannel": 1,
|
|
||||||
"speedMbps": 4267
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@@ -34,4 +34,3 @@ H54G68CYRBX248,spd-2.hex
|
|||||||
K4UCE3Q4AB-MGCL,spd-2.hex
|
K4UCE3Q4AB-MGCL,spd-2.hex
|
||||||
CXDB4ABAM-ML,spd-8.hex
|
CXDB4ABAM-ML,spd-8.hex
|
||||||
CXDB4CBAM-ML-A,spd-8.hex
|
CXDB4CBAM-ML-A,spd-8.hex
|
||||||
SDVB8D8A34XGCL3N3T,spd-1.hex
|
|
||||||
|
@@ -34,4 +34,3 @@ H54G68CYRBX248,spd-2.hex
|
|||||||
K4UCE3Q4AB-MGCL,spd-2.hex
|
K4UCE3Q4AB-MGCL,spd-2.hex
|
||||||
CXDB4ABAM-ML,spd-11.hex
|
CXDB4ABAM-ML,spd-11.hex
|
||||||
CXDB4CBAM-ML-A,spd-11.hex
|
CXDB4CBAM-ML-A,spd-11.hex
|
||||||
SDVB8D8A34XGCL3N3T,spd-5.hex
|
|
||||||
|
@@ -240,28 +240,6 @@
|
|||||||
"speedMbps": 8533,
|
"speedMbps": 8533,
|
||||||
"lp5x": true
|
"lp5x": true
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "MT62F1G32D2DS-023 WT:C",
|
|
||||||
"attribs": {
|
|
||||||
"densityPerDieGb": 16,
|
|
||||||
"diesPerPackage": 2,
|
|
||||||
"bitWidthPerChannel": 16,
|
|
||||||
"ranksPerChannel": 1,
|
|
||||||
"speedMbps": 8533,
|
|
||||||
"lp5x": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "K3KL8L80DM-MGCU",
|
|
||||||
"attribs": {
|
|
||||||
"densityPerDieGb": 16,
|
|
||||||
"diesPerPackage": 2,
|
|
||||||
"bitWidthPerChannel": 16,
|
|
||||||
"ranksPerChannel": 1,
|
|
||||||
"speedMbps": 8533,
|
|
||||||
"lp5x": true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user