Compare commits

..

1 Commits

Author SHA1 Message Date
Tim Crawford
dfc6451830 soc/intel: Add config to use S3 over S0ix
When S0ix support is enabled it is always advertised to the OS that it
is the preferred suspend method via the FADT feature flag. This config
prevents the feature flag from being set, indicating to the OS that S3
suspend is the preferred sleep method.

Test: `/sys/power/mem_sleep` defaults to "deep" on system76/darp8.

Change-Id: Ife98166338c5457fb2c7dad81a30e54f487495f6
Signed-off-by: Tim Crawford <tcrawford@system76.com>
2023-12-20 15:49:14 -07:00
6816 changed files with 38907 additions and 391919 deletions

View File

@@ -1,4 +1,4 @@
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0
# #
# clang-format configuration file. Intended for clang-format >= 16. # clang-format configuration file. Intended for clang-format >= 16.
# #

1
.gitignore vendored
View File

@@ -9,7 +9,6 @@ defconfig
build/ build/
coreboot-builds/ coreboot-builds/
coreboot-builds*/ coreboot-builds*/
generated/
site-local site-local

37
.gitmodules vendored
View File

@@ -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

View File

@@ -2,4 +2,4 @@
host=review.coreboot.org host=review.coreboot.org
port=29418 port=29418
project=coreboot project=coreboot
defaultbranch=main defaultbranch=master

2
3rdparty/blobs vendored

1
3rdparty/chromeec vendored Submodule

Submodule 3rdparty/chromeec added at e486b388a7

2
3rdparty/fsp vendored

2
3rdparty/vboot vendored

34
AUTHORS
View File

@@ -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
@@ -224,7 +214,7 @@ Free Software Foundation, Inc.
Freescale Semiconductor, Inc. Freescale Semiconductor, Inc.
Furquan Shaikh Furquan Shaikh
Gaggery Tsai Gaggery Tsai
Gang C Chen Gang C Chen
Garmin Chang Garmin Chang
Gary Jennejohn Gary Jennejohn
George Trudeau George Trudeau
@@ -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
@@ -769,14 +745,12 @@ Wojciech Macek
Wolfgang Denk 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
小田喜陽彦 小田喜陽彦
忧郁沙茶
陳建宏 陳建宏

View File

@@ -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"

View File

@@ -1,20 +1,60 @@
## SPDX-License-Identifier: GPL-2.0-only ## SPDX-License-Identifier: GPL-2.0-only
# Minimal makefile for Sphinx documentation # Makefile for Sphinx documentation
# #
# You can set these variables from the command line, and also # You can set these variables from the command line.
# from the environment for the first two. SPHINXOPTS ?=
SPHINXOPTS ?= SPHINXBUILD = sphinx-build
SPHINXBUILD ?= sphinx-build SPHINXAUTOBUILD = sphinx-autobuild
SPHINXAUTOBUILD = sphinx-autobuild PAPER =
SOURCEDIR = . BUILDDIR = _build
BUILDDIR = _build
# Put it first so that "make" without argument is like "make help". # Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help
help: help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) @echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " applehelp to make an Apple Help Book"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " epub3 to make an epub3"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
@echo " coverage to run coverage check of the documentation (if enabled)"
@echo " dummy to check syntax errors of document sources"
.PHONY: help Makefile.sphinx .PHONY: clean
clean:
rm -rf $(BUILDDIR)
.PHONY: html
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
.PHONY: livehtml .PHONY: livehtml
livehtml: livehtml:
@@ -23,7 +63,172 @@ livehtml:
@echo @echo
$(SPHINXAUTOBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR) $(SPHINXAUTOBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)
# Catch-all target: route all unknown targets to Sphinx using the new .PHONY: dirhtml
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). dirhtml:
%: Makefile.sphinx $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) @echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
.PHONY: singlehtml
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
.PHONY: pickle
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
.PHONY: json
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
.PHONY: htmlhelp
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
.PHONY: qthelp
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/coreboot.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/coreboot.qhc"
.PHONY: applehelp
applehelp:
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
@echo
@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
@echo "N.B. You won't be able to view it unless you put it in" \
"~/Library/Documentation/Help or install it in your application" \
"bundle."
.PHONY: devhelp
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/coreboot"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/coreboot"
@echo "# devhelp"
.PHONY: epub
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
.PHONY: epub3
epub3:
$(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3
@echo
@echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3."
.PHONY: latex
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
.PHONY: latexpdf
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
.PHONY: latexpdfja
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
.PHONY: text
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
.PHONY: man
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
.PHONY: texinfo
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
.PHONY: info
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
.PHONY: gettext
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
.PHONY: changes
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
.PHONY: linkcheck
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
.PHONY: doctest
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
.PHONY: coverage
coverage:
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
@echo "Testing of coverage in the sources finished, look at the " \
"results in $(BUILDDIR)/coverage/python.txt."
.PHONY: xml
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
.PHONY: pseudoxml
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
.PHONY: dummy
dummy:
$(SPHINXBUILD) -b dummy $(ALLSPHINXOPTS) $(BUILDDIR)/dummy
@echo
@echo "Build finished. Dummy builder generates no files."

View File

@@ -5,34 +5,18 @@ backwards support for ACPI 1.0 and is only compatible to ACPI version 2.0 and
upwards. upwards.
```{toctree} - [SSDT UID generation](uid.md)
:maxdepth: 1
SSDT UID generation <uid.md>
```
## GPIO ## GPIO
```{toctree} - [GPIO toggling in ACPI AML](gpio.md)
:maxdepth: 1
GPIO toggling in ACPI AML <gpio.md>
```
## Windows-specific ACPI documentation ## Windows-specific ACPI documentation
```{toctree} - [Windows-specific documentation](windows.md)
:maxdepth: 1
Windows-specific documentation <windows.md>
```
## ACPI specification - Useful links ## ACPI specification - Useful links
```{toctree} - [ACPI Specification 6.5](https://uefi.org/specs/ACPI/6.5/index.html)
:maxdepth: 1 - [ASL 2.0 Syntax](https://uefi.org/specs/ACPI/6.5/19_ASL_Reference.html#asl-2-0-symbolic-operators-and-expressions)
- [Predefined ACPI Names](https://uefi.org/specs/ACPI/6.5/05_ACPI_Software_Programming_Model.html#predefined-acpi-names)
ACPI Specification 6.5 <https://uefi.org/specs/ACPI/6.5/index.html>
ASL 2.0 Syntax <https://uefi.org/specs/ACPI/6.5/19_ASL_Reference.html#asl-2-0-symbolic-operators-and-expressions>
Predefined ACPI Names <https://uefi.org/specs/ACPI/6.5/05_ACPI_Software_Programming_Model.html#predefined-acpi-names>
```

View File

@@ -1141,8 +1141,4 @@ Spec](https://uefi.org/specifications) for details, or run the tool
## References: ## References:
```{toctree} * [AMD Glossary of terms](https://www.amd.com/system/files/documents/glossary-of-terms-20220505-for-web.pdf)
:maxdepth: 1
AMD Glossary of terms <https://www.amd.com/system/files/documents/glossary-of-terms-20220505-for-web.pdf>
```

View File

@@ -5,15 +5,7 @@ architectures.
## RISC-V ## RISC-V
```{toctree} - [RISC-V documentation](riscv/index.md)
:maxdepth: 1
RISC-V documentation <riscv/index.md>
```
## x86 ## x86
```{toctree} - [x86 documentation](x86/index.md)
:maxdepth: 1
x86 documentation <x86/index.md>
```

View File

@@ -2,14 +2,12 @@
This section contains documentation about coreboot on x86 architecture. This section contains documentation about coreboot on x86 architecture.
```{toctree} * [x86 PAE support](pae.md)
:maxdepth: 1
x86 PAE support <pae.md>
```
## State of x86_64 support ## State of x86_64 support
Some SOCs now support 64bit mode. Search for HAVE_X86_64_SUPPORT in Kconfig. At the moment there's only experimental x86_64 support.
The `emulation/qemu-i440fx` and `emulation/qemu-q35` boards do support
*ARCH_RAMSTAGE_X86_64* , *ARCH_POSTCAR_X86_64* and *ARCH_ROMSTAGE_X86_64*.
In order to add support for x86_64 the following assumptions were made: In order to add support for x86_64 the following assumptions were made:
* The CPU supports long mode * The CPU supports long mode
@@ -17,6 +15,7 @@ In order to add support for x86_64 the following assumptions were made:
* All code that is to be run must be below 4GiB in physical memory * All code that is to be run must be below 4GiB in physical memory
* The high dword of pointers is always zero * The high dword of pointers is always zero
* The reference implementation is qemu * The reference implementation is qemu
* The CPU supports 1GiB hugepages
* x86 payloads are loaded below 4GiB in physical memory and are jumped * x86 payloads are loaded below 4GiB in physical memory and are jumped
to in *protected mode* to in *protected mode*
@@ -44,12 +43,8 @@ Basic support for x86_64 has been implemented for QEMU mainboard target.
## Reference implementation ## Reference implementation
The reference implementation is The reference implementation is
```{toctree} * [QEMU i440fx](../../mainboard/emulation/qemu-i440fx.md)
:maxdepth: 1 * [QEMU Q35](../../mainboard/emulation/qemu-q35.md)
QEMU i440fx <../../mainboard/emulation/qemu-i440fx.md>
QEMU Q35 <../../mainboard/emulation/qemu-q35.md>
```
## TODO ## TODO
* Identity map memory above 4GiB in ramstage * Identity map memory above 4GiB in ramstage
@@ -59,6 +54,7 @@ QEMU Q35 <../../mainboard/emulation/qemu-q35.md>
1. Fine grained page tables for SMM: 1. Fine grained page tables for SMM:
* Must not have execute and write permissions for the same page. * Must not have execute and write permissions for the same page.
* Must allow only that TSEG pages can be marked executable * Must allow only that TSEG pages can be marked executable
* Must reside in SMRAM
2. Support 64bit PCI BARs above 4GiB 2. Support 64bit PCI BARs above 4GiB
3. Place and run code above 4GiB 3. Place and run code above 4GiB
@@ -66,10 +62,13 @@ QEMU Q35 <../../mainboard/emulation/qemu-q35.md>
* Fix compilation errors * Fix compilation errors
* Test how well CAR works with x86_64 and paging * Test how well CAR works with x86_64 and paging
* Improve mode switches * Improve mode switches
* Test libgfxinit / VGA Option ROMs / FSP
## Known problems on real hardware ## Known bugs on real hardware
Running VGA rom directly fails. Yabel works fine though. According to Intel x86_64 mode hasn't been validated in CAR environments.
Until now it could be verified on various Intel platforms and no issues have
been found.
## Known bugs on KVM enabled qemu ## Known bugs on KVM enabled qemu

View File

@@ -1,10 +1,6 @@
# Community # Community
```{toctree} * [Code of Conduct](code_of_conduct.md)
:maxdepth: 1 * [Language style](language_style.md)
* [Community forums](forums.md)
Code of Conduct <code_of_conduct.md> * [coreboot at conferences](conferences.md)
Language style <language_style.md>
Community forums <forums.md>
coreboot at conferences <conferences.md>
```

View File

@@ -1,34 +1,46 @@
# Configuration file for the Sphinx documentation builder. # -*- coding: utf-8 -*-
#
# For the full list of built-in configuration values, see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Project information -----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
import subprocess import subprocess
from recommonmark.parser import CommonMarkParser
import sphinx
project = 'coreboot' # Get Sphinx version
copyright = 'CC-by 4.0 the coreboot project' major = 0
author = 'the coreboot project' minor = 0
patchlevel = 0
version = sphinx.__version__.split(".")
if len(version) > 1:
major = int(version[0])
minor = int(version[1])
if len(version) > 2:
patchlevel = int(version[2])
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
source_suffix = ['.md']
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'coreboot'
copyright = u'CC-by 4.0 the coreboot project'
author = u'the coreboot project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The full version, including alpha/beta/rc tags.
release = subprocess.check_output(('git', 'describe')).decode("utf-8") release = subprocess.check_output(('git', 'describe')).decode("utf-8")
# The short X.Y version. # The short X.Y version.
version = release.split("-")[0] version = release.split("-")[0]
extensions = []
# -- General configuration --------------------------------------------------- # Load recommonmark, supported since 1.8+
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration if major >= 2 or (major == 1 and minor >= 8):
extensions += ['recommonmark']
extensions = ["myst_parser"]
myst_heading_anchors = 5
templates_path = ['_templates']
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# Try to load DITAA # Try to load DITAA
try: try:
@@ -45,11 +57,62 @@ else:
# Usually you set "language" from the command line for these cases. # Usually you set "language" from the command line for these cases.
language = 'en' language = 'en'
# -- Options for HTML output ------------------------------------------------- # List of patterns, relative to source directory, that match files and
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output # directories to ignore when looking for source files.
# This patterns also effect to html_static_path and html_extra_path
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
# modindex_common_prefix = []
# If true, keep warnings as "system message" paragraphs in the built documents.
# keep_warnings = False
# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = False
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = 'sphinx_rtd_theme' html_theme = 'sphinx_rtd_theme'
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static'] html_static_path = ['_static']
html_css_files = [ html_css_files = [
'theme_overrides.css', # override wide tables in RTD theme 'theme_overrides.css', # override wide tables in RTD theme
] ]
# Output file base name for HTML help builder.
htmlhelp_basename = 'corebootdoc'
enable_auto_toc_tree = True
class MyCommonMarkParser(CommonMarkParser):
# remove this hack once upstream RecommonMark supports inline code
def visit_code(self, mdnode):
from docutils import nodes
n = nodes.literal(mdnode.literal, mdnode.literal)
self.current_node.append(n)
def setup(app):
from recommonmark.transform import AutoStructify
# Load recommonmark on old Sphinx
if major == 1 and minor < 8:
app.add_source_parser('.md', MyCommonMarkParser)
app.add_config_value('recommonmark_config', {
'enable_auto_toc_tree': True,
'enable_auto_doc_ref': False, # broken in Sphinx 1.6+
'enable_eval_rst': True,
'url_resolver': lambda url: '/' + url
}, True)
app.add_transform(AutoStructify)

View File

@@ -808,7 +808,7 @@ eDP display panel encounters an I2C error, it should print a "cannot read EDID"
message and return an error code. The calling display initialization function message and return an error code. The calling display initialization function
knows that without the EDID there is no way to initialize the display correctly, knows that without the EDID there is no way to initialize the display correctly,
so it will also immediately return with an error code without running its so it will also immediately return with an error code without running its
remaining code that would initialize the SoC's display controller. Execution remaining code that would initialize the SoC's display controller. Exeuction
returns further up the function stack to the mainboard initialization code returns further up the function stack to the mainboard initialization code
which continues booting despite the failed display initialization, since which continues booting despite the failed display initialization, since
display functionality is non-essential to the system. (Code is encouraged but display functionality is non-essential to the system. (Code is encouraged but

View File

@@ -395,8 +395,8 @@ Gerrit user roles
There are a few relevant roles a user can have on Gerrit: There are a few relevant roles a user can have on Gerrit:
- The anonymous user can check out source code. - The anonymous user can check out source code.
- A registered user can also comment and give "+1" code reviews. - A registered user can also comment and give "+1" and "-1" code reviews.
- A reviewer can give "-1" and "+2" code reviews. - A reviewer can also give "+2" code reviews.
- A core developer can also give "-2" (that is, blocking) code reviews - A core developer can also give "-2" (that is, blocking) code reviews
and submit changes. and submit changes.

View File

@@ -1,11 +1,7 @@
# Contributing # Contributing
```{toctree} * [Coding Style](coding_style.md)
:maxdepth: 1 * [Gerrit Guidelines](gerrit_guidelines.md)
* [Project Ideas](project_ideas.md)
Coding Style <coding_style.md> * [Documentation Ideas](documentation_ideas.md)
Gerrit Guidelines <gerrit_guidelines.md> * [Google Summer of Code](gsoc.md)
Project Ideas <project_ideas.md>
Documentation Ideas <documentation_ideas.md>
Google Summer of Code <gsoc.md>
```

View File

@@ -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
@@ -43,16 +43,6 @@ ships with coreboot and support upstream maintenance for the devices through a
third party, [3mdeb](https://3mdeb.com). They provide current and tested third party, [3mdeb](https://3mdeb.com). They provide current and tested
firmware binaries on [GitHub](https://pcengines.github.io). firmware binaries on [GitHub](https://pcengines.github.io).
### Protectli
[Protectli](https://protectli.com) is dedicated to providing reliable,
cost-effective, and secure computer equipment with coreboot-based firmware
tailored for their hardware. It comes with the [Dasharo](#dasharo)
firmware, maintained by [3mdeb](https://3mdeb.com/). Protectli hardware has
verified support for many popular operating systems, such as Linux distributions,
FreeBSD, and Windows. Support includes Debian, Ubuntu, OPNsense, pfSense,
ProxMox VE, VMware ESXi, Windows 10 and 11, and many more.
### Purism ### Purism
[Purism](https://www.puri.sm) sells laptops with a focus on user privacy and [Purism](https://www.puri.sm) sells laptops with a focus on user privacy and

View File

@@ -8,14 +8,10 @@ For details on how to connect device drivers to a mainboard, see [Driver Devicet
Some of the drivers currently available include: Some of the drivers currently available include:
```{toctree} * [Intel DPTF](dptf.md)
:maxdepth: 1 * [IPMI KCS](ipmi_kcs.md)
* [SMMSTORE](smmstore.md)
Intel DPTF <dptf.md> * [SMMSTOREv2](smmstorev2.md)
IPMI KCS <ipmi_kcs.md> * [SoundWire](soundwire.md)
SMMSTORE <smmstore.md> * [USB4 Retimer](retimer.md)
SMMSTOREv2 <smmstorev2.md> * [CBFS SMBIOS hooks](cbfs_smbios.md)
SoundWire <soundwire.md>
USB4 Retimer <retimer.md>
CBFS SMBIOS hooks <cbfs_smbios.md>
```

View File

@@ -128,11 +128,7 @@ data or modify the currently running kernel.*
## External links ## External links
```{toctree} * [A Tour Beyond BIOS Implementing UEFI Authenticated Variables in SMM with EDKI](https://software.intel.com/sites/default/files/managed/cf/ea/a_tour_beyond_bios_implementing_uefi_authenticated_variables_in_smm_with_edkii.pdf)
:maxdepth: 1
A Tour Beyond BIOS Implementing UEFI Authenticated Variables in SMM with EDKI <https://software.intel.com/sites/default/files/managed/cf/ea/a_tour_beyond_bios_implementing_uefi_authenticated_variables_in_smm_with_edkii.pdf>
```
Note, this differs significantly from coreboot's implementation. Note, this differs significantly from coreboot's implementation.
[SMM]: ../security/smm.md [SMM]: ../security/smm.md

View File

@@ -124,9 +124,25 @@ additional calling arguments are passed via `%ebx`.
**NOTE**: The size of the struct entries are in the native word size of **NOTE**: The size of the struct entries are in the native word size of
smihandler. This means 32 bits in almost all cases. smihandler. This means 32 bits in almost all cases.
#### - SMMSTORE_CMD_INIT_DEPRECATED = 4 #### - SMMSTORE_CMD_INIT = 4
Unused, returns SMMSTORE_REG_UNSUPPORTED. This installs the communication buffer to use and thus enables the
SMMSTORE handler. This command can only be executed once and is done
by the firmware. Calling this function at runtime has no effect.
The additional parameter buffer `%ebx` contains a pointer to the
following struct:
```C
struct smmstore_params_init {
uint32_t com_buffer;
uint32_t com_buffer_size;
} __packed;
```
INPUT:
- `com_buffer`: Physical address of the communication buffer (CBMEM)
- `com_buffer_size`: Size in bytes of the communication buffer
#### - SMMSTORE_CMD_RAW_READ = 5 #### - SMMSTORE_CMD_RAW_READ = 5
@@ -199,11 +215,7 @@ running kernel.
## External links ## External links
```{toctree} * [A Tour Beyond BIOS Implementing UEFI Authenticated Variables in SMM with EDKI](https://software.intel.com/sites/default/files/managed/cf/ea/a_tour_beyond_bios_implementing_uefi_authenticated_variables_in_smm_with_edkii.pdf)
:maxdepth: 1
A Tour Beyond BIOS Implementing UEFI Authenticated Variables in SMM with EDKI <https://software.intel.com/sites/default/files/managed/cf/ea/a_tour_beyond_bios_implementing_uefi_authenticated_variables_in_smm_with_edkii.pdf>
```
Note that this differs significantly from coreboot's implementation. Note that this differs significantly from coreboot's implementation.
[SMM]: ../security/smm.md [SMM]: ../security/smm.md

View File

@@ -17,21 +17,13 @@ Please add any helpful or informational links and sections as you see fit.
* [Part 1: PCI-based systems](https://resources.infosecinstitute.com/topic/system-address-map-initialization-in-x86x64-architecture-part-1-pci-based-systems/) * [Part 1: PCI-based systems](https://resources.infosecinstitute.com/topic/system-address-map-initialization-in-x86x64-architecture-part-1-pci-based-systems/)
* [Part 2: PCI express-based systems](https://resources.infosecinstitute.com/topic/system-address-map-initialization-x86x64-architecture-part-2-pci-express-based-systems/) * [Part 2: PCI express-based systems](https://resources.infosecinstitute.com/topic/system-address-map-initialization-x86x64-architecture-part-2-pci-express-based-systems/)
* [PCIe elastic buffer](https://www.mindshare.com/files/resources/mindshare_pcie_elastic_buffer.pdf) * [PCIe elastic buffer](https://www.mindshare.com/files/resources/mindshare_pcie_elastic_buffer.pdf)
```{toctree} * [Boot Guard and PSB have user-hostile defaults](https://mjg59.dreamwidth.org/58424.html)
:maxdepth: 1
Boot Guard and PSB have user-hostile defaults <https://mjg59.dreamwidth.org/58424.html>
```
## General Information ## General Information
```{toctree} * [OS Dev](https://wiki.osdev.org/Categorized_Main_Page)
:maxdepth: 1 * [Interface BUS](http://www.interfacebus.com/)
OS Dev <https://wiki.osdev.org/Categorized_Main_Page>
Interface BUS <http://www.interfacebus.com/>
```
## OpenSecurityTraining2 ## OpenSecurityTraining2
@@ -51,14 +43,10 @@ modified works back to the community.
Below is a list of currently available courses that can help understand the Below is a list of currently available courses that can help understand the
inner workings of coreboot and other firmware-related topics: inner workings of coreboot and other firmware-related topics:
```{toctree} * [coreboot design principles and boot process](https://ost2.fyi/Arch4031)
:maxdepth: 1 * [x86-64 Assembly](https://ost2.fyi/Arch1001)
* [x86-64 OS Internals](https://ost2.fyi/Arch2001)
coreboot design principles and boot process <https://ost2.fyi/Arch4031> * [x86-64 Intel Firmware Attack & Defense](https://ost2.fyi/Arch4001)
x86-64 Assembly <https://ost2.fyi/Arch1001>
x86-64 OS Internals <https://ost2.fyi/Arch2001>
x86-64 Intel Firmware Attack & Defense <https://ost2.fyi/Arch4001>
```
There are [additional security courses](https://p.ost2.fyi/courses) at the site There are [additional security courses](https://p.ost2.fyi/courses) at the site
as well (such as as well (such as
@@ -66,79 +54,47 @@ as well (such as
## Firmware Specifications & Information ## Firmware Specifications & Information
```{toctree} * [System Management BIOS - SMBIOS](https://www.dmtf.org/standards/smbios)
:maxdepth: 1 * [Desktop and Mobile Architecture for System Hardware - DASH](https://www.dmtf.org/standards/dash)
* [PNP BIOS](https://www.intel.com/content/dam/support/us/en/documents/motherboards/desktop/sb/pnpbiosspecificationv10a.pdf)
System Management BIOS - SMBIOS <https://www.dmtf.org/standards/smbios>
Desktop and Mobile Architecture for System Hardware - DASH <https://www.dmtf.org/standards/dash>
PNP BIOS <https://www.intel.com/content/dam/support/us/en/documents/motherboards/desktop/sb/pnpbiosspecificationv10a.pdf>
```
### ACPI ### ACPI
```{toctree} * [ACPI Specs](https://uefi.org/acpi/specs)
:maxdepth: 1 * [ACPI in Linux](https://www.kernel.org/doc/ols/2005/ols2005v1-pages-59-76.pdf)
* [ACPI 5 Linux](https://blog.linuxplumbersconf.org/2012/wp-content/uploads/2012/09/LPC2012-ACPI5.pdf)
ACPI Specs <https://uefi.org/acpi/specs> * [ACPI 6 Linux](https://events.static.linuxfound.org/sites/events/files/slides/ACPI_6_and_Linux_0.pdf)
ACPI in Linux <https://www.kernel.org/doc/ols/2005/ols2005v1-pages-59-76.pdf>
ACPI 5 Linux <https://blog.linuxplumbersconf.org/2012/wp-content/uploads/2012/09/LPC2012-ACPI5.pdf>
ACPI 6 Linux <https://events.static.linuxfound.org/sites/events/files/slides/ACPI_6_and_Linux_0.pdf>
```
### Security ### Security
```{toctree} * [Intel Boot Guard](https://edk2-docs.gitbook.io/understanding-the-uefi-secure-boot-chain/secure_boot_chain_in_uefi/intel_boot_guard)
:maxdepth: 1
Intel Boot Guard <https://edk2-docs.gitbook.io/understanding-the-uefi-secure-boot-chain/secure_boot_chain_in_uefi/intel_boot_guard>
```
## Hardware information ## Hardware information
```{toctree} * [WikiChip](https://en.wikichip.org/wiki/WikiChip)
:maxdepth: 1 * [Sandpile](https://www.sandpile.org/)
* [CPU-World](https://www.cpu-world.com/index.html)
WikiChip <https://en.wikichip.org/wiki/WikiChip> * [CPU-Upgrade](https://www.cpu-upgrade.com/index.html)
Sandpile <https://www.sandpile.org/>
CPU-World <https://www.cpu-world.com/index.html>
CPU-Upgrade <https://www.cpu-upgrade.com/index.html>
```
### Hardware Specifications & Standards ### Hardware Specifications & Standards
* [Bluetooth](https://www.bluetooth.com/specifications/specs/) - Bluetooth SIG * [Bluetooth](https://www.bluetooth.com/specifications/specs/) - Bluetooth SIG
```{toctree} * [eMMC](https://www.jedec.org/) - JEDEC - (LOGIN REQUIRED)
:maxdepth: 1
eMMC <https://www.jedec.org/) - JEDEC - (LOGIN REQUIRED>
```
* [eSPI](https://cdrdv2.intel.com/v1/dl/getContent/645987) - Intel * [eSPI](https://cdrdv2.intel.com/v1/dl/getContent/645987) - Intel
* [I2c Spec](https://web.archive.org/web/20170704151406/https://www.nxp.com/docs/en/user-guide/UM10204.pdf), * [I2c Spec](https://web.archive.org/web/20170704151406/https://www.nxp.com/docs/en/user-guide/UM10204.pdf),
[Appnote](https://www.nxp.com/docs/en/application-note/AN10216.pdf) - NXP [Appnote](https://www.nxp.com/docs/en/application-note/AN10216.pdf) - NXP
* [I2S](https://www.nxp.com/docs/en/user-manual/UM11732.pdf) - NXP * [I2S](https://www.nxp.com/docs/en/user-manual/UM11732.pdf) - NXP
```{toctree} * [I3C](https://www.mipi.org/specifications/i3c-sensor-specification) - MIPI Alliance (LOGIN REQUIRED)
:maxdepth: 1 * [Memory](https://www.jedec.org/) - JEDEC - (LOGIN REQUIRED)
I3C <https://www.mipi.org/specifications/i3c-sensor-specification) - MIPI Alliance (LOGIN REQUIRED>
Memory <https://www.jedec.org/) - JEDEC - (LOGIN REQUIRED>
```
* [NVMe](https://nvmexpress.org/developers/) - NVMe Specifications * [NVMe](https://nvmexpress.org/developers/) - NVMe Specifications
* [LPC](https://www.intel.com/content/dam/www/program/design/us/en/documents/low-pin-count-interface-specification.pdf) - Intel * [LPC](https://www.intel.com/content/dam/www/program/design/us/en/documents/low-pin-count-interface-specification.pdf) - Intel
```{toctree} * [PCI / PCIe / M.2](https://pcisig.com/specifications) - PCI-SIG - (LOGIN REQUIRED)
:maxdepth: 1
PCI / PCIe / M.2 <https://pcisig.com/specifications) - PCI-SIG - (LOGIN REQUIRED>
```
* [Power Delivery](https://www.usb.org/documents) - USB Implementers Forum * [Power Delivery](https://www.usb.org/documents) - USB Implementers Forum
```{toctree} * [SATA](https://sata-io.org/developers/purchase-specification) - SATA-IO (LOGIN REQUIRED)
:maxdepth: 1
SATA <https://sata-io.org/developers/purchase-specification) - SATA-IO (LOGIN REQUIRED>
```
* [SMBus](http://www.smbus.org/specs/) - System Management Interface Forum * [SMBus](http://www.smbus.org/specs/) - System Management Interface Forum
* [Smart Battery](http://smartbattery.org/specs/) - Smart Battery System Implementers Forum * [Smart Battery](http://smartbattery.org/specs/) - Smart Battery System Implementers Forum
* [USB](https://www.usb.org/documents) - USB Implementers Forum * [USB](https://www.usb.org/documents) - USB Implementers Forum
@@ -177,9 +133,5 @@ SATA <https://sata-io.org/developers/purchase-specification) - SATA-IO (LOGIN RE
## Infrastructure software ## Infrastructure software
```{toctree} * [Kconfig](https://www.kernel.org/doc/html/latest/kbuild/kconfig-language.html)
:maxdepth: 1 * [GNU Make](https://www.gnu.org/software/make/manual/)
Kconfig <https://www.kernel.org/doc/html/latest/kbuild/kconfig-language.html>
GNU Make <https://www.gnu.org/software/make/manual/>
```

View File

@@ -7,10 +7,10 @@ to the point of providing its own custom language.
The overhead of learning this new syntax is (hopefully) offset by its lower The overhead of learning this new syntax is (hopefully) offset by its lower
complexity. complexity.
The build system is defined in the toplevel `Makefile` and `toolchain.mk` The build system is defined in the toplevel `Makefile` and `toolchain.inc`
and is supposed to be generic (and is in fact used with a number of other and is supposed to be generic (and is in fact used with a number of other
projects). Project specific configuration should reside in files called projects). Project specific configuration should reside in files called
`Makefile.mk`. `Makefile.inc`.
In general, the build system provides a number of "classes" that describe In general, the build system provides a number of "classes" that describe
various parts of the build. These cover the various build targets in coreboot various parts of the build. These cover the various build targets in coreboot
@@ -36,7 +36,7 @@ TODO: explain how to create new classes and how to evaluate them.
### subdirs ### subdirs
`subdirs` contains subdirectories (relative to the current directory) that `subdirs` contains subdirectories (relative to the current directory) that
should also be handled by the build system. The build system expects these should also be handled by the build system. The build system expects these
directories to contain a file called `Makefile.mk`. directories to contain a file called `Makefile.inc`.
Subdirectories are not read at the point where the `subdirs` statement Subdirectories are not read at the point where the `subdirs` statement
resides but later, after the current directory is handled (and potentially resides but later, after the current directory is handled (and potentially
@@ -66,7 +66,7 @@ supported options are:
You can use the `add_intermediate` helper to add new post-processing steps for You can use the `add_intermediate` helper to add new post-processing steps for
the final `coreboot.rom` image. For example you can add new files to CBFS by the final `coreboot.rom` image. For example you can add new files to CBFS by
adding something like this to `site-local/Makefile.mk` adding something like this to `site-local/Makefile.inc`
``` ```
$(call add_intermediate, add_mrc_data) $(call add_intermediate, add_mrc_data)
@@ -75,7 +75,7 @@ $(call add_intermediate, add_mrc_data)
Note that the second line must start with a tab, not spaces. Note that the second line must start with a tab, not spaces.
```{eval-rst} ```eval_rst
See also :doc:`../tutorial/managing_local_additions`. See also :doc:`../tutorial/managing_local_additions`.
``` ```
@@ -100,4 +100,4 @@ The default implementation just returns `COREBOOT` (the default region) for
all files. all files.
vboot provides its own implementation of `regions-for-file` that can be used vboot provides its own implementation of `regions-for-file` that can be used
as reference in `src/vboot/Makefile.mk`. as reference in `src/vboot/Makefile.inc`.

View File

@@ -1,312 +0,0 @@
# coreboot FAQ
## General coreboot questions
### What is coreboot?
coreboot is a free and open software project designed to initialize
computers and embedded systems in a fast, secure, and auditable fashion.
The focus is on minimal hardware initialization: to do only what is
absolutely needed, then pass control to other software (a payload, in
coreboot parlance) in order to boot the operating system securely.
### What is a coreboot payload?
coreboot itself does not deal with boot media such as hard-drives,
SSDs, or USB flash-drives, beyond initializing the underlying hardware.
So in order to actually boot an operating system, another piece of
software which does do those things must be used. coreboot supports
a large number of diverse payloads; see below for more details.
### Is coreboot the same as UEFI?
No. coreboot and UEFI are both system firmware that handle the
initialization of the hardware, but are otherwise not similar.
coreboots goal is to **just** initialize the hardware and exit.
This makes coreboot smaller and simpler, leading to faster boot times,
and making it easier to find and fix bugs. The result is a higher
overall security.
### What's the difference between coreboot and UEFI?
UEFI is actually a firmware specification, not a specific software
implementation. Intel, along with the rest of the Tianocore project,
has released an open-source implementation of the overall framework,
EDK2, but it does not come with hardware support. Most hardware running
UEFI uses a proprietary implementation built on top of EDK2.
coreboot does not implement the UEFI specification, but it can be used to
initialize the system, then launch a UEFI payload such as EDK2 in order
to provide UEFI boot services.
The UEFI specification also defines and allows for many things that are
outside of coreboots scope, including (but not limited to):
* Boot device selection
* Updating the firmware
* A CLI shell
* Network communication
* An integrated setup menu
### Can coreboot boot operating systems that require UEFI?
Yes, but... again, coreboot **just** initializes the hardware. coreboot
itself doesnt load operating systems from storage media other than the
flash chip. Unlike UEFI, coreboot does not, and will not contain a Wi-Fi
driver or communicate directly with any sort of network. That sort of
functionality is not related to hardware initialization.
To boot operating systems that require UEFI, coreboot can be compiled with
EDK2 as the payload. This allows coreboot to perform the hardware init,
with EDK2 supplying the UEFI boot interface and runtime services to
the operating system.
### What non-UEFI payloads does coreboot support?
* SeaBIOS, behaves like a classic BIOS, allowing you to boot operating
systems that rely on the legacy interrupts.
* GRUB can be used as a coreboot payload, and is currently the most
common approach to full disk encryption (FDE).
* A Linux kernel and initramfs stored alongside coreboot in the boot
ROM can also be used as a payload. In this scenario coreboot
initializes hardware, loads Linux from boot ROM into RAM, and
executes it. The embedded Linux environment can look for a target OS
kernel to load from local storage or over a network and execute it
using kexec. This is sometimes called LinuxBoot.
* U-boot, depthcharge, FILO, etc.
Theres [https://doc.coreboot.org/payloads.html](https://doc.coreboot.org/payloads.html)
with a list, although its not complete.
### What does coreboot leave in memory after it's done initializing the hardware?
While coreboot tries to remove itself completely from memory after
finishing, some tables and data need to remain for the OS. coreboot
reserves an area in memory known as CBMEM, to save this data after it
has finished booting. This contains things such as the boot log, tables
that get passed to the payload, SMBIOS, and ACPI tables for the OS.
In addition to CBMEM, on X86 systems, coreboot will typically set up
SMM, which will remain resident after coreboot exits.
## Platforms
### Whats the best coreboot platform for a user?
The choice of the best coreboot platform for a user can vary depending
on their specific needs, preferences, and use cases.
Typically, people who want a system with a minimum of proprietary
firmware are restricted to older systems like the Lenovo X220, or more
expensive, non-x86 solutions like TALOS, from Raptor Engineering.
There are a number of companies selling modern systems, but those all
require more proprietary binaries in addition to coreboot (e.g., Intel
FSP). However, unlike the older ThinkPads, many of these newer devices
use open-source embedded controller (EC) firmware, so there are
tradeoffs with either option.
The coreboot project mantains a list of companies selling machines
which use coreboot on the [website](https://coreboot.org/users.html).
### Whats the best platform for coreboot development?
Similar to the best platform for users, the best platform for
developers very much depends on what a developer is trying to do.
* QEMU is generally the easiest platform for coreboot development, just
because its easy to run anywhere. However, its possible for things
to work properly in QEMU but fail miserably on actual hardware.
While laptops tend to be harder to develop than desktop platforms, a
majority of newer platforms on coreboot tend to be laptops. The
development difficulty is due to a few different factors:
1. The EC (Embedded Controller) is a specialized microcontroller that
typically handles keyboard and sometimes mouse input for a laptop.
It also controls many power management functions such as fans, USB-C
power delivery, etc. ECs run mainboard-specific firmware, which is
typically undocumented.
2. ThinkPads (X230, 30-series, 20-series, T430, T540, T520). Sandy
Bridge and Ivy Bridge are well-supported. Some may have
difficult-to-reach SPI flash chips. Boards with two flash chips (e.g.
30-series ThinkPads) are harder to externally reflash as one needs to
make sure the non-targeted flash chip remains disabled at all times.
The X230 is notoriously sensitive to external reflashing issues.
3. Laptops often lack a convenient method to obtain firmware boot logs.
One can use EHCI debug on older systems and Chromebook-specific
solutions for Chromebooks, but one often has to resort to flashconsole
(writing coreboot logs to the flash chip where coreboot resides). On
the other hand, several desktop mainboards still have a RS-232 serial
port.
Some of the easiest physical systems to use for coreboot development
are Chromebooks. Newer Chromebooks allow for debug without opening the
case. Look for SuzyQ Cables or SuzyQables or instructions on how to
build one. These cables only work on a specific port in a specific
orientation. Google [supplies
specifications](https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/master/docs/ccd.md#SuzyQ-SuzyQable)
for these cables.
### What platforms does coreboot support?
The most accurate way to determine what systems coreboot supports is by
browsing the src/mainboard tree or running “make menuconfig” and going
through the “Mainboard” submenu. You can also search Gerrit to see if
there are any unmerged ports for your board.
There is also the board status page
([https://coreboot.org/status/board-status.html](https://coreboot.org/status/board-status.html)),
however this does not currently show supported board variants.
## coreboot Development
### Can coreboot be ported to [this board]?
The best way to determine if coreboot can be ported to a system is to
see if the processor and chipset is supported. The next step is to see
whether the system is locked to the proprietary firmware which comes
with the board.
Intel Platforms:
* coreboot only supports a few northbridges (back when northbridges
were on a separate package), and there's next to no support for
"server" platforms (multi-socket and similar things). Here's a list
of more recent supported Intel processors:
* Alder Lake (2021 - Core Gen 12)
* Apollo Lake (2016 - Atom)
* Baytrail (2014 - Atom)
* Braswell (2016 - Atom)
* Broadwell (2014 - Core Gen 5)
* Comet Lake (2019 - Core Gen 10)
* Cannon Lake (2018 - Core Gen 8/9)
* Denverton (2017)
* Elkhart lake (2021 - Atom)
* Haswell (2013 - Core Gen 4)
* Ivy Bridge (2012 - Core Gen 3)
* Jasper Lake (2021 - Atom)
* Kaby Lake (2016 - Core Gen 7/8)
* Meteor Lake (2023 - Gen 1 Ultra-mobile)
* Sandy Bridge (2011 - Core Gen 2)
* Sky Lake (2015 - Core Gen 6)
* Tiger Lake (2020 - Core Gen 11)
* Whiskey Lake (2018 - Core Gen 8)
* Intel Boot Guard is a security feature which tries to prevent loading
unauthorized firmware by the mainboard. If supported by the platform,
and the platform is supported by intelmetool, you should check if Boot
Guard is enabled. If it is, then getting coreboot to run will be
difficult or impossible even if it is ported. You can run
`intelmetool -b` on supported platforms to see if Boot Guard is
enabled (although it can fail because it wants to probe the ME
beforehand).
AMD Ryzen-based platforms:
* The AMD platforms Ryzen-based platforms unfortunately are currently
not well supported outside of the Chromebooks (and AMD reference
boards) currently in the tree.
The responsible teams are trying to fix this, but currently it's
**very** difficult to do a new port. Recent supported SoCs:
* Stoney Ridge
* Picasso
* Cezanne
* Mendocino
* Phoenix
General notes:
* Check the output of `lspci` to determine what processor/chipset
family your system has. Processor/chipset support is the most
important to determine if a board can be ported.
* Check the output of `superiotool` to see if it detects the Super I/O
on the system. You can also check board schematics and/or boardviews
if you can find them, or physically look at the mainboard for a chip
from one of the common superio vendors.
* Check what EC your system has (mostly applicable to laptops, but some
desktops have EC-like chips). You will likely need to refer to the
actual board or schematics/boardviews for this. Physical observation
is the most accurate identification procedure; software detection can
then be used to double-check if the chip is correct, but one should
not rely on software detection alone to identify an EC.
### How do I port coreboot to [this board]?
A critical piece for anyone attempting to do a board port is to make
sure that you have a method to recover your system from a failed flash.
We need an updated motherboard porting guide, but currently the guide
on the [wiki](https://www.coreboot.org/Motherboard_Porting_Guide) looks
to be the best reference.
At the moment, the best answer to this question is to ask for help on
one of the [various community
forums](https://doc.coreboot.org/community/forums.html).
### What about the Intel ME?
There seems to be a lot of FUD about what the ME can and cant do.
coreboot currently does not have a clear recommendation on how to
handle the ME. We understand that there are serious concerns about the
ME, and would like to flatly recommend removing as much as possible,
however modifying the ME can cause serious stability issues.
Additionally, coreboot and the Intel ME are completely separate entites
which in many cases simply happen to occupy the same flash chip. It is
not necessary to run coreboot to modify the ME, and running coreboot
does not imply anything about the ME's operational state.
#### A word of caution about the modifying ME
Messing with the ME firmware can cause issues, and this is outside the
scope of the coreboot project.
If you do decide to modify the ME firmware, please make sure coreboot
works **before** messing with it. Even if the vendor boot firmware
works when the ME isn't operating normally, it's possible that coreboot
doesn't handle it the same way and something breaks. If someone asks
for help with coreboot and we think the ME state may be a factor, we'll
ask them to try reproducing the issue with the ME running normally to
reduce the number of variables involved. This is especially important
when flashing coreboot for the first time, as it's best for newbies to
start with small steps: start by flashing coreboot to the BIOS region
and leaving the remaining regions untouched, then tinker around with
coreboot options (e.g. other payloads, bootsplash, RAM overclock...),
or try messing with the ME firmware **without changing coreboot**.
Most people don't understand the implications of messing with the ME
firmware, especially the use of `me_cleaner`. We admit that we don't
know everything about the ME, but we try to understand it as much as
possible. The ME is designed to operate correctly with the HAP (or
AltMeDisable) bit set, and it will gracefully enter a debug state (not
normal, but not an error). However, when using `me_cleaner` to remove
parts of the ME firmware, the ME will often end up in an error state
because parts of its FW are missing. It is known that removing some of
these parts ([`EFFS` and `FCRS` on Cougar Point,
c.f.](https://review.coreboot.org/c/coreboot/+/27798/6/src/mainboard/asus/p8h61-m_lx/Kconfig#63))
can cause problems. We do not know whether the state the ME ends up in
after applying `me_cleaner` is as secure as the state the ME goes to
when only the HAP bit is set: the removed FW modules could contain
steps to lock down important settings for security reasons.
To sum up, **we do not recommend messing with the ME firmware**. But if
you have to, please use `ifdtool` to set the HAP bit initially before
progressing to `me_cleaner` if necessary.

View File

@@ -167,7 +167,7 @@ could cause catastrophic failures, up to and including your mainboard!
As per Intel Platform Controller Hub (PCH) EDS since Skylake, a GPIO PAD register As per Intel Platform Controller Hub (PCH) EDS since Skylake, a GPIO PAD register
supports four different types of GPIO reset as: supports four different types of GPIO reset as:
```{eval-rst} ```eval_rst
+------------------------+----------------+-------------+-------------+ +------------------------+----------------+-------------+-------------+
| | | PAD Reset ? | | | | PAD Reset ? |
+ PAD Reset Config + Platform Reset +-------------+-------------+ + PAD Reset Config + Platform Reset +-------------+-------------+

View File

@@ -1,14 +1,9 @@
# Getting Started # Getting Started
```{toctree} * [coreboot architecture](architecture.md)
:maxdepth: 1 * [Build System](build_system.md)
* [Submodules](submodules.md)
coreboot architecture <architecture.md> * [Kconfig](kconfig.md)
Build System <build_system.md> * [Writing Documentation](writing_documentation.md)
Submodules <submodules.md> * [Setting up GPIOs](gpio.md)
Kconfig <kconfig.md> * [Adding devices to a device tree](devicetree.md)
Writing Documentation <writing_documentation.md>
Setting up GPIOs <gpio.md>
Adding devices to a device tree <devicetree.md>
Frequently Asked Questions <faq.md>
```

View File

@@ -11,12 +11,8 @@ configuration front end in coreboot today.
The official Kconfig source and documentation is kept at kernel.org: The official Kconfig source and documentation is kept at kernel.org:
```{toctree} - [Kconfig source](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/scripts/kconfig)
:maxdepth: 1 - [Kconfig Language Documentation](https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt)
Kconfig source <https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/scripts/kconfig>
Kconfig Language Documentation <https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt>
```
The advantage to using Kconfig is that it allows users to easily select the The advantage to using Kconfig is that it allows users to easily select the
high level features of the project to be enabled or disabled at build time. high level features of the project to be enabled or disabled at build time.
@@ -200,9 +196,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 +234,7 @@ bool \[prompt\] \[if &lt;expr&gt;\]
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
#### 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 +297,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 +322,7 @@ comment &lt;prompt&gt;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
#### 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 +359,7 @@ config &lt;symbol&gt;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
#### 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 +399,7 @@ default &lt;expr&gt; \[if &lt;expr&gt;\]
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
#### def_bool ### def_bool
def_bool is similar to the 'bool' keyword in that it sets a symbols type to def_bool is similar to the 'bool' keyword in that it sets a symbols 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 +433,7 @@ def_bool &lt;expr&gt; \[if &lt;expr&gt;\]
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
#### 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 +462,28 @@ depends on &lt;expr&gt;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
#### 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 +515,7 @@ help &lt;help text&gt;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
#### 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 +551,7 @@ hex &lt;expr&gt; \[if &lt;expr&gt;\]
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
#### 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 +592,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 +628,7 @@ int &lt;expr&gt; \[if &lt;expr&gt;\]
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
#### 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 +648,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 +695,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 +748,7 @@ prompt &lt;prompt&gt; \[if &lt;expr&gt;\]
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 +770,7 @@ range &lt;symbol&gt; &lt;symbol&gt; \[if &lt;expr&gt;\]
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
#### 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 +814,7 @@ select &lt;symbol&gt; \[if &lt;expr&gt;\]
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
#### 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 +873,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 +919,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 +944,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 doesnt matter whether theyre in an if/endif Kconfig tree is defined. It doesnt matter whether theyre 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
@@ -967,7 +963,7 @@ variable. This is not set in coreboot, which uses the default CONFIG_ prefix
for all of its symbols. for all of its symbols.
The coreboot makefile forces the config.h file to be included into all coreboot The coreboot makefile forces the config.h file to be included into all coreboot
C files. This is done in Makefile.mk on the compiler command line using the C files. This is done in Makefile.inc on the compiler command line using the
“-include $(obj)/config.h” command line option. “-include $(obj)/config.h” command line option.
Example of various symbol types in the config.h file: Example of various symbol types in the config.h file:
@@ -1168,19 +1164,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

View File

@@ -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

View File

@@ -22,7 +22,7 @@ the power sequence timing parameters, which are usually named T[N] and also
referenced in Intel's respective registers listing. You need the values for referenced in Intel's respective registers listing. You need the values for
`PP_ON_DELAYS`, `PP_OFF_DELAYS` and `PP_DIVISOR` for your `devicetree.cb`: `PP_ON_DELAYS`, `PP_OFF_DELAYS` and `PP_DIVISOR` for your `devicetree.cb`:
```{eval-rst} ```eval_rst
+-----------------------------+---------------------------------------+-----+ +-----------------------------+---------------------------------------+-----+
| Intel docs | devicetree.cb | eDP | | Intel docs | devicetree.cb | eDP |
+-----------------------------+---------------------------------------+-----+ +-----------------------------+---------------------------------------+-----+

View File

@@ -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 coreboots 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
@@ -209,38 +170,34 @@ for example OpenBSD, is probably the closest cousin of our approach.
Contents: Contents:
```{toctree} * [Getting Started](getting_started/index.md)
:maxdepth: 1 * [Tutorial](tutorial/index.md)
* [Contributing](contributing/index.md)
Getting Started <getting_started/index.md> * [Community](community/index.md)
Tutorial <tutorial/index.md> * [Payloads](payloads.md)
Contributing <contributing/index.md> * [Distributions](distributions.md)
Community <community/index.md> * [Technotes](technotes/index.md)
Payloads <payloads.md> * [ACPI](acpi/index.md)
Distributions <distributions.md> * [Native Graphics Initialization with libgfxinit](gfx/libgfxinit.md)
Technotes <technotes/index.md> * [Display panel](gfx/display-panel.md)
ACPI <acpi/index.md> * [CPU Architecture](arch/index.md)
Native Graphics Initialization with libgfxinit <gfx/libgfxinit.md> * [Platform independent drivers](drivers/index.md)
Display panel <gfx/display-panel.md> * [Northbridge](northbridge/index.md)
CPU Architecture <arch/index.md> * [System on Chip](soc/index.md)
Platform independent drivers <drivers/index.md> * [Mainboard](mainboard/index.md)
Northbridge <northbridge/index.md> * [Payloads](lib/payloads/index.md)
System on Chip <soc/index.md> * [Libraries](lib/index.md)
Mainboard <mainboard/index.md> * [Options](lib/option.md)
Payloads <lib/payloads/index.md> * [Security](security/index.md)
Libraries <lib/index.md> * [SuperIO](superio/index.md)
Options <lib/option.md> * [Vendorcode](vendorcode/index.md)
Security <security/index.md> * [Utilities](util.md)
SuperIO <superio/index.md> * [Software Bill of Materials](sbom/sbom.md)
Vendorcode <vendorcode/index.md> * [Project infrastructure & services](infrastructure/index.md)
Utilities <util.md> * [Boards supported in each release directory](releases/boards_supported_on_branches.md)
Software Bill of Materials <sbom/sbom.md> * [Release notes](releases/index.md)
Project infrastructure & services <infrastructure/index.md> * [Acronyms & Definitions](acronyms.md)
Boards supported in each release directory <releases/boards_supported_on_branches.md> * [External Resources](external_docs.md)
Release notes <releases/index.md> * [Documentation License](documentation_license.md)
Acronyms & Definitions <acronyms.md>
External Resources <external_docs.md>
Documentation License <documentation_license.md>
```
[Documentation]: https://review.coreboot.org/plugins/gitiles/coreboot/+/refs/heads/main/Documentation/ [Documentation]: https://review.coreboot.org/plugins/gitiles/coreboot/+/refs/heads/main/Documentation/

View File

@@ -1,52 +0,0 @@
# Operating our services
## Mailing list moderation
Our [mailing lists] experience the same barrage of spam mails than any
other email address. We do have a spam filter in front of it, and
since the lists require registration, spam ends up in the moderation
queue. But not only spam ends up there, sometimes users send inquiries
without registering first. It's a custom of the project to let these
through, so that such emails can be discussed. This requires manual
intervention.
This section describes the tasks related to mailing list management.
### Registration
To participate in mailing list moderation, you need to become a list
moderator or owner. This is up for the existing owners to handle and
if you want to contribute in that area, it might be best to bring it
up at the leadership meeting.
After gaining leadership approval, list admins can add you to the
appropriate group in the [mailing list backend] by selecting the list,
then User / group-name, and add your email address there.
### Regular tasks
Most of our lists are auto-subscribing, so users can register
themselves and finish the process by responding to the double-opt-in
email. Some lists are manually managed though. The [mailing list
backend] shows the number of open subscription requests for these
lists on the mailing list's main page.
It also provides a list of held messages, where they can be accepted,
rejected or dropped. Spam should be dropped, that's clear. Emails with
huge attachments (e.g. screenshots) should be rejected, which gives
you an opportunity to explain the reason (in case of large
attachments, something like "Please re-send without attachments, offer
the files through some other mechanism please: Our emails are
distributed to hundreds of readers, and sending the files to everybody
is inconsiderate of traffic and storage constraints.")
Legit emails (often simple requests of the form "is this or that
supported") can be accepted, which means they'll be sent out.
If you notice recurring spam sources (e.g. marketers) you can put them
on the [global ban list] to filter them out across all lists. It takes
entries in regular expression format.
[mailing lists]: https://mail.coreboot.org/hyperkitty/
[mailing list backend]: https://mail.coreboot.org/postorius/
[global ban list]: https://mail.coreboot.org/postorius/bans/

View File

@@ -93,19 +93,11 @@ You can see all the builds in the main jenkins interface:
Most of the time on the builders is taken up by the coreboot main and Most of the time on the builders is taken up by the coreboot main and
coreboot gerrit builds. coreboot gerrit builds.
```{toctree} * [coreboot gerrit build](https://qa.coreboot.org/job/coreboot-gerrit/)
:maxdepth: 1
coreboot gerrit build <https://qa.coreboot.org/job/coreboot-gerrit/>
```
([Time trend](https://qa.coreboot.org/job/coreboot-gerrit/buildTimeTrend)) ([Time trend](https://qa.coreboot.org/job/coreboot-gerrit/buildTimeTrend))
```{toctree} * [coreboot main build](https://qa.coreboot.org/job/coreboot/)
:maxdepth: 1
coreboot main build <https://qa.coreboot.org/job/coreboot/>
```
([Time trend](https://qa.coreboot.org/job/coreboot/buildTimeTrend)) ([Time trend](https://qa.coreboot.org/job/coreboot/buildTimeTrend))

View File

@@ -4,17 +4,9 @@ This section contains documentation about our infrastructure
## Services ## Services
```{toctree} * [Project services](services.md)
:maxdepth: 1
Project services <services.md>
Administrator's handbook <admin.md>
```
## Jenkins builders and builds ## Jenkins builders and builds
```{toctree} * [Setting up Jenkins build machines](builders.md)
:maxdepth: 1 * [Coverity Scan integration](coverity.md)
Setting up Jenkins build machines <builders.md>
Coverity Scan integration <coverity.md>
```

View File

@@ -3,11 +3,7 @@
This section contains documentation about coreboot internal technical This section contains documentation about coreboot internal technical
information and libraries. information and libraries.
```{toctree} - [Flashmap and Flashmap Descriptor](flashmap.md)
:maxdepth: 1 - [ABI data consumption](abi-data-consumption.md)
- [Timestamps](timestamp.md)
Flashmap and Flashmap Descriptor <flashmap.md> - [Firmware Configuration Interface](fw_config.md)
ABI data consumption <abi-data-consumption.md>
Timestamps <timestamp.md>
Firmware Configuration Interface <fw_config.md>
```

View File

@@ -8,8 +8,4 @@ selected mainboard.
## FIT ## FIT
```{toctree} - [uImage.FIT support](fit.md)
:maxdepth: 1
uImage.FIT support <fit.md>
```

View File

@@ -5,7 +5,7 @@ Acer models Aspire M3800, Aspire M5800 and possibly more.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | Intel G43 (called x4x in coreboot code) | | Northbridge | Intel G43 (called x4x in coreboot code) |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
@@ -69,7 +69,7 @@ Tests were done with SeaBIOS 1.14.0 and slackware64-live from 2019-07-12
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+-------------------+---------------------+ +-------------------+---------------------+
| Type | Value | | Type | Value |
+===================+=====================+ +===================+=====================+
@@ -122,7 +122,7 @@ $ sudo flashrom \
-w coreboot.rom -w coreboot.rom
``` ```
```{eval-rst} ```eval_rst
In addition to the information here, please see the In addition to the information here, please see the
:doc:`../../tutorial/flashing_firmware/index`. :doc:`../../tutorial/flashing_firmware/index`.
``` ```

View File

@@ -33,7 +33,7 @@ Three items are marked in this picture
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+--------------------+ +---------------------+--------------------+
| Type | Value | | Type | Value |
+=====================+====================+ +=====================+====================+
@@ -53,7 +53,7 @@ Three items are marked in this picture
## Technology ## Technology
```{eval-rst} ```eval_rst
+---------------+------------------------------+ +---------------+------------------------------+
| Fan control | Using fintek F81803A | | Fan control | Using fintek F81803A |
+---------------+------------------------------+ +---------------+------------------------------+
@@ -63,7 +63,7 @@ Three items are marked in this picture
## Description of pictures within this document ## Description of pictures within this document
```{eval-rst} ```eval_rst
+----------------------------+----------------------------------------+ +----------------------------+----------------------------------------+
|pademelon.jpg | Motherboard with components identified | |pademelon.jpg | Motherboard with components identified |
+----------------------------+----------------------------------------+ +----------------------------+----------------------------------------+

View File

@@ -11,7 +11,7 @@ Intel company provides [Firmware Support Package (2.0)](../../soc/intel/fsp/inde
FSP Information: FSP Information:
```{eval-rst} ```eval_rst
+-----------------------------+-------------------+-------------------+ +-----------------------------+-------------------+-------------------+
| FSP Project Name | Directory | Specification | | FSP Project Name | Directory | Specification |
+-----------------------------+-------------------+-------------------+ +-----------------------------+-------------------+-------------------+
@@ -114,7 +114,7 @@ facing towards the bottom of the board.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| CPU | Intel Skylake/Kaby Lake (LGA1151) | | CPU | Intel Skylake/Kaby Lake (LGA1151) |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -5,7 +5,7 @@ Bridge and Ivy Bridge CPUs.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | | Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
@@ -71,7 +71,7 @@ extlinux
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+------------+ +---------------------+------------+
| Type | Value | | Type | Value |
+=====================+============+ +=====================+============+
@@ -115,7 +115,7 @@ $ sudo flashrom --noverify-all --ifd -i bios -p internal -w coreboot.rom
The use of `--noverify-all` is required since the Management Engine The use of `--noverify-all` is required since the Management Engine
region is not readable even by the host. region is not readable even by the host.
```{eval-rst} ```eval_rst
In addition to the information here, please see the In addition to the information here, please see the
:doc:`../../tutorial/flashing_firmware/index`. :doc:`../../tutorial/flashing_firmware/index`.
``` ```

View File

@@ -4,7 +4,7 @@ This page describes how to run coreboot on the [ASRock H81M-HDS].
## Required proprietary blobs ## Required proprietary blobs
```{eval-rst} ```eval_rst
Please see :doc:`../../northbridge/intel/haswell/mrc.bin`. Please see :doc:`../../northbridge/intel/haswell/mrc.bin`.
``` ```
@@ -75,7 +75,7 @@ facing towards the bottom of the board.
in coreboot. The `coretemp` driver can still be used for accurate CPU in coreboot. The `coretemp` driver can still be used for accurate CPU
temperature readings from an OS. temperature readings from an OS.
```{eval-rst} ```eval_rst
Please also see :doc:`../../northbridge/intel/haswell/known-issues`. Please also see :doc:`../../northbridge/intel/haswell/known-issues`.
``` ```
@@ -111,7 +111,7 @@ Please also see :doc:`../../northbridge/intel/haswell/known-issues`.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | :doc:`../../northbridge/intel/haswell/index` | | Northbridge | :doc:`../../northbridge/intel/haswell/index` |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -14,7 +14,7 @@ and their GPU is [Sea Islands] (GCN2-based).
A10 Richland is recommended for the best performance and working IOMMU. A10 Richland is recommended for the best performance and working IOMMU.
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| A88XM-E | | | A88XM-E | |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
@@ -36,7 +36,7 @@ A10 Richland is recommended for the best performance and working IOMMU.
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+------------+ +---------------------+------------+
| Type | Value | | Type | Value |
+=====================+============+ +=====================+============+

View File

@@ -15,7 +15,7 @@ Both "Trinity" and "Richland" desktop processing units are working,
the CPU architecture in these CPUs/APUs is [Piledriver], the CPU architecture in these CPUs/APUs is [Piledriver],
and their GPU is [TeraScale 3] (VLIW4-based). and their GPU is [TeraScale 3] (VLIW4-based).
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| F2A85-M | | | F2A85-M | |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
@@ -35,7 +35,7 @@ and their GPU is [TeraScale 3] (VLIW4-based).
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
``` ```
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| F2A85-M LE | | | F2A85-M LE | |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
@@ -55,7 +55,7 @@ and their GPU is [TeraScale 3] (VLIW4-based).
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
``` ```
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| F2A85-M PRO | | | F2A85-M PRO | |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
@@ -77,7 +77,7 @@ and their GPU is [TeraScale 3] (VLIW4-based).
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+------------+ +---------------------+------------+
| Type | Value | | Type | Value |
+=====================+============+ +=====================+============+

View File

@@ -10,7 +10,7 @@ This page describes how to run coreboot on the ASUS P2B-LS mainboard.
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+---------------------------+ +---------------------+---------------------------+
| Type | Value | | Type | Value |
+=====================+===========================+ +=====================+===========================+
@@ -90,7 +90,7 @@ for only CPU models that the board will actually be run with.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | Intel I440BX | | Northbridge | Intel I440BX |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -4,7 +4,7 @@ This page describes how to run coreboot on the ASUS P3B-F mainboard.
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+---------------------------+ +---------------------+---------------------------+
| Type | Value | | Type | Value |
+=====================+===========================+ +=====================+===========================+
@@ -88,7 +88,7 @@ for only CPU models that the board will actually be run with.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | Intel I440BX | | Northbridge | Intel I440BX |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -32,7 +32,7 @@ This page describes how to run coreboot on the [ASUS P5Q] desktop board.
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+-------------------+----------------+ +-------------------+----------------+
| Type | Value | | Type | Value |
+===================+================+ +===================+================+
@@ -56,7 +56,7 @@ You can flash coreboot into your motherboard using [this guide].
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+---------------------------------------------------+ +------------------+---------------------------------------------------+
| Northbridge | Intel P45 (called x4x in coreboot code) | | Northbridge | Intel P45 (called x4x in coreboot code) |
+------------------+---------------------------------------------------+ +------------------+---------------------------------------------------+

View File

@@ -4,7 +4,7 @@ This page describes how to run coreboot on the [ASUS P8H77-V].
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+----------------+ +---------------------+----------------+
| Type | Value | | Type | Value |
+=====================+================+ +=====================+================+
@@ -69,7 +69,7 @@ flash externally.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | | Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -4,7 +4,7 @@ This page describes how to run coreboot on the [ASUS P8H61-M LX].
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+------------+ +---------------------+------------+
| Type | Value | | Type | Value |
+=====================+============+ +=====================+============+
@@ -84,7 +84,7 @@ region is not readable even by the host.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | | Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -4,7 +4,7 @@ This page describes how to run coreboot on the [ASUS P8H61-M Pro].
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+------------+ +---------------------+------------+
| Type | Value | | Type | Value |
+=====================+============+ +=====================+============+
@@ -78,7 +78,7 @@ region is not readable even by the host.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | | Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -4,7 +4,7 @@ This page describes how to run coreboot on the [ASUS P8H77-V].
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+----------------+ +---------------------+----------------+
| Type | Value | | Type | Value |
+=====================+================+ +=====================+================+
@@ -56,7 +56,7 @@ work. The flash chip is socketed, so it's easy to remove and reflash.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | | Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -4,7 +4,7 @@ This page describes how to run coreboot on the [ASUS P8Z77-M].
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+----------------+ +---------------------+----------------+
| Type | Value | | Type | Value |
+=====================+================+ +=====================+================+
@@ -112,7 +112,7 @@ therefore they currently do nothing under coreboot.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | | Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -4,7 +4,7 @@ This page describes how to run coreboot on the [ASUS P8Z77-M PRO]
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+----------------+ +---------------------+----------------+
| Type | Value | | Type | Value |
+=====================+================+ +=====================+================+
@@ -143,7 +143,7 @@ easy to remove and reflash.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | | Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -4,7 +4,7 @@ This page describes how to run coreboot on the [ASUS P8Z77-V].
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+----------------+ +---------------------+----------------+
| Type | Value | | Type | Value |
+=====================+================+ +=====================+================+
@@ -86,7 +86,7 @@ See [Asus Wi-Fi Go! v1].
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | | Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -8,7 +8,7 @@ through a proprietary 16-1 pin connector.
I managed to grope the most pinout of the proprietary connector. I managed to grope the most pinout of the proprietary connector.
See [Mini PCIe pinout] for more info. See [Mini PCIe pinout] for more info.
```{eval-rst} ```eval_rst
+------------+----------+-----------+------------+----------+-----------+ +------------+----------+-----------+------------+----------+-----------+
| WIFIGO Pin | Usage | mPCIe pin | WIFIGO Pin | Usage | mPCIe pin | | WIFIGO Pin | Usage | mPCIe pin | WIFIGO Pin | Usage | mPCIe pin |
+============+==========+===========+============+==========+===========+ +============+==========+===========+============+==========+===========+

View File

@@ -17,7 +17,7 @@
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+----------------+ +---------------------+----------------+
| Type | Value | | Type | Value |
+=====================+================+ +=====================+================+
@@ -58,7 +58,7 @@
## Technology ## Technology
```{eval-rst} ```eval_rst
+---------------+----------------------------------------+ +---------------+----------------------------------------+
| SoC | :doc:`../../soc/cavium/cn81xx/index` | | SoC | :doc:`../../soc/cavium/cn81xx/index` |
+---------------+----------------------------------------+ +---------------+----------------------------------------+

View File

@@ -2,7 +2,7 @@
## Hardware ## Hardware
### Technology ### Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------+ +------------------+--------------------------------+
| CPU | Intel i7-8550U | | CPU | Intel i7-8550U |
+------------------+--------------------------------+ +------------------+--------------------------------+
@@ -15,7 +15,7 @@
``` ```
### Flash chip ### Flash chip
```{eval-rst} ```eval_rst
+---------------------+-----------------+ +---------------------+-----------------+
| Type | Value | | Type | Value |
+=====================+=================+ +=====================+=================+

View File

@@ -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.
![Dell Latitude E7240 mainboard](e7240.webp)
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

View File

@@ -6,7 +6,7 @@ This page describes how to run coreboot on Dell OptiPlex 9010 SFF.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------+---------------------------------------------------------------+ +------------+---------------------------------------------------------------+
| CPU | Intel Core 2nd Gen (Sandybridge) or 3rd Gen (Ivybridge) | | CPU | Intel Core 2nd Gen (Sandybridge) or 3rd Gen (Ivybridge) |
+------------+---------------------------------------------------------------+ +------------+---------------------------------------------------------------+
@@ -28,7 +28,7 @@ More specifications on [Dell OptiPlex 9010 specifications].
## Required proprietary blobs ## Required proprietary blobs
```{eval-rst} ```eval_rst
+------------------+---------------------------------+---------------------+ +------------------+---------------------------------+---------------------+
| Binary file | Apply | Required / Optional | | Binary file | Apply | Required / Optional |
+==================+=================================+=====================+ +==================+=================================+=====================+
@@ -50,7 +50,7 @@ signature `SMSCUBIM`. The easiest way to do this is to use [UEFITool] and
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+--------------------------+ +---------------------+--------------------------+
| Type | Value | | Type | Value |
+=====================+==========================+ +=====================+==========================+

View File

@@ -3,9 +3,6 @@
## Building coreboot and running it in QEMU ## Building coreboot and running it in QEMU
- Configure coreboot and run `make` as usual - Configure coreboot and run `make` as usual
- Run `util/riscv/make-spike-elf.sh build/coreboot.rom build/coreboot.elf` to
Run QEMU convert coreboot to an ELF that QEMU can load
``` - Run `qemu-system-riscv64 -M virt -m 1024M -nographic -kernel build/coreboot.elf`
qemu-system-riscv64 -M virt -m 1G -nographic -bios build/coreboot.rom \
-drive if=pflash,file=./build/coreboot.rom,format=raw
```

View File

@@ -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

View File

@@ -63,7 +63,7 @@ Specifically, it's a Winbond W25Q64FV (3.3V), whose datasheet can be found
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| SoC | Intel Atom Processor N3710 | | SoC | Intel Atom Processor N3710 |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -14,7 +14,7 @@ Intel company provides [Firmware Support Package (2.0)](../../soc/intel/fsp/inde
FSP Information: FSP Information:
```{eval-rst} ```eval_rst
+-----------------------------+-------------------+-------------------+ +-----------------------------+-------------------+-------------------+
| FSP Project Name | Directory | Specification | | FSP Project Name | Directory | Specification |
+-----------------------------+-------------------+-------------------+ +-----------------------------+-------------------+-------------------+
@@ -116,7 +116,7 @@ output.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| SoC | Intel Kaby Lake U | | SoC | Intel Kaby Lake U |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -14,7 +14,7 @@ The default options for this board should result in a fully working image:
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+--------+ +---------------------+--------+
| Type | Value | | Type | Value |
+=====================+========+ +=====================+========+
@@ -56,7 +56,7 @@ To do this gently take the SPI flash out of its socket and flash with your progr
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+------------------+ +------------------+------------------+
| Northbridge | Intel Pinevew | | Northbridge | Intel Pinevew |
+------------------+------------------+ +------------------+------------------+

View File

@@ -6,7 +6,7 @@ This motherboard [also works with Libreboot](https://libreboot.org/docs/install/
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Type | Value | | Type | Value |
+==================+==================================================+ +==================+==================================================+
@@ -30,7 +30,7 @@ This motherboard [also works with Libreboot](https://libreboot.org/docs/install/
## Preparation ## Preparation
```{eval-rst} ```eval_rst
For more datails how to get sources and build the toolchain, see :doc:`../../tutorial/part1`. For more datails how to get sources and build the toolchain, see :doc:`../../tutorial/part1`.
``` ```
@@ -140,7 +140,7 @@ Built gigabyte/ga-g41m-es2l (GA-G41M-ES2L)
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
In addition to the information here, please see the In addition to the information here, please see the
:doc:`../../tutorial/flashing_firmware/index`. :doc:`../../tutorial/flashing_firmware/index`.
``` ```

View File

@@ -5,7 +5,7 @@ from [Gigabyte].
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+------------+ +---------------------+------------+
| Type | Value | | Type | Value |
+=====================+============+ +=====================+============+
@@ -59,7 +59,7 @@ However, this makes DualBIOS unable to recover from a bad flash for some reason.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | | Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -74,7 +74,7 @@ The EHCI debug port is the left USB3 port.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| CPU | Intel Sandy/Ivy Bridge (FCPGA988) | | CPU | Intel Sandy/Ivy Bridge (FCPGA988) |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -80,7 +80,7 @@ Schematic of this laptop can be found on [Lab One].
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| CPU | Intel Sandy/Ivy Bridge (FCPGA988) | | CPU | Intel Sandy/Ivy Bridge (FCPGA988) |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -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.
![8560w_chip_location](8560w_flash.webp)
```{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

View File

@@ -7,7 +7,7 @@ checkout the [code on gerrit] to build coreboot for the laptop.
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+------------+ +---------------------+------------+
| Type | Value | | Type | Value |
+=====================+============+ +=====================+============+
@@ -66,7 +66,7 @@ clip to read and flash the chip.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | | Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -13,7 +13,7 @@ The following things are still missing from this coreboot port:
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+-------------------------+ +---------------------+-------------------------+
| Type | Value | | Type | Value |
+=====================+=========================+ +=====================+=========================+
@@ -128,7 +128,7 @@ as otherwise there's not enough space near the flash.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | | Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -5,7 +5,7 @@ from [HP].
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+-------------+ +---------------------+-------------+
| Type | Value | | Type | Value |
+=====================+=============+ +=====================+=============+
@@ -42,7 +42,7 @@ Wake on LAN is active works great.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | | Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -124,7 +124,7 @@ The board can be debugged with EHCI debug. The EHCI debug port is the USB port o
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+-----------------------------+ +------------------+-----------------------------+
| SoC | Intel Broadwell | | SoC | Intel Broadwell |
+------------------+-----------------------------+ +------------------+-----------------------------+

View File

@@ -138,7 +138,7 @@ The board can be debugged with EHCI debug. The EHCI debug port is the USB port o
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+-----------------------------+ +------------------+-----------------------------+
| CPU | Intel Haswell-ULT | | CPU | Intel Haswell-ULT |
+------------------+-----------------------------+ +------------------+-----------------------------+

View File

@@ -1,103 +0,0 @@
# HP Pro 3500 Series
This page describes how to run coreboot on the [Pro 3500 Series]
desktop from [HP].
## State
All peripherals should work. Automatic fan control as well as S3 are
working. The board was tested to boot Linux and Windows. EHCI debug
is untested. When using MrChromebox edk2 with secure boot build in, the
board will hang on each boot for about 20 seconds before continuing.
With disabled ME, the SuperIO will not get CPU temperatures via PECI and
therefore the automatic fan control will not increase the fan speed.
## Flashing coreboot
```{eval-rst}
+---------------------+-------------------------+
| Type | Value |
+=====================+=========================+
| Socketed flash | No |
+---------------------+-------------------------+
| Model | W25Q64FVSIG |
+---------------------+-------------------------+
| Size | 8 MiB |
+---------------------+-------------------------+
| In circuit flashing | Yes |
+---------------------+-------------------------+
| Package | SOIC-8 |
+---------------------+-------------------------+
| Write protection | See below |
+---------------------+-------------------------+
| Dual BIOS feature | No |
+---------------------+-------------------------+
| Internal flashing | Yes |
+---------------------+-------------------------+
```
### Flash layout
The original layout of the flash should look like this:
```
00000000:00000fff fd
00400000:007fffff bios
00001000:003fffff me
00fff000:00000fff gbe
00fff000:00000fff pd
```
### Internal programming
The SPI flash can be accessed using [flashrom] (although it reports as
"N25Q064..3E", it works fine).
With a missing FDO jumper, `fd` region is read-only, `bios` region is
read-write and `me` region is locked. Vendor firmware will additionally
protect the flash chip. After shorting the FDO jumper (E2) full
read-write access is granted.
Do **NOT shutdown** the operating system **after flashing** coreboot
from the vendor firmware! This will brick your device because the bios
region will be modified on shutdown. Cut the AC power or do a restart
from the OS.
**Position of FDO jumper (E2) close to the F_USB3**
![][pro_3500_jumper]
[pro_3500_jumper]: pro_3500_series_jumper.avif
### External programming
External programming with an SPI adapter and [flashrom] does work, but
it powers the whole southbridge complex. The average current will be
400mA but spikes may be higher. Connect the power to the flash or the
programming header next to the flash otherwise programming is unstable.
The supply needs to quickly reach 3V3 or else the chip is also unstable
until cleanly power cycled.
**Position of SOIC-8 flash and pin-header near ATX power connector**
![][pro_3500_flash]
[pro_3500_flash]: pro_3500_series_flash.avif
## Technology
```{eval-rst}
+------------------+--------------------------------------------------+
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
+------------------+--------------------------------------------------+
| Southbridge | bd82x6x (bd82h61) |
+------------------+--------------------------------------------------+
| CPU | model_206ax |
+------------------+--------------------------------------------------+
| SuperIO | IT8779E (identifies as IT8772F via register) |
+------------------+--------------------------------------------------+
| EC | Fixed function as part of SuperIO |
+------------------+--------------------------------------------------+
| Coprocessor | Intel ME |
+------------------+--------------------------------------------------+
```
[Pro 3500 Series]: https://support.hp.com/us-en/document/c03364089
[HP]: https://www.hp.com/
[flashrom]: https://flashrom.org/Flashrom

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -13,7 +13,7 @@ The following things are still missing from this coreboot port:
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+-------------+ +---------------------+-------------+
| Type | Value | | Type | Value |
+=====================+=============+ +=====================+=============+
@@ -58,7 +58,7 @@ even interchangeable, so should do coreboot images built for them.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | | Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -4,397 +4,240 @@ This section contains documentation about coreboot on specific mainboards.
## 51NB ## 51NB
```{toctree} - [X210](51nb/x210.md)
:maxdepth: 1
X210 <51nb/x210.md>
```
## Acer ## Acer
```{toctree} - [G43T-AM3](acer/g43t-am3.md)
:maxdepth: 1
G43T-AM3 <acer/g43t-am3.md>
```
## AMD ## AMD
```{toctree} - [pademelon](amd/pademelon/pademelon.md)
:maxdepth: 1
pademelon <amd/pademelon/pademelon.md>
```
## ASRock ## ASRock
```{toctree} - [H77 Pro4-M](asrock/h77pro4-m.md)
:maxdepth: 1 - [H81M-HDS](asrock/h81m-hds.md)
- [H110M-DVS](asrock/h110m-dvs.md)
H77 Pro4-M <asrock/h77pro4-m.md>
H81M-HDS <asrock/h81m-hds.md>
H110M-DVS <asrock/h110m-dvs.md>
```
## ASUS ## ASUS
```{toctree} - [A88XM-E](asus/a88xm-e.md)
:maxdepth: 1 - [F2A85-M](asus/f2a85-m.md)
- [P2B-LS](asus/p2b-ls.md)
A88XM-E <asus/a88xm-e.md> - [P3B-F](asus/p3b-f.md)
F2A85-M <asus/f2a85-m.md> - [P5Q](asus/p5q.md)
P2B-LS <asus/p2b-ls.md> - [P8C WS](asus/p8c_ws.md)
P3B-F <asus/p3b-f.md> - [P8H61-M LX](asus/p8h61-m_lx.md)
P5Q <asus/p5q.md> - [P8H61-M Pro](asus/p8h61-m_pro.md)
P8C WS <asus/p8c_ws.md> - [P8H77-V](asus/p8h77-v.md)
P8H61-M LX <asus/p8h61-m_lx.md> - [P8Z77-M](asus/p8z77-m.md)
P8H61-M Pro <asus/p8h61-m_pro.md> - [P8Z77-M Pro](asus/p8z77-m_pro.md)
P8H77-V <asus/p8h77-v.md> - [P8Z77-V](asus/p8z77-v.md)
P8Z77-M <asus/p8z77-m.md> - [wifigo_v1](asus/wifigo_v1.md)
P8Z77-M Pro <asus/p8z77-m_pro.md>
P8Z77-V <asus/p8z77-v.md>
wifigo_v1 <asus/wifigo_v1.md>
```
## Cavium ## Cavium
```{toctree} - [CN81XX EVB SFF](cavium/cn8100_sff_evb.md)
:maxdepth: 1
CN81XX EVB SFF <cavium/cn8100_sff_evb.md>
```
## Clevo ## Clevo
```{toctree} - [N130WU / N131WU](clevo/n130wu/index.md)
:maxdepth: 1
N130WU / N131WU <clevo/n130wu/index.md>
```
## Dell ## Dell
```{toctree} - [OptiPlex 9010 SFF](dell/optiplex_9010.md)
:maxdepth: 1
Latitude E7240 <dell/e7240.md>
OptiPlex 9010 SFF <dell/optiplex_9010.md>
```
## Emulation ## Emulation
The boards in this section are not real mainboards, but emulators. The boards in this section are not real mainboards, but emulators.
```{toctree} - [Spike RISC-V emulator](emulation/spike-riscv.md)
:maxdepth: 1 - [QEMU RISC-V emulator](emulation/qemu-riscv.md)
- [QEMU AArch64 emulator](emulation/qemu-aarch64.md)
Spike RISC-V emulator <emulation/spike-riscv.md> - [QEMU x86 Q35](emulation/qemu-q35.md)
QEMU RISC-V emulator <emulation/qemu-riscv.md> - [QEMU x86 PC](emulation/qemu-i440fx.md)
QEMU AArch64 emulator <emulation/qemu-aarch64.md> - [QEMU POWER9](emulation/qemu-power9.md)
QEMU SBSA emulator <emulation/qemu-sbsa.md>
QEMU x86 Q35 <emulation/qemu-q35.md>
QEMU x86 PC <emulation/qemu-i440fx.md>
QEMU POWER9 <emulation/qemu-power9.md>
```
## Facebook ## Facebook
```{toctree} - [FBG-1701](facebook/fbg1701.md)
:maxdepth: 1 - [Monolith](facebook/monolith.md)
FBG-1701 <facebook/fbg1701.md>
Monolith <facebook/monolith.md>
```
## Foxconn ## Foxconn
```{toctree} - [D41S](foxconn/d41s.md)
:maxdepth: 1
D41S <foxconn/d41s.md>
```
## Gigabyte ## Gigabyte
```{toctree} - [GA-G41M-ES2L](gigabyte/ga-g41m-es2l.md)
:maxdepth: 1 - [GA-H61M-S2PV](gigabyte/ga-h61m-s2pv.md)
GA-G41M-ES2L <gigabyte/ga-g41m-es2l.md>
GA-H61M-S2PV <gigabyte/ga-h61m-s2pv.md>
```
## HP ## HP
```{toctree} - [Compaq 8200 Elite SFF](hp/compaq_8200_sff.md)
:maxdepth: 1 - [Compaq Elite 8300 USDT](hp/compaq_8300_usdt.md)
- [Z220 Workstation SFF](hp/z220_sff.md)
Compaq 8200 Elite SFF <hp/compaq_8200_sff.md>
Compaq Elite 8300 USDT <hp/compaq_8300_usdt.md>
Pro 3500 Series <hp/pro_3500_series.md>
Z220 Workstation SFF <hp/z220_sff.md>
```
### EliteBook series ### EliteBook series
```{toctree} - [HP Laptops with KBC1126 EC](hp/hp_kbc1126_laptops.md)
:maxdepth: 1 - [HP Sure Start](hp/hp_sure_start.md)
- [EliteBook 2170p](hp/2170p.md)
HP Laptops with KBC1126 EC <hp/hp_kbc1126_laptops.md> - [EliteBook 2560p](hp/2560p.md)
HP Sure Start <hp/hp_sure_start.md> - [EliteBook 8760w](hp/8760w.md)
EliteBook 2170p <hp/2170p.md> - [EliteBook Folio 9480m](hp/folio_9480m.md)
EliteBook 2560p <hp/2560p.md> - [EliteBook 820 G2](hp/elitebook_820_g2.md)
EliteBook 8560w <hp/8560w.md>
EliteBook 8760w <hp/8760w.md>
EliteBook Folio 9480m <hp/folio_9480m.md>
EliteBook 820 G2 <hp/elitebook_820_g2.md>
```
## Intel ## Intel
```{toctree} - [DG43GT](intel/dg43gt.md)
:maxdepth: 1 - [DQ67SW](intel/dq67sw.md)
- [KBLRVP11](intel/kblrvp11.md)
DG43GT <intel/dg43gt.md>
DQ67SW <intel/dq67sw.md>
KBLRVP11 <intel/kblrvp11.md>
```
## Kontron ## Kontron
```{toctree} - [mAL-10](kontron/mal10.md)
:maxdepth: 1
mAL-10 <kontron/mal10.md>
```
## Lenovo ## Lenovo
```{toctree} - [Mainboard codenames](lenovo/codenames.md)
:maxdepth: 1 - [Hardware Maintenance Manual of ThinkPads](lenovo/thinkpad_hmm.md)
- [R60](lenovo/r60.md)
Mainboard codenames <lenovo/codenames.md> - [T4xx common](lenovo/t4xx_series.md)
Hardware Maintenance Manual of ThinkPads <lenovo/thinkpad_hmm.md> - [X2xx common](lenovo/x2xx_series.md)
R60 <lenovo/r60.md> - [vboot](lenovo/vboot.md)
T4xx common <lenovo/t4xx_series.md>
X2xx common <lenovo/x2xx_series.md>
vboot <lenovo/vboot.md>
```
### GM45 series ### GM45 series
```{toctree} - [X200 / T400 / T500 / X301 common](lenovo/montevina_series.md)
:maxdepth: 1 - [X301](lenovo/x301.md)
X200 / T400 / T500 / X301 common <lenovo/montevina_series.md>
X301 <lenovo/x301.md>
```
### Arrandale series ### Arrandale series
```{toctree} - [T410](lenovo/t410.md)
:maxdepth: 1
T410 <lenovo/t410.md>
```
### Sandy Bridge series ### Sandy Bridge series
```{toctree} - [T420](lenovo/t420.md)
:maxdepth: 1 - [T420 / T520 / X220 / T420s / W520 common](lenovo/Sandy_Bridge_series.md)
- [X1](lenovo/x1.md)
T420 <lenovo/t420.md>
T420 / T520 / X220 / T420s / W520 common <lenovo/Sandy_Bridge_series.md>
X1 <lenovo/x1.md>
```
### Ivy Bridge series ### Ivy Bridge series
```{toctree} - [T430](lenovo/t430.md)
:maxdepth: 1 - [T530 / W530](lenovo/w530.md)
- [T430 / T530 / X230 / W530 common](lenovo/Ivy_Bridge_series.md)
T430 <lenovo/t430.md> - [T431s](lenovo/t431s.md)
T530 / W530 <lenovo/w530.md> - [X230s](lenovo/x230s.md)
T430 / T530 / X230 / W530 common <lenovo/Ivy_Bridge_series.md> - [Internal flashing](lenovo/ivb_internal_flashing.md)
T431s <lenovo/t431s.md>
X230s <lenovo/x230s.md>
Internal flashing <lenovo/ivb_internal_flashing.md>
```
### Haswell series ### Haswell series
```{toctree} - [T440p](lenovo/t440p.md)
:maxdepth: 1
T440p <lenovo/t440p.md>
```
## Libretrend ## Libretrend
```{toctree} - [LT1000](libretrend/lt1000.md)
:maxdepth: 1
LT1000 <libretrend/lt1000.md>
```
## MSI ## MSI
```{toctree} - [MS-7707](msi/ms7707/ms7707.md)
:maxdepth: 1
MS-7707 <msi/ms7707/ms7707.md>
```
## OCP ## OCP
```{toctree} - [Delta Lake](ocp/deltalake.md)
:maxdepth: 1 - [Tioga Pass](ocp/tiogapass.md)
Delta Lake <ocp/deltalake.md>
Tioga Pass <ocp/tiogapass.md>
```
## Open Cellular ## Open Cellular
```{toctree} - [Elgon](opencellular/elgon.md)
:maxdepth: 1
Elgon <opencellular/elgon.md>
```
## PC Engines ## PC Engines
```{toctree} - [APU1](pcengines/apu1.md)
:maxdepth: 1 - [APU2](pcengines/apu2.md)
APU1 <pcengines/apu1.md>
APU2 <pcengines/apu2.md>
```
## Portwell ## Portwell
```{toctree} - [PQ7-M107](portwell/pq7-m107.md)
:maxdepth: 1
PQ7-M107 <portwell/pq7-m107.md>
```
## Prodrive ## Prodrive
```{toctree} - [Hermes](prodrive/hermes.md)
:maxdepth: 1
Hermes <prodrive/hermes.md>
```
## Purism ## Purism
```{toctree} - [Librem 14](purism/librem_14.md)
:maxdepth: 1 - [Librem Mini](purism/librem_mini.md)
Librem 14 <purism/librem_14.md>
Librem Mini <purism/librem_mini.md>
```
## Protectli ## Protectli
```{toctree} - [FW2B / FW4B](protectli/fw2b_fw4b.md)
:maxdepth: 1 - [FW6A / FW6B / FW6C](protectli/fw6.md)
- [VP2420](protectli/vp2420.md)
FW2B / FW4B <protectli/fw2b_fw4b.md> - [VP4630 / VP4650 / VP4670](protectli/vp46xx.md)
FW6A / FW6B / FW6C <protectli/fw6.md>
VP2420 <protectli/vp2420.md>
VP4630 / VP4650 / VP4670 <protectli/vp46xx.md>
```
## Roda ## Roda
```{toctree} - [RK9 Flash Header](roda/rk9/flash_header.md)
:maxdepth: 1
RK9 Flash Header <roda/rk9/flash_header.md>
```
## SiFive ## SiFive
```{toctree} - [SiFive HiFive Unleashed](sifive/hifive-unleashed.md)
:maxdepth: 1
SiFive HiFive Unleashed <sifive/hifive-unleashed.md>
```
## Star Labs Systems ## Star Labs Systems
```{toctree} - [LabTop Mk III](starlabs/labtop_kbl.md)
:maxdepth: 1 - [LabTop Mk IV](starlabs/labtop_cml.md)
- [StarLite Mk III](starlabs/lite_glk.md)
LabTop Mk III <starlabs/labtop_kbl.md> - [StarLite Mk IV](starlabs/lite_glkr.md)
LabTop Mk IV <starlabs/labtop_cml.md> - [StarBook Mk V](starlabs/starbook_tgl.md)
StarLite Mk III <starlabs/lite_glk.md> - [StarBook Mk VI](starlabs/starbook_adl.md)
StarLite Mk IV <starlabs/lite_glkr.md> - [Flashing devices](starlabs/common/flashing.md)
StarLite Mk V <starlabs/lite_adl.md>
StarBook Mk V <starlabs/starbook_tgl.md>
StarBook Mk VI <starlabs/starbook_adl.md>
Flashing devices <starlabs/common/flashing.md>
```
## Supermicro ## Supermicro
```{toctree} - [X9SAE](supermicro/x9sae.md)
:maxdepth: 1 - [X10SLM+-F](supermicro/x10slm-f.md)
- [X11 LGA1151 series](supermicro/x11-lga1151-series/x11-lga1151-series.md)
X9SAE <supermicro/x9sae.md> - [Flashing using the BMC](supermicro/flashing_on_vendorbmc.md)
X10SLM+-F <supermicro/x10slm-f.md>
X11 LGA1151 series <supermicro/x11-lga1151-series/x11-lga1151-series.md>
Flashing using the BMC <supermicro/flashing_on_vendorbmc.md>
```
## System76 ## System76
```{toctree} - [Adder Workstation 1](system76/addw1.md)
:maxdepth: 1 - [Adder Workstation 2](system76/addw2.md)
- [Adder Workstation 3](system76/addw3.md)
Adder Workstation 1 <system76/addw1.md> - [Bonobo Workstation 14](system76/bonw14.md)
Adder Workstation 2 <system76/addw2.md> - [Bonobo Workstation 15](system76/bonw15.md)
Adder Workstation 3 <system76/addw3.md> - [Darter Pro 6](system76/darp6.md)
Bonobo Workstation 14 <system76/bonw14.md> - [Darter Pro 7](system76/darp7.md)
Bonobo Workstation 15 <system76/bonw15.md> - [Darter Pro 8](system76/darp8.md)
Darter Pro 6 <system76/darp6.md> - [Darter Pro 9](system76/darp9.md)
Darter Pro 7 <system76/darp7.md> - [Galago Pro 4](system76/galp4.md)
Darter Pro 8 <system76/darp8.md> - [Galago Pro 5](system76/galp5.md)
Darter Pro 9 <system76/darp9.md> - [Galago Pro 6](system76/galp6.md)
Galago Pro 4 <system76/galp4.md> - [Galago Pro 7](system76/galp7.md)
Galago Pro 5 <system76/galp5.md> - [Gazelle 15](system76/gaze15.md)
Galago Pro 6 <system76/galp6.md> - [Gazelle 16](system76/gaze16.md)
Galago Pro 7 <system76/galp7.md> - [Gazelle 17](system76/gaze17.md)
Gazelle 15 <system76/gaze15.md> - [Gazelle 18](system76/gaze18.md)
Gazelle 16 <system76/gaze16.md> - [Lemur Pro 9](system76/lemp9.md)
Gazelle 17 <system76/gaze17.md> - [Lemur Pro 10](system76/lemp10.md)
Gazelle 18 <system76/gaze18.md> - [Lemur Pro 11](system76/lemp11.md)
Lemur Pro 9 <system76/lemp9.md> - [Lemur Pro 12](system76/lemp12.md)
Lemur Pro 10 <system76/lemp10.md> - [Oryx Pro 5](system76/oryp5.md)
Lemur Pro 11 <system76/lemp11.md> - [Oryx Pro 6](system76/oryp6.md)
Lemur Pro 12 <system76/lemp12.md> - [Oryx Pro 7](system76/oryp7.md)
Oryx Pro 5 <system76/oryp5.md> - [Oryx Pro 8](system76/oryp8.md)
Oryx Pro 6 <system76/oryp6.md> - [Oryx Pro 9](system76/oryp9.md)
Oryx Pro 7 <system76/oryp7.md> - [Oryx Pro 10](system76/oryp10.md)
Oryx Pro 8 <system76/oryp8.md> - [Oryx Pro 11](system76/oryp11.md)
Oryx Pro 9 <system76/oryp9.md> - [Serval Workstation 13](system76/serw13.md)
Oryx Pro 10 <system76/oryp10.md>
Oryx Pro 11 <system76/oryp11.md>
Serval Workstation 13 <system76/serw13.md>
```
## Texas Instruments ## Texas Instruments
```{toctree} - [Beaglebone Black](ti/beaglebone-black.md)
:maxdepth: 1
Beaglebone Black <ti/beaglebone-black.md>
```
## UP ## UP
```{toctree} - [Squared](up/squared/index.md)
:maxdepth: 1
Squared <up/squared/index.md>
```

View File

@@ -4,7 +4,7 @@ This page describes how to run coreboot on the [Intel DG43GT] desktop.
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+------------+ +---------------------+------------+
| Type | Value | | Type | Value |
+=====================+============+ +=====================+============+
@@ -79,7 +79,7 @@ The layout of the header is:
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+---------------------------------------------------+ +------------------+---------------------------------------------------+
| Northbridge | Intel G43 (called x4x in coreboot code) | | Northbridge | Intel G43 (called x4x in coreboot code) |
+------------------+---------------------------------------------------+ +------------------+---------------------------------------------------+

View File

@@ -4,7 +4,7 @@ The Intel DQ67SW is a microATX-sized desktop board for Intel Sandy Bridge CPUs.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | | Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
@@ -67,7 +67,7 @@ The Intel DQ67SW is a microATX-sized desktop board for Intel Sandy Bridge CPUs.
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+------------+ +---------------------+------------+
| Type | Value | | Type | Value |
+=====================+============+ +=====================+============+
@@ -104,7 +104,7 @@ the PCI configuration space of the LPC Interface Bridge, is set.
It is possible to program the chip is to attach an external programmer It is possible to program the chip is to attach an external programmer
with an SOIC-8 clip. with an SOIC-8 clip.
```{eval-rst} ```eval_rst
Another way is to boot the vendor firmware in UEFI mode and exploit the Another way is to boot the vendor firmware in UEFI mode and exploit the
unpatched S3 Boot Script vulnerability. See this page for a similar procedure: unpatched S3 Boot Script vulnerability. See this page for a similar procedure:
:doc:`../lenovo/ivb_internal_flashing`. :doc:`../lenovo/ivb_internal_flashing`.
@@ -126,7 +126,7 @@ The boot script contains an entry that writes 0x02 to memory at address
Interface Bridge [0][1]. The value 0x02 sets the BLE bit, and the modification Interface Bridge [0][1]. The value 0x02 sets the BLE bit, and the modification
prevents this by making it write a 0 instead. prevents this by making it write a 0 instead.
```{eval-rst} ```eval_rst
After suspending and resuming the board, the BIOS region can be flashed with After suspending and resuming the board, the BIOS region can be flashed with
a coreboot image, e.g. using flashrom. Note that the ME region is not readable, a coreboot image, e.g. using flashrom. Note that the ME region is not readable,
so the `--noverify-all` flag is necessary. Please refer to the so the `--noverify-all` flag is necessary. Please refer to the

View File

@@ -23,7 +23,7 @@
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+------------+ +---------------------+------------+
| Type | Value | | Type | Value |
+=====================+============+ +=====================+============+
@@ -65,7 +65,7 @@ $ flashrom -p internal --ifd -i bios -w coreboot.rom --noverify-all
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+---------------------------------------------------+ +------------------+---------------------------------------------------+
| CPU | Kaby lake H (i7-7820EQ) | | CPU | Kaby lake H (i7-7820EQ) |
+------------------+---------------------------------------------------+ +------------------+---------------------------------------------------+

View File

@@ -6,7 +6,7 @@ processors.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------+----------------------------------+ +------------------+----------------------------------+
| COMe Type | mini pin-out type 10 | | COMe Type | mini pin-out type 10 |
+------------------+----------------------------------+ +------------------+----------------------------------+

View File

@@ -3,7 +3,7 @@
This information is valid for all supported models, except T430s, [T431s](t431s.md) and [X230s](x230s.md). This information is valid for all supported models, except T430s, [T431s](t431s.md) and [X230s](x230s.md).
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+--------------------------------+ +---------------------+--------------------------------+
| Type | Value | | Type | Value |
+=====================+================================+ +=====================+================================+
@@ -37,7 +37,7 @@ This information is valid for all supported models, except T430s, [T431s](t431s.
exceed 4MiB in size, which means CONFIG_CBFS_SIZE must be smaller than 4MiB. exceed 4MiB in size, which means CONFIG_CBFS_SIZE must be smaller than 4MiB.
* ROM chip size should be set to 12MiB. * ROM chip size should be set to 12MiB.
```{eval-rst} ```eval_rst
Please also have a look at :doc:`../../tutorial/flashing_firmware/index`. Please also have a look at :doc:`../../tutorial/flashing_firmware/index`.
``` ```
@@ -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.

View File

@@ -1,7 +1,7 @@
# Lenovo Sandy Bridge series # Lenovo Sandy Bridge series
## Flashing coreboot ## Flashing coreboot
```{eval-rst} ```eval_rst
+---------------------+--------------------+ +---------------------+--------------------+
| Type | Value | | Type | Value |
+=====================+====================+ +=====================+====================+

View File

@@ -1,6 +1,6 @@
# Lenovo mainboard codenames # Lenovo mainboard codenames
```{eval-rst} ```eval_rst
.. csv-table:: .. csv-table::
:header: "Marketing name", "Development codename" :header: "Marketing name", "Development codename"
:file: codenames.csv :file: codenames.csv

View File

@@ -19,11 +19,7 @@ that was discovered and fixed later.
- USB drive (in case you need to downgrade BIOS) - USB drive (in case you need to downgrade BIOS)
- Linux install that (can be) loaded in UEFI mode - Linux install that (can be) loaded in UEFI mode
```{toctree} - [CHIPSEC](https://github.com/chipsec/chipsec)
:maxdepth: 1
CHIPSEC <https://github.com/chipsec/chipsec>
```
## BIOS versions ## BIOS versions
@@ -31,7 +27,7 @@ Below is a table of BIOS versions that are vulnerable enough for our
goals, per model. The version number means that you need to downgrade to goals, per model. The version number means that you need to downgrade to
that or earlier version. that or earlier version.
```{eval-rst} ```eval_rst
+------------+--------------+ +------------+--------------+
| Model | BIOS version | | Model | BIOS version |
+============+==============+ +============+==============+

View File

@@ -20,7 +20,7 @@ touch any other regions:
## Installing without ME firmware ## Installing without ME firmware
```{eval-rst} ```eval_rst
.. Note:: .. Note::
**ThinkPad R500** has slightly different flash layout (it doesn't have **ThinkPad R500** has slightly different flash layout (it doesn't have
``gbe`` region), so the process would be a little different for that model. ``gbe`` region), so the process would be a little different for that model.
@@ -46,12 +46,12 @@ 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:
```{eval-rst} ```eval_rst
+---------------------------+---------------------------+---------------------------+ +---------------------------+---------------------------+---------------------------+
| 4 MiB chip | 8 MiB chip | 16 MiB chip | | 4 MiB chip | 8 MiB chip | 16 MiB chip |
+===========================+===========================+===========================+ +===========================+===========================+===========================+
@@ -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
@@ -102,7 +102,7 @@ $ make
If your flash is not 8 MiB, you need to change values of `flcomp_density1` and If your flash is not 8 MiB, you need to change values of `flcomp_density1` and
`flreg1_limit` in the `ifd-x200.set` file according to following table: `flreg1_limit` in the `ifd-x200.set` file according to following table:
```{eval-rst} ```eval_rst
+-----------------+-------+-------+--------+ +-----------------+-------+-------+--------+
| | 4 MiB | 8 MiB | 16 MiB | | | 4 MiB | 8 MiB | 16 MiB |
+=================+=======+=======+========+ +=================+=======+=======+========+
@@ -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.
@@ -144,7 +144,7 @@ Then build coreboot and flash whole `build/coreboot.rom` to the chip.
The flash layouts of the OEM firmware are as follows: The flash layouts of the OEM firmware are as follows:
```{eval-rst} ```eval_rst
+---------------------------------+---------------------------------+ +---------------------------------+---------------------------------+
| 4 MiB chip | 8 MiB chip | | 4 MiB chip | 8 MiB chip |
+=================================+=================================+ +=================================+=================================+

View File

@@ -5,7 +5,7 @@
* TPM not working with VBOOT and C_ENV bootblock (works without C_ENV BB) * TPM not working with VBOOT and C_ENV bootblock (works without C_ENV BB)
## Flashing instructions ## Flashing instructions
```{eval-rst} ```eval_rst
+---------------------+--------------------------------+ +---------------------+--------------------------------+
| Type | Value | | Type | Value |
+=====================+================================+ +=====================+================================+

View File

@@ -10,7 +10,7 @@ Librebox).
To build a minimal working coreboot image some blobs are required (assuming To build a minimal working coreboot image some blobs are required (assuming
only the BIOS region is being modified). only the BIOS region is being modified).
```{eval-rst} ```eval_rst
+-----------------+---------------------------------+---------------------+ +-----------------+---------------------------------+---------------------+
| Binary file | Apply | Required / Optional | | Binary file | Apply | Required / Optional |
+=================+=================================+=====================+ +=================+=================================+=====================+
@@ -98,7 +98,7 @@ The platform contains an LR-i7S65T1 baseboard (LR-i7S65T2 with two NICs not
sold yet). More details on [baseboard site]. Unfortunately the board manual is sold yet). More details on [baseboard site]. Unfortunately the board manual is
not publicly available. not publicly available.
```{eval-rst} ```eval_rst
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+
| CPU | Intel Core i7-6500U | | CPU | Intel Core i7-6500U |
+------------------+--------------------------------------------------+ +------------------+--------------------------------------------------+

View File

@@ -9,7 +9,7 @@
* IME 7.0.4.1197 * IME 7.0.4.1197
## Flash chip (Winbond 25Q32BV) ## Flash chip (Winbond 25Q32BV)
```{eval-rst} ```eval_rst
+---------------------+--------------------+ +---------------------+--------------------+
| Type | Value | | Type | Value |
+=====================+====================+ +=====================+====================+

View File

@@ -200,7 +200,7 @@ and [u-root] as initramfs.
## Technology ## Technology
```{eval-rst} ```eval_rst
+------------------------+---------------------------------------------+ +------------------------+---------------------------------------------+
| Processor (1 socket) | Intel Cooper Lake Scalable Processor | | Processor (1 socket) | Intel Cooper Lake Scalable Processor |
+------------------------+---------------------------------------------+ +------------------------+---------------------------------------------+
@@ -222,4 +222,4 @@ and [u-root] as initramfs.
[All about u-root]: https://github.com/linuxboot/book/tree/master/u-root [All about u-root]: https://github.com/linuxboot/book/tree/master/u-root
[u-root]: https://u-root.org/ [u-root]: https://u-root.org/
[ChromeOS VPD]: https://chromium.googlesource.com/chromiumos/platform/vpd/+/master/README.md [ChromeOS VPD]: https://chromium.googlesource.com/chromiumos/platform/vpd/+/master/README.md
[src/mainboard/ocp/deltalake/vpd.h]: https://review.coreboot.org/plugins/gitiles/coreboot/+/HEAD/src/mainboard/ocp/deltalake/vpd.h [src/mainboard/ocp/deltalake/vpd.h]: https://review.coreboot.org/plugins/gitiles/coreboot/+/refs/heads/master/src/mainboard/ocp/deltalake/vpd.h

Some files were not shown because too many files have changed in this diff Show More