Compare commits
19 Commits
master
...
wip/nvidia
Author | SHA1 | Date | |
---|---|---|---|
2d743165e7 | |||
75468a84c0 | |||
865292a883 | |||
87aaef8d1a | |||
182adc61a2 | |||
1b49402e33 | |||
8138513b35 | |||
ba0100f010 | |||
72cd47f9ba | |||
8b8a831699 | |||
fb352b86fc | |||
084e54522a | |||
8d28bd2c9f | |||
9747417290 | |||
2a0ab9f8cf | |||
5ff2a1548f | |||
ad3eee8f83 | |||
90176c56f4 | |||
cb8a72cace |
@ -4,7 +4,6 @@
|
||||
# Ignore aspects we don't follow here.
|
||||
--ignore C99_COMMENTS
|
||||
--ignore GLOBAL_INITIALISERS
|
||||
--ignore COMPARISON_TO_NULL
|
||||
--ignore INITIALISED_STATIC
|
||||
--ignore LINE_SPACING
|
||||
--ignore NEW_TYPEDEFS
|
||||
@ -23,7 +22,6 @@
|
||||
--ignore PRINTK_WITHOUT_KERN_LEVEL
|
||||
--ignore ASSIGN_IN_IF
|
||||
--ignore UNNECESSARY_ELSE
|
||||
--ignore GERRIT_CHANGE_ID
|
||||
|
||||
# FILE_PATH_CHANGES seems to not be working correctly. It will
|
||||
# choke on added / deleted files even if the MAINTAINERS file
|
||||
|
5
.gitignore
vendored
@ -31,9 +31,6 @@ site-local
|
||||
# Development friendly files
|
||||
tags
|
||||
.clang_complete
|
||||
.cache
|
||||
compile_commands.json
|
||||
.vscode/
|
||||
|
||||
# Cross-compile toolkits
|
||||
xgcc/
|
||||
@ -43,3 +40,5 @@ tarballs/
|
||||
*~
|
||||
*.kate-swp
|
||||
*.kdev4
|
||||
|
||||
doxygen/*
|
||||
|
37
.gitmodules
vendored
@ -1,67 +1,62 @@
|
||||
[submodule "3rdparty/blobs"]
|
||||
path = 3rdparty/blobs
|
||||
url = ../blobs.git
|
||||
url = https://review.coreboot.org/blobs.git
|
||||
update = none
|
||||
ignore = dirty
|
||||
[submodule "util/nvidia-cbootimage"]
|
||||
path = util/nvidia/cbootimage
|
||||
url = ../nvidia-cbootimage.git
|
||||
url = https://review.coreboot.org/nvidia-cbootimage.git
|
||||
[submodule "vboot"]
|
||||
path = 3rdparty/vboot
|
||||
url = ../vboot.git
|
||||
url = https://review.coreboot.org/vboot.git
|
||||
branch = main
|
||||
[submodule "arm-trusted-firmware"]
|
||||
path = 3rdparty/arm-trusted-firmware
|
||||
url = ../arm-trusted-firmware.git
|
||||
url = https://review.coreboot.org/arm-trusted-firmware.git
|
||||
[submodule "3rdparty/chromeec"]
|
||||
path = 3rdparty/chromeec
|
||||
url = ../chrome-ec.git
|
||||
url = https://review.coreboot.org/chrome-ec.git
|
||||
[submodule "libhwbase"]
|
||||
path = 3rdparty/libhwbase
|
||||
url = ../libhwbase.git
|
||||
url = https://review.coreboot.org/libhwbase.git
|
||||
[submodule "libgfxinit"]
|
||||
path = 3rdparty/libgfxinit
|
||||
url = ../libgfxinit.git
|
||||
url = https://review.coreboot.org/libgfxinit.git
|
||||
[submodule "3rdparty/fsp"]
|
||||
path = 3rdparty/fsp
|
||||
url = ../fsp.git
|
||||
url = https://review.coreboot.org/fsp.git
|
||||
update = none
|
||||
ignore = dirty
|
||||
[submodule "opensbi"]
|
||||
path = 3rdparty/opensbi
|
||||
url = ../opensbi.git
|
||||
url = https://review.coreboot.org/opensbi.git
|
||||
[submodule "intel-microcode"]
|
||||
path = 3rdparty/intel-microcode
|
||||
url = ../intel-microcode.git
|
||||
url = https://review.coreboot.org/intel-microcode.git
|
||||
update = none
|
||||
ignore = dirty
|
||||
branch = main
|
||||
[submodule "3rdparty/ffs"]
|
||||
path = 3rdparty/ffs
|
||||
url = ../ffs.git
|
||||
url = https://review.coreboot.org/ffs.git
|
||||
[submodule "3rdparty/amd_blobs"]
|
||||
path = 3rdparty/amd_blobs
|
||||
url = ../amd_blobs
|
||||
url = https://review.coreboot.org/amd_blobs
|
||||
update = none
|
||||
ignore = dirty
|
||||
[submodule "3rdparty/cmocka"]
|
||||
path = 3rdparty/cmocka
|
||||
url = ../cmocka.git
|
||||
url = https://review.coreboot.org/cmocka.git
|
||||
update = none
|
||||
branch = stable-1.1
|
||||
[submodule "3rdparty/qc_blobs"]
|
||||
path = 3rdparty/qc_blobs
|
||||
url = ../qc_blobs.git
|
||||
url = https://review.coreboot.org/qc_blobs.git
|
||||
update = none
|
||||
ignore = dirty
|
||||
[submodule "3rdparty/intel-sec-tools"]
|
||||
path = 3rdparty/intel-sec-tools
|
||||
url = ../9esec-security-tooling.git
|
||||
url = https://review.coreboot.org/9esec-security-tooling.git
|
||||
[submodule "3rdparty/stm"]
|
||||
path = 3rdparty/stm
|
||||
url = ../STM
|
||||
url = https://review.coreboot.org/STM
|
||||
branch = stmpe
|
||||
[submodule "util/goswid"]
|
||||
path = util/goswid
|
||||
url = ../goswid
|
||||
branch = trunk
|
||||
|
425
.mailmap
@ -1,425 +0,0 @@
|
||||
# Map author and committer names and email addresses to canonical real names and
|
||||
# email addresses. https://git-scm.com/docs/gitmailmap
|
||||
#
|
||||
# Note that this is only needed in the case where someone has contributed
|
||||
# with multiple different email addresses or Names.
|
||||
#
|
||||
# Forms: Proper Name <commit@email.xx>
|
||||
# Proper Name <proper@email.xx> <commit@email.xx>
|
||||
# Proper Name <proper@email.xx> Commit Name <commit@email.xx>
|
||||
|
||||
|
||||
Aamir Bohra <aamirbohra@gmail.com> <aamir.bohra@intel.com>
|
||||
Aaron Durbin <adurbin@chromium.org>
|
||||
Aaron Durbin <adurbin@chromium.org> <adurbin@adurbin.bld.corp.google.com>
|
||||
Aaron Durbin <adurbin@chromium.org> <adurbin@google.com>
|
||||
Abhay Kumar <abhay.kumar@intel.com>
|
||||
Abhinav Hardikar <realdevmaster64@gmail.com> devmaster64 <devmaster64@gmail.com>
|
||||
Alex Levin <levinale@google.com> <levinale@chromium.org>
|
||||
Alex Miao <alex.miao@mediatek.corp-partner.google.com>
|
||||
Alexandru Gagniuc <mr.nuke.me@gmail.com> <alexandrux.gagniuc@intel.com>
|
||||
Alexandru Gagniuc <mr.nuke.me@gmail.com> mrnuke <mrnuke@nukelap.gtech>
|
||||
Amanda Huang <amanda_hwang@compal.corp-partner.google.com>
|
||||
Amol N Sukerkar <amol.n.sukerkar@intel.com>
|
||||
Andrea Barberio <barberio@fb.com> <insomniac@slackware.it>
|
||||
Andrey Petrov <anpetrov@fb.com> <andrey.petrov@intel.com>
|
||||
Andrey Pronin <apronin@chromium.org> <apronin@google.com>
|
||||
Andriy Gapon <avg@FreeBSD.org> <avg@icyb.net.ua>
|
||||
Anil Kumar <anil.kumar.k@intel.com> <anil.kumar.k@intel.corp-partner.google.com>
|
||||
Anish K. Patel <anishp@win-ent.com>
|
||||
Anton Kochkov <anton.kochkov@gmail.com> <a.kochkov@securitycode.ru>
|
||||
Antonello Dettori <dev@dettori.io> <dettori.an@gmail.com>
|
||||
Ariel Fang <ariel_fang@wistron.corp-partner.google.com>
|
||||
Arne Georg Gleditsch <arne.gleditsch@numascale.com> <arne.gleditsch@numscale.com>
|
||||
Asami Doi <d0iasm.pub@gmail.com> <doiasami1219@gmail.com>
|
||||
Ashwin Kumar <ashk@codeaurora.org>
|
||||
Axel Holewa <mono@posteo.de> Mono <mono-for-coreboot@donderklumpen.de>
|
||||
Axel Holewa <mono@posteo.de> Mono <mono@posteo.de>
|
||||
Bao Zheng <fishbaozi@gmail.com>
|
||||
Bao Zheng <fishbaozi@gmail.com> <Zheng Bao zheng.bao@amd.com>
|
||||
Bao Zheng <fishbaozi@gmail.com> <zheng.bao@amd.com>
|
||||
Bayi Cheng <bayi.cheng@mediatek.com>
|
||||
Ben Zhang <benzh@google.com> <benzh@chromium.org>
|
||||
Bernhard M. Wiedermann <corebootbmw@lsmod.de>
|
||||
Bill Xie <persmule@hardenedlinux.org> <persmule@gmail.com>
|
||||
Bill Xie <persmule@hardenedlinux.org> Bill XIE <persmule@hardenedlinux.org>
|
||||
Bingxun Shi <bingxunshi@gmail.com>
|
||||
Bingxun Shi <bingxunshi@gmail.com> <bxshi@msik.com.cn>
|
||||
Brandon Breitenstein <brandon.breitenstein@intel.com> <brandon.breitenstein@intel.corp-partner.google.com>
|
||||
Bruce Griffith <bruce.griffith@se-eng.com> <Bruce.Griffith@se-eng.com>
|
||||
Bryant Ou <Bryant.Ou.Q@gmail.com>
|
||||
Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> <Carl-Daniel Hailfinger>
|
||||
Casper Chang<casper_chang@wistron.corp-partner.google.com> <casper.chang@bitland.corp-partner.google.com>
|
||||
Caveh Jalali <caveh@chromium.org> <caveh@google.com>
|
||||
Caveh Jalali <caveh@chromium.org> caveh jalali <caveh@chromium.org>
|
||||
Charles Marslett <charles@scarlettechnologies.com> <charles.marslett@silverbackltd.com>
|
||||
Chee Soon Lew <chee.soon.lew@intel.com>
|
||||
Cheng-Yi Chiang <cychiang@chromium.org> <cychiang@google.com>
|
||||
Chris Ching <chris@ching.codes> <chingcodes@chromium.org>
|
||||
Chris Ching <chris@ching.codes> <chingcodes@google.com>
|
||||
Chris Wang <chris.wang@amd-corp-partner.google.com> <chriswang@ami.corp-partner.google.com>
|
||||
Chris Wang <chris.wang@amd-corp-partner.google.com> Chris Wang <chris.wang@amd-corp-partner.google.com>
|
||||
Chris Wang <chris.wang@amd-corp-partner.google.com> chris wang <chris.wang@amd.corp-partner.google.com>
|
||||
Chris Wang <chris.wang@amd-corp-partner.google.com> Chris.Wang <chris.wang@amd.corp-partner.google.com>
|
||||
Chris Zhou <chris_zhou@compal.corp-partner.google.com>
|
||||
Christian Ruppert <idl0r@qasl.de> <idl0r@gentoo.org>
|
||||
Chun-Jie Chen <chun-jie.chen@mediatek.corp-partner.google.com>
|
||||
Clay Daniels Jr <clay.daniels.jr@gmail.com>
|
||||
Cole Nelson<colex.nelson@intel.com>
|
||||
Corey Osgood <corey.osgod@gmail.com> <corey_osgood@verizon.net>
|
||||
Corey Osgood <corey.osgod@gmail.com> <corey.osgood@gmail.com>
|
||||
Cristian Măgherușan-Stanciu <cristi.magherusan@gmail.com>
|
||||
Cristian Măgherușan-Stanciu <cristi.magherusan@gmail.com> Cristi Magherusan <cristi.magherusan@net.utcluj.ro>
|
||||
Da Lao <dalao@tutanota.com> dalao <dalao@tutanota.com>
|
||||
Daisuke Nojiri <dnojiri@chromium.org> dnojiri <dnojiri@chromium.org>
|
||||
Dan Elkouby <streetwalkermc@gmail.com> <streetwalrus@codewalr.us>
|
||||
Daphne Jansen <dcjansen@chromium.org> Justin TerAvest <teravest@chromium.org>
|
||||
Daphne Jansen <dcjansen@chromium.org> Justin TerAvest <teravest@google.com>
|
||||
Dave Parker <dparker@chromium.org>
|
||||
David Hendricks <davidhendricks@gmail.com> <david.hendricks@gmail.com>
|
||||
David Hendricks <davidhendricks@gmail.com> <dhendricks@fb.com>
|
||||
David Hendricks <davidhendricks@gmail.com> <dhendrix@chromium.org>
|
||||
David Hendricks <davidhendricks@gmail.com> <dhendrix@fb.com>
|
||||
David Hendricks <davidhendricks@gmail.com> <dhendrix@google.com>
|
||||
David Hendricks <davidhendricks@gmail.com> David W. Hendricks <dwh@lanl.gov>
|
||||
David Wu <david_wu@quantatw.com> <david_wu@quanta.corp-partner.google.com>
|
||||
David Wu <david_wu@quantatw.com> david <david_wu@quantatw.com>
|
||||
Dawei Chien <dawei.chien@mediatek.com>
|
||||
Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> <GNUtoo@no-log.org>
|
||||
Derek Huang <derek.huang@intel.com> <derek.huang@intel.corp-partner.google.com>
|
||||
Dmitry Ponamorev <dponamorev@gmail.com>
|
||||
Douglas Anderson <dianders@chromium.org>
|
||||
Duncan Laurie <dlaurie@chromium.org> <dlaurie@google.com>
|
||||
Ed Swierk <eswierk@aristanetworks.com> <eswierk@arastra.com>
|
||||
Edward O'Callaghan <quasisec@google.com> <edward.ocallaghan@koparo.com>
|
||||
Edward O'Callaghan <quasisec@google.com> <eocallaghan@alterapraxis.com>
|
||||
Edward O'Callaghan <quasisec@google.com> <funfunctor@folklore1984.net>
|
||||
Edward O'Callaghan <quasisec@google.com> <quasisec@chromium.org>
|
||||
Eric Biederman <ebiederm@xmission.com> <ebiederman@lnxi.com>
|
||||
Eric Biederman <ebiederm@xmission.com> Eric W. Biederman <ebiederm@xmission.com>
|
||||
Eugene Myers <edmyers@tycho.nsa.gov> <cedarhouse@comcast.net>
|
||||
Evgeny Zinoviev <me@ch1p.io> <me@ch1p.com>
|
||||
Felix Durairaj <felixx.durairaj@intel.com>
|
||||
Felix Held <felix-coreboot@felixheld.de> <felix-github@felixheld.de>
|
||||
Felix Held <felix-coreboot@felixheld.de> <felix.held@amd.corp-partner.google.com>
|
||||
Felix Singer <felixsinger@posteo.net> <felix.singer@9elements.com>
|
||||
Felix Singer <felixsinger@posteo.net> <felix.singer@secunet.com>
|
||||
Felix Singer <felixsinger@posteo.net> <migy@darmstadt.ccc.de>
|
||||
Francois Toguo Fotso <francois.toguo.fotso@intel.com> Francois Toguo <francois.toguo.fotso@intel.com>
|
||||
Frank Chu <frank_chu@pegatron.corp-partner.google.com>
|
||||
Frank Chu <frank_chu@pegatron.corp-partner.google.com> Frank Chu <Frank_Chu@pegatron.corp-partner.google.com>
|
||||
Frank Chu <frank_chu@pegatron.corp-partner.google.com> FrankChu <Frank_Chu@pegatron.corp-partner.google.com>
|
||||
Frank Vibrans <efdesign98@gmail.com> efdesign98 <efdesign98@gmail.com>
|
||||
Frank Vibrans <efdesign98@gmail.com> Frank Vibrans <frank.vibrans@amd.com>
|
||||
Frank Vibrans <efdesign98@gmail.com> frank vibrans <frank.vibrans@scarletltd.com>
|
||||
Frank Vibrans <efdesign98@gmail.com> Frank Vibrans <frank.vibrans@se-eng.com>
|
||||
Frank Vibrans <efdesign98@gmail.com> Frank.Vibrans <frank.vibrans@amd.com>
|
||||
Furquan Shaikh <furquan@chromium.org> <furquan@google.com>
|
||||
G. Pangao <gtk_pangao@mediatek.com> <gtk_pangao@mediatek.corp-partner.google.com>
|
||||
Gabe Black <gabeblack@chromium.org> <gabeblack@chromium.com>
|
||||
Gabe Black <gabeblack@chromium.org> <gabeblack@google.com>
|
||||
Gaggery Tsai <gaggery.tsai@intel.com>
|
||||
Georg Wicherski <gwicherski@gmail.com> <gw@oxff.net>
|
||||
Gomathi Kumar <gomathi.kumar@intel.com>
|
||||
Greg V <greg@unrelenting.technology>
|
||||
Greg Watson <gwatson@lanl.gov> <jarrah@users.sourceforge.net>
|
||||
Hannah Williams <hannah.williams@dell.com> <hannah.williams@intel.com>
|
||||
Hao Chou <hao_chou@pegatron.corp-partner.google.com>
|
||||
Haridhar Kalvala <haridhar.kalvala@intel.com> haridhar <haridhar.kalvala@intel.com>
|
||||
Harsha Priya <harshapriya.n@intel.com>
|
||||
Harsha Priya <harshapriya.n@intel.com> <harhapriya.n@intel.com>
|
||||
Harshit Sharma <harshitsharmajs@gmail.com> harshit <harshitsharmajs@gmail.com>
|
||||
Henry C Chen <henryc.chen@mediatek.com> henryc.chen <henryc.chen@mediatek.com>
|
||||
Himanshu Sahdev <sahdev.himan@gmail.com> <himanshusah@hcl.com>
|
||||
Himanshu Sahdev <sahdev.himan@gmail.com> Himanshu Sahdev aka CunningLearner <sahdev.himan@gmail.com>
|
||||
Hsuan Ting Chen <roccochen@chromium.org> Hsuan-ting Chen <roccochen@google.com>
|
||||
Huang Lin <hl@rock-chips.com>
|
||||
Huayang Duan <huayang.duan@mediatek.com>
|
||||
Huki Huang <huki.huang@intel.com>
|
||||
Idwer Vollering <vidwer@gmail.com> <idwer_v@hotmail.com>
|
||||
Igor Bagnucki <bagnucki02@gmail.com> <igor.bagnucki@3mdeb.com>
|
||||
Indrek Kruusa <indrek.kruusa@artecdesign.ee> <Indrek Kruusa>
|
||||
Ivy Jian <ivy_jian@compal.com> <ivy_jian@compal.corp-partner.google.com>
|
||||
Jacob Laska <jlaska91@gmail.com> <jlaska@xes-inc.com>
|
||||
Jakub Czapiga <jacz@semihalf.com>
|
||||
Jason Wang <Qingpei.Wang@amd.com> Jason WangQingpei.wang <Jason WangQingpei.wang@amd.com>
|
||||
JasonX Z Chen <jasonx.z.chen@intel.com>
|
||||
Jens Kühnel <coreboot@jens.kuehnel.org> Jens Kuehnel <coreboot@jens.kuehnel.org>
|
||||
Jens Rottmann <JRottmann@LiPPERTembedded.de> <JRottmann@LiPPERTEmbedded.de>
|
||||
Jeremy Compostella <jeremy.compostella@intel.com> <jeremy.compostella@gmail.com>
|
||||
Jeremy Soller <jackpot51@gmail.com> <jeremy@system76.com>
|
||||
Jiaxin Yu <jiaxin.yu@mediatek.com>
|
||||
Jiazi Yang <Tomato_Yang@asus.com>
|
||||
Jim Lai <jim.lai@intel.com>
|
||||
Jingle Hsu <jingle_hsu@wiwynn.com>
|
||||
Jinkun Hong <jinkun.hong@rock-chips.com>
|
||||
Joe Moore <awokd@danwin1210.me>
|
||||
Joe Pillow <joseph.a.pillow@gmail.com>
|
||||
Johanna Schander <coreboot@mimoja.de>
|
||||
John Zhao <john.zhao@intel.com>
|
||||
Jonathan Kollasch <jakllsch@kollasch.net>
|
||||
Jordan Crouse <jordan@cosmicpenguin.net> <Jordan Crouse>
|
||||
Jordan Crouse <jordan@cosmicpenguin.net> <jordan.crouse@amd.com>
|
||||
Josef Kellermann <Joseph.Kellermann@heitec.de> <seppk@arcor.de>
|
||||
Josef Kellermann <Joseph.Kellermann@heitec.de> Josef Kellermannseppk <Josef Kellermannseppk@arcor.de>
|
||||
Joseph Smith <joe@settoplinux.org> <joe@settoplinux.org Acked-by: Joseph Smith joe@settoplinux.org>
|
||||
Joseph Smith <joe@settoplinux.org> <joe@smittys.pointclark.net>
|
||||
Juergen Beisert <juergen@kreuzholzen.de> <juergen127@kreuzholzen.de>
|
||||
Julian Schroeder <julianmarcusschroeder@gmail.com> <julian.schroeder@amd.com>
|
||||
Julien Viard de Galbert <julien@vdg.name> <jviarddegalbert@online.net>
|
||||
Justin Wu <amersel@runbox.me>
|
||||
Kaiyen Chang <kaiyen.chang@intel.com> <kaiyen.chang@intel.corp-partner.google.com>
|
||||
Kane Chen <kane.chen@intel.com> <kane_chen@pegatron.corp-partner.google.com>
|
||||
Kane Chen <kane.chen@intel.com> <kane.chen@intel.corp-partner.google.com>
|
||||
Kane Chen <kane.chen@intel.com> Kane Chenffd <kane_chen@pegatron.corp-partner.google.com>
|
||||
Kane Chen <kane.chen@intel.com> kane_chen <kane_chen@pegatron.corp-partner.google.com>
|
||||
Kane Chen <kane.chen@intel.com> YanRu Chen <kane_chen@pegatron.corp-partner.google.com>
|
||||
Kane Chen <kane.chen@intel.com> YenLu Chen <kane_chen@pegatron.corp-partner.google.com>
|
||||
Karthikeyan Ramasubramanian <kramasub@google.com> <kramasub@chromium.org>
|
||||
Katie Roberts-Hoffman <katierh@chromium.org> <katierh@google.com>
|
||||
Kerry She <kerry.she@amd.com> <Kerry.she@amd.com>
|
||||
Kerry Sheh <shekairui@gmail.com>
|
||||
Kevin Chang <kevin.chang@lcfc.corp-partner.google.com>
|
||||
Kevin Chiu <kevin.chiu.17802@gmail.com> <kevin.chiu@quanta.corp-partner.google.com>
|
||||
Kevin Chiu <kevin.chiu.17802@gmail.com> <kevin.chiu@quantatw.com>
|
||||
Kevin Chiu <kevin.chiu.17802@gmail.com> <Kevin.Chiu@quantatw.com>
|
||||
Kevin Paul Herbert <kph@platinasystems.com> <kevin@trippers.org>
|
||||
Kevin Paul Herbert <kph@platinasystems.com> <kph@meraki.net>
|
||||
Kirk Wang <kirk_wang@pegatron.corp-partner.google.com> kirk_wang <kirk_wang@pegatron.corp-partner.google.com>
|
||||
Konstantin Aladyshev <aladyshev22@gmail.com> <aladyshev@nicevt.ru>
|
||||
Kyösti Mälkki <kyosti.malkki@gmail.com>
|
||||
Kyösti Mälkki <kyosti.malkki@gmail.com> <kyosti.malkki@3mdeb.com>
|
||||
Lean Sheng Tan <sheng.tan@9elements.com> <lean.sheng.tan@intel.com>
|
||||
Lee Leahy <lpleahyjr@gmail.com> <leroy.p.leahy@intel.com>
|
||||
Li Cheng Sooi <li.cheng.sooi@intel.com>
|
||||
Lijian Zhao <lijian.zhao@intel.com>
|
||||
Lin Huang <hl@rock-chips.com>
|
||||
Maciej Matuszczyk <maccraft123mc@gmail.com>
|
||||
Maggie Li <maggie.li@amd.com> <Maggie.li@amd.com>
|
||||
Manideep Kurumella <mkurumel@qualcomm.corp-partner.google.com> <mkurumel@codeaurora.org>
|
||||
Marc Jones <marc@marcjonesconsulting.com> <marc.jones@amd.com>
|
||||
Marc Jones <marc@marcjonesconsulting.com> <marc.jones@gmail.com>
|
||||
Marc Jones <marc@marcjonesconsulting.com> <marc.jones@scarletltd.com>
|
||||
Marc Jones <marc@marcjonesconsulting.com> <marc.jones@se-eng.com>
|
||||
Marc Jones <marc@marcjonesconsulting.com> <marcj.jones@amd.com>
|
||||
Marc Jones <marc@marcjonesconsulting.com> <marcj303@gmail.com>
|
||||
Marc Jones <marc@marcjonesconsulting.com> <marcj303@yahoo.com>
|
||||
Marc Jones <marc@marcjonesconsulting.com> <marcjones@sysproconsulting.com>
|
||||
Marc Jones <marc@marcjonesconsulting.com> Marc Jones (marc.jones <Marc Jones (marc.jones@amd.com)>
|
||||
Marc Jones <marc@marcjonesconsulting.com> Marc Jones(marc.jones <Marc Jones(marc.jones@amd.com)>
|
||||
Marcello Sylvester Bauer <sylv@sylv.io>
|
||||
Marcello Sylvester Bauer <sylv@sylv.io> <info@marcellobauer.com>
|
||||
Marcello Sylvester Bauer <sylv@sylv.io> <sylvblck@sylv.io>
|
||||
Marco Chen <marcochen@google.com> <marcochen@chromium.org>
|
||||
Mariusz Szafrański <mariuszx.szafranski@intel.com> Mariusz Szafranski <mariuszx.szafranski@intel.com>
|
||||
Marshall Dawson <marshalldawson3rd@gmail.com> <marshall.dawson@amd.corp-partner.google.com>
|
||||
Marshall Dawson <marshalldawson3rd@gmail.com> <marshall.dawson@scarletltd.com>
|
||||
Mart Raudsepp <leio@gentoo.org> <mart.raudsepp@artecdesign.ee>
|
||||
Martin Kepplinger <martink@posteo.de> <martin.kepplinger@puri.sm>
|
||||
Martin Roth <gaumless@gmail.com> <martin.roth@se-eng.com>
|
||||
Martin Roth <gaumless@gmail.com> <martin@coreboot.org>
|
||||
Martin Roth <gaumless@gmail.com> <martinr@coreboot.org>
|
||||
Martin Roth <gaumless@gmail.com> <martinroth@chromium.org>
|
||||
Martin Roth <gaumless@gmail.com> <martinroth@google.com>
|
||||
Martin Roth <gaumless@gmail.com> Martin Roth <martin@se-eng.com>
|
||||
Marx Wang <marx.wang@intel.com>
|
||||
Mathias Krause <minipli@googlemail.com> <mathias.krause@secunet.com>
|
||||
Mathias Krause <minipli@googlemail.com> <Mathias.Krause@secunet.com>
|
||||
Mats Erik Andersson <mats.andersson@gisladisker.org> <mats.andersson@gisladisker.se>
|
||||
Matt DeVillier <matt.devillier@gmail.com> <matt.devillier@puri.sm>
|
||||
Matt Papageorge <matthewpapa07@gmail.com> <matt.papageorge@amd.corp-partner.google.com>
|
||||
Matt Ziegelbaum <ziegs@google.com> <ziegs@chromium.org>
|
||||
Maulik V Vaghela <maulik.v.vaghela@intel.com>
|
||||
Maulik V Vaghela <maulik.v.vaghela@intel.com> <maulik.v.vaghela@intel.corp-partner.google.com>
|
||||
Max Blau <tripleshiftone@gmail.com> Bluemax <1403092+BlueMax@users.noreply.github.com>
|
||||
Maxim Polyakov <max.senia.poliak@gmail.com> <m.poliakov@yahoo.com>
|
||||
Mengqi Zhang <Mengqi.Zhang@mediatek.com> mengqi.zhang <mengqi.zhang@mediatek.com>
|
||||
Michael Niewöhner <foss@mniewoehner.de> <michael.niewoehner@8com.de>
|
||||
Michael Xie <Michael.Xie@amd.com> <Michael Xie Michael.Xie@amd.com>
|
||||
Michele Guerini Rocco <rnhmjoj@inventati.org>
|
||||
Mike Banon <mikebdp2@gmail.com> <mike.banon@3mdeb.com>
|
||||
Mike Hsieh <Mike_Hsieh@wistron.com> <mike_hsieh@wistron.corp-partner.google.com>
|
||||
Mike Loptien <loptienm@gmail.com> <mike.loptien@se-eng.com>
|
||||
Mondrian Nuessle <nuessle@uni-hd.de>
|
||||
Mondrian Nuessle <nuessle@uni-hd.de> <nuessle@uni-mannheim.de>
|
||||
Motiejus Jakštys <desired.mta@gmail.com>
|
||||
Myles Watson <mylesgw@gmail.com> <myles@pel.cs.byu.edu>
|
||||
Nancy Lin <nancy.lin@mediatek.com>
|
||||
Naresh Solanki <naresh.solanki@intel.com>
|
||||
Naresh Solanki <naresh.solanki@intel.com> <Naresh.Solanki@intel.com>
|
||||
Naveen Manohar <naveen.m@intel.com>
|
||||
Naveen Manohar <naveen.m@intel.com>
|
||||
Neil Chen <neilc@nvidia.com> <neilc%nvidia.com@gtempaccount.com>
|
||||
Nick Chen <nick_xr_chen@wistron.corp-partner.google.com>
|
||||
Nick Vaccaro <nvaccaro@google.com> <nvaccaro@chromium.org>
|
||||
Nicky Sielicki <nlsielicki@wisc.edu>
|
||||
Nico Huber <nico.h@gmx.de> <nico.huber@secunet.com>
|
||||
Nicolas Boichat <drinkcat@chromium.org> <drinkcat@google.com>
|
||||
Nicolas Reinecke <nr@das-labor.org>
|
||||
Nils Jacobs <njacobs8@adsltotaal.nl> <njacobs8@hetnet.nl>
|
||||
Nina Wu <nina-cm.wu@mediatek.com> <nina-cm.wu@mediatek.corp-partner.google.com>
|
||||
Oskar Enoksson <enok@lysator.liu.se>
|
||||
Oskar Enoksson <enok@lysator.liu.se> <oskeno@foi.se>
|
||||
Pablo Moyano <42.pablo.ms@gmail.com> p4block <p4block@users.noreply.github.com>
|
||||
Patrick Georgi <patrick@coreboot.org> <Patrick Georgi patrick.georgi@coresystems.de>
|
||||
Patrick Georgi <patrick@coreboot.org> <Patrick Georgi patrick@georgi-clan.de>
|
||||
Patrick Georgi <patrick@coreboot.org> <patrick.georgi@coresystems.de>
|
||||
Patrick Georgi <patrick@coreboot.org> <patrick.georgi@secunet.com>
|
||||
Patrick Georgi <patrick@coreboot.org> <Patrick.Georgi@secunet.com>
|
||||
Patrick Georgi <patrick@coreboot.org> <patrick@georgi-clan.de>
|
||||
Patrick Georgi <patrick@coreboot.org> <patrick@georgi.software>
|
||||
Patrick Georgi <patrick@coreboot.org> Patrick Georgi <pgeorgi@chromium.org>
|
||||
Patrick Georgi <patrick@coreboot.org> Patrick Georgi <pgeorgi@google.com>
|
||||
Patrick Rudolph <siro@das-labor.org> <patrick.rudolph@9elements.com>
|
||||
Paul Fagerburg <pfagerburg@chromium.org> <pfagerburg@google.com>
|
||||
Paul Kocialkowski <contact@paulk.fr>
|
||||
Paul Ma <magf@bitland.com.cn> <magf@bitland.corp-partner.google.com>
|
||||
Paul Ma <magf@bitland.com.cn> Magf - <magf@bitland.corp-partner.google.com>
|
||||
Paul Menzel <pmenzel@molgen.mpg.de> <paulepanter@mailbox.org>
|
||||
Paul Menzel <pmenzel@molgen.mpg.de> <paulepanter@users.sourceforge.net>
|
||||
Peichao Wang <peichao.wang@bitland.corp-partner.google.com>
|
||||
Peichao Wang <peichao.wang@bitland.corp-partner.google.com>
|
||||
Philip Chen <philipchen@google.com>
|
||||
Philip Chen <philipchen@google.com> <philipchen@chromium.org>
|
||||
Philipp Deppenwiese <zaolin.daisuki@gmail.com>
|
||||
Philipp Deppenwiese <zaolin.daisuki@gmail.com> <philipp.deppenwiese@9elements.com>
|
||||
Philipp Deppenwiese <zaolin.daisuki@gmail.com> <zaolin@das-labor.org>
|
||||
Ping-chung Chen <ping-chung.chen@intel.com>
|
||||
Ping-chung Chen <ping-chung.chen@intel.com>
|
||||
Piotr Kleinschmidt <piotr.kleinschmidt@3mdeb.com> <piotr.kleins@gmail.com>
|
||||
Piotr Szymaniak <szarpaj@grubelek.pl>
|
||||
Po Xu <jg_poxu@mediatek.com>
|
||||
Po Xu <jg_poxu@mediatek.com> <jg_poxu@mediatek.corp-partner.google.com>
|
||||
Praveen Hodagatta Pranesh <praveenx.hodagatta.pranesh@intel.com>
|
||||
Preetham Chandrian <preetham.chandrian@intel.com>
|
||||
Puthikorn Voravootivat <puthik@chromium.org> <puthik@google.com>
|
||||
QingPei Wang <wangqingpei@gmail.com>
|
||||
Quan Tran <qeed.quan@gmail.com>
|
||||
Rasheed Hsueh <rasheed.hsueh@lcfc.corp-partner.google.com>
|
||||
Raul Rangel <rrangel@chromium.org>
|
||||
Ravi Kumar Bokka <rbokka@codeaurora.org>
|
||||
Ravindra <ravindra@intel.com>
|
||||
Ravindra <ravindra@intel.com> Ravindra N <ravindra@intel.corp-partner.google.com>
|
||||
Ravishankar Sarawadi <ravishankar.sarawadi@intel.com>
|
||||
Raymond Chung <raymondchung@ami.corp-partner.google.com>
|
||||
Raymond Danks <raymonddanks@gmail.com> <ray.danks@se-eng.com>
|
||||
Reka Norman <rekanorman@google.com> <rekanorman@chromium.org>
|
||||
Ren Kuo <ren.kuo@quantatw.com>
|
||||
Ren Kuo <ren.kuo@quantatw.com> <ren.kuo@quanta.corp-partner.google.com>
|
||||
Rex-BC Chen <rex-bc.chen@mediatek.com> <rex-bc.chen@mediatek.corp-partner.google.com>
|
||||
Ricardo Ribalda <ribalda@chromium.org> <ricardo.ribalda@gmail.com>
|
||||
Richard Spiegel <richard.spiegel@silverbackltd.com> <richard.spiegel@amd.corp-partner.google.com>
|
||||
Rishavnath Satapathy <rishavnath.satapathy@intel.com>
|
||||
Ritul Guru <ritul.bits@gmail.com>
|
||||
Rizwan Qureshi <rizwan.qureshi@intel.com> <rizwan.qureshi@intel.corp-partner.google.com>
|
||||
Robbie Zhang <robbie.zhang@intel.com>
|
||||
Robert Chen <robert.chen@quanta.corp-partner.google.com>
|
||||
Robert Chen <robert.chen@quanta.corp-partner.google.com> = <robert.chen@quanta.corp-partner.google.com>
|
||||
Roger Pau Monne <roger.pau@citrix.com>
|
||||
Roman Kononov <kononov@dls.net> <kononov195-lbl@yahoo.com>
|
||||
Ron Minnich <rminnich@gmail.com>
|
||||
Ron Minnich <rminnich@gmail.com> <Ron Minnich>
|
||||
Ron Minnich <rminnich@gmail.com> <Ronald G. Minnich rminnich@gmail.com>
|
||||
Ron Minnich <rminnich@gmail.com> Ronald G. Minnich <minnich@google.com>
|
||||
Ron Minnich <rminnich@gmail.com> Ronald G. Minnich <rminnich@chromium.org>
|
||||
Ron Minnich <rminnich@gmail.com> Ronald G. Minnich <rminnich@google.com>
|
||||
Ron Minnich <rminnich@gmail.com> Ronald G. Minnich <rminnich@lanl.gov>
|
||||
Ron Minnich <rminnich@gmail.com> ronald g. minnich <ronald g. minnich>
|
||||
Ron Minnich <rminnich@gmail.com> Ronald G. Minnich <Ronald G. Minnich>
|
||||
Ronak Kanabar <ronak.kanabar@intel.com>
|
||||
Rudolf Marek <r.marek@assembler.cz> <r.marek@asssembler.cz>
|
||||
Ryan Chuang <ryan.chuang@mediatek.com> <ryan.chuang@mediatek.corp-partner.google.com>
|
||||
Santhosh Janardhana Hassan <sahassan@google.com>
|
||||
Scott Chao <scott_chao@wistron.corp-partner.google.com> <scott.chao@bitland.corp-partner.google.com>
|
||||
Scott Duplichan <scott@notabs.org> <sc...@notabs.org>
|
||||
Scott Tsai <AT>
|
||||
Sebastian "Swift Geek" Grzywna <swiftgeek@gmail.com>
|
||||
Selma Bensaid <selma.bensaid@intel.com>
|
||||
Seunghwan Kim <sh_.kim@samsung.com>
|
||||
Seunghwan Kim <sh_.kim@samsung.com> <sh_.kim@samsung.corp-partner.google.com>
|
||||
Seunghwan Kim <sh_.kim@samsung.com> sh.kim <sh_.kim@samsung.corp-partner.google.com>
|
||||
Shawn Chang <citypw@gmail.com>
|
||||
Shawn Nematbakhsh <shawnn@google.com> <shawnn@chromium.org>
|
||||
Shelley Chen <shchen@google.com> <shchen@chromium.org>
|
||||
Sheng-Liang Pan <Sheng-Liang.Pan@quantatw.com> <sheng-liang.pan@quanta.corp-partner.google.com>
|
||||
Shreesh Chhabbi <shreesh.chhabbi@intel.com> <shreesh.chhabbi@intel.corp-partner.google.com>
|
||||
Shunqian Zheng <zhengsq@rock-chips.com>
|
||||
Siyuan Wang <wangsiyuanbuaa@gmail.com>
|
||||
Sowmya <v.sowmya@intel.com>
|
||||
Sridhar Siricilla <sridhar.siricilla@intel.com>
|
||||
Sridhar Siricilla <sridhar.siricilla@intel.com> <sridhar.siricilla@intel.corp-partner.google.com>
|
||||
Srinidhi Kaushik <srinidhi.n.kaushik@intel.com>
|
||||
Stanley Wu <stanley1.wu@lcfc.corp-partner.google.com>
|
||||
Stefan Ott <stefan@ott.net> <coreboot@desire.ch>
|
||||
Stefan Reinauer <stepan@coreboot.org> <reinauer@chromium.org>
|
||||
Stefan Reinauer <stepan@coreboot.org> <reinauer@google.com>
|
||||
Stefan Reinauer <stepan@coreboot.org> <Stefan Reinauerstepan@coresystems.de>
|
||||
Stefan Reinauer <stepan@coreboot.org> <stefan.reinauer@coreboot.org>
|
||||
Stefan Reinauer <stepan@coreboot.org> <stepan@coresystems.de>
|
||||
Stefan Reinauer <stepan@coreboot.org> <stepan@openbios.org>
|
||||
Stephan Guilloux <stephan.guilloux@free.fr> <mailto:stephan.guilloux@free.fr>
|
||||
Subrata Banik <subratabanik@google.com> <subi.banik@gmail.com>
|
||||
Subrata Banik <subratabanik@google.com> <subrata.banik@intel.com>
|
||||
Subrata Banik <subratabanik@google.com> <subrata.banik@intel.com>
|
||||
Sudheer Kumar Amrabadi <samrab@codeaurora.org>
|
||||
Sumeet Pawnikar <sumeet.r.pawnikar@intel.com>
|
||||
Sunwei Li <lisunwei@huaqin.corp-partner.google.com>
|
||||
Susendra Selvaraj <susendra.selvaraj@intel.com>
|
||||
Sylvain "ythier" Hitier <sylvain.hitier@gmail.com>
|
||||
T Michael Turney <mturney@codeaurora.org> mturney mturney <quic_mturney@quicinc.com>
|
||||
T Michael Turney <mturney@codeaurora.org> T Michael Turney <quic_mturney@quicinc.com>
|
||||
T.H. Lin <T.H_Lin@quantatw.com> <t.h_lin@quanta.corp-partner.google.com>
|
||||
T.H. Lin <T.H_Lin@quantatw.com> T.H.Lin <T.H_Lin@quantatw.com>
|
||||
Taniya Das <quic_tdas@quicinc.com> <tdas@codeaurora.org>
|
||||
Tao Xia <xiatao5@huaqin.corp-partner.google.com>
|
||||
Thejaswani Putta <thejaswani.putta@intel.com> <thejaswani.putta@intel.corp-partner.google.com>
|
||||
Thejaswani Putta <thejaswani.putta@intel.com>
|
||||
Thejaswani Putta <thejaswani.putta@intel.com> Thejaswani Puta thejaswani.putta@intel.com <thejaswani.putta@intel.com>
|
||||
Thomas Heijligen <thomas.heijligen@secunet.com> <src@posteo.de>
|
||||
Tim Chen <Tim-Chen@quantatw.com> <tim-chen@quanta.corp-partner.google.com>
|
||||
Tim Chu <Tim.Chu@quantatw.com>
|
||||
Tim Wawrzynczak <twawrzynczak@chromium.org> <twawrzynczak@google.com>
|
||||
Timothy Pearson <tpearson@raptorengineering.com> <tpearson@raptorengineeringinc.com>
|
||||
Tinghan Shen <tinghan.shen@mediatek.com>
|
||||
Tobias Diedrich <ranma+coreboot@tdiedrich.de> <ranma+openocd@tdiedrich.de>
|
||||
Tracy Wu <tracy.wu@intel.com> <tracy.wu@intel.corp-partner.google.com>
|
||||
Tristan Corrick <tristan@corrick.kiwi> <tristancorrick86@gmail.com>
|
||||
Tyler Wang <tyler.wang@quanta.corp-partner.google.com> <Tyler.Wang@quanta.corp-partner.google.com>
|
||||
Usha P <usha.p@intel.com> <usha.p@intel.corp-partner.google.com>
|
||||
V Sujith Kumar Reddy <vsujithk@codeaurora.org>
|
||||
Vadim Bendebury <vbendeb@chromium.org> <vbendeb@google.com>
|
||||
Vaibhav Shankar <vaibhav.shankar@intel.com>
|
||||
Van Chen <van_chen@compal.corp-partner.google.com>
|
||||
Varshit Pandya <varshit.b.pandya@intel.com>
|
||||
Varshit Pandya <varshit.b.pandya@intel.com> Varshit B Pandya <varshit.b.pandya@intel.com>
|
||||
Varun Joshi <varun.joshi@intel.com> <varun.joshi@intel.corp-partner.google.com>
|
||||
Vincent Lim <vincent.lim@amd.com> <Vincent Lim vincent.lim@amd.com>
|
||||
Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Wayne3 Wang <wayne3_wang@pegatron.corp-partner.google.com> <Wayne3_Wang@pegatron.corp-partner.google.com>
|
||||
William Wu <wulf@rock-chips.com>
|
||||
Wim Vervoorn <wvervoorn@eltan.com>
|
||||
Wisley Chen <wisley.chen@quantatw.com>
|
||||
Wisley Chen <wisley.chen@quantatw.com> <wisley.chen@quanta.corp-partner.google.com>
|
||||
Xi Chen <xixi.chen@mediatek.com> <xixi.chen@mediatek.corp-partner.google.com>
|
||||
Xiang Wang <merle@hardenedlinux.org> <wxjstz@126.com>
|
||||
Xingyu Wu <wuxy@bitland.corp-partner.google.com>
|
||||
Xuxin Xiong <xuxinxiong@huaqin.corp-partner.google.com>
|
||||
Yang A Fang <yang.a.fang@intel.com>
|
||||
Yinghai Lu <yinghailu@gmail.com> <yinghai.lu at amd.com>
|
||||
Yinghai Lu <yinghailu@gmail.com> <yinghai.lu@amd.com>
|
||||
Yinghai Lu <yinghailu@gmail.com> <yinghai@kernel.org>
|
||||
Yongkun Yu <yuyongkun@huaqin.corp-partner.google.com>
|
||||
Yongqiang Niu <yongqiang.niu@mediatek.com>
|
||||
Youness Alaoui <snifikino@gmail.com> <kakaroto@kakaroto.homelinux.net>
|
||||
Youness Alaoui <snifikino@gmail.com> <youness.alaoui@puri.sm>
|
||||
Yu-Hsuan Hsu <yuhsuan@google.com>
|
||||
Yu-Hsuan Hsu <yuhsuan@google.com> <yuhsuan@chromium.org>
|
||||
Yu-Ping Wu <yupingso@google.com> <yupingso@chromium.org>
|
||||
Yuanlidingm <yuanliding@huaqin.corp-partner.google.com>
|
||||
Yuchen Huang <yuchen.huang@mediatek.com> <yuchen.huang@mediatek.corp-partner.google.com>
|
||||
Yuji Sasaki <sasakiy@chromium.org> <sasakiy@google.com>
|
||||
Zanxi Chen <chenzanxi@huaqin.corp-partner.google.com>
|
||||
Zhi Li <lizhi7@huaqin.corp-partner.google.com>
|
||||
Zhongze Hu <frankhu@chromium.org> <frankhu@google.com>
|
||||
Zhuo-Hao Lee <zhuo-hao.lee@intel.com>
|
||||
Zhuohao Lee <zhuohao@chromium.org> <zhuohao@google.com>
|
2
3rdparty/amd_blobs
vendored
2
3rdparty/arm-trusted-firmware
vendored
2
3rdparty/blobs
vendored
2
3rdparty/chromeec
vendored
2
3rdparty/cmocka
vendored
2
3rdparty/fsp
vendored
2
3rdparty/intel-microcode
vendored
2
3rdparty/libgfxinit
vendored
2
3rdparty/libhwbase
vendored
2
3rdparty/opensbi
vendored
2
3rdparty/qc_blobs
vendored
2
3rdparty/vboot
vendored
1
AUTHORS
@ -108,7 +108,6 @@ Jonas 'Sortie' Termansen
|
||||
Jonathan A. Kollasch
|
||||
Jonathan Neuschäfer
|
||||
Jordan Crouse
|
||||
Jörg Mische
|
||||
Joseph Smith
|
||||
Keith Hui
|
||||
Keith Packard
|
||||
|
@ -1,9 +0,0 @@
|
||||
# See one of the following URLs for explanations of all the rules
|
||||
# https://github.com/markdownlint/markdownlint/blob/master/docs/RULES.md
|
||||
# https://web.archive.org/web/20220424164542/https://github.com/markdownlint/markdownlint/blob/master/docs/RULES.md
|
||||
|
||||
all
|
||||
exclude_rule 'no-multiple-blanks'
|
||||
exclude_rule 'blanks-around-headers'
|
||||
exclude_rule 'blanks-around-lists'
|
||||
rule 'line-length', :line_length => 72
|
2441
Documentation/Doxyfile.coreboot
Normal file
2441
Documentation/Doxyfile.coreboot_simple
Normal file
@ -1,19 +1,17 @@
|
||||
## SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Makefile for coreboot paper.
|
||||
# hacked together by Stefan Reinauer <stepan@openbios.org>
|
||||
#
|
||||
|
||||
PDFLATEX = pdflatex -t a4
|
||||
BUILDDIR ?= _build
|
||||
PDFLATEX=pdflatex -t a4
|
||||
|
||||
FIGS=codeflow.pdf hypertransport.pdf
|
||||
|
||||
all: sphinx corebootPortingGuide.pdf
|
||||
all: corebootPortingGuide.pdf
|
||||
|
||||
SVG2PDF=$(shell command -v svg2pdf)
|
||||
INKSCAPE=$(shell command -v inkscape)
|
||||
CONVERT=$(shell command -v convert)
|
||||
SVG2PDF=$(shell which svg2pdf)
|
||||
INKSCAPE=$(shell which inkscape)
|
||||
CONVERT=$(shell which convert)
|
||||
|
||||
codeflow.pdf: codeflow.svg
|
||||
ifneq ($(strip $(SVG2PDF)),)
|
||||
@ -33,9 +31,6 @@ else ifneq ($(strip $(CONVERT)),)
|
||||
convert $< $@
|
||||
endif
|
||||
|
||||
$(BUILDDIR):
|
||||
mkdir -p $(BUILDDIR)
|
||||
|
||||
corebootPortingGuide.toc: $(FIGS) corebootBuildingGuide.tex
|
||||
# 2 times to make sure we have a current toc.
|
||||
$(PDFLATEX) corebootBuildingGuide.tex
|
||||
@ -44,11 +39,11 @@ corebootPortingGuide.toc: $(FIGS) corebootBuildingGuide.tex
|
||||
corebootPortingGuide.pdf: $(FIGS) corebootBuildingGuide.tex corebootPortingGuide.toc
|
||||
$(PDFLATEX) corebootBuildingGuide.tex
|
||||
|
||||
sphinx: $(BUILDDIR)
|
||||
$(MAKE) -f Makefile.sphinx html BUILDDIR="$(BUILDDIR)"
|
||||
sphinx:
|
||||
$(MAKE) -f Makefile.sphinx html
|
||||
|
||||
clean-sphinx:
|
||||
$(MAKE) -f Makefile.sphinx clean BUILDDIR="$(BUILDDIR)"
|
||||
$(MAKE) -f Makefile.sphinx clean
|
||||
|
||||
clean: clean-sphinx
|
||||
rm -f *.aux *.idx *.log *.toc *.out $(FIGS)
|
||||
@ -56,25 +51,5 @@ clean: clean-sphinx
|
||||
distclean: clean
|
||||
rm -f corebootPortingGuide.pdf
|
||||
|
||||
livesphinx: $(BUILDDIR)
|
||||
$(MAKE) -f Makefile.sphinx livehtml SPHINXOPTS="$(SPHINXOPTS)" BUILDDIR="$(BUILDDIR)"
|
||||
|
||||
test:
|
||||
@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 doctest
|
||||
|
||||
help:
|
||||
@echo "all - Builds coreboot porting guide PDF (outdated)"
|
||||
@echo "sphinx - Builds html documentation in _build directory"
|
||||
@echo "clean - Cleans intermediate files"
|
||||
@echo "clean-sphinx - Removes sphinx output files"
|
||||
@echo "distclean - Removes PDF files as well"
|
||||
@echo "test - Runs documentation tests"
|
||||
@echo
|
||||
@echo " Makefile.sphinx builds - run with $(MAKE) -f Makefile-sphinx [target]"
|
||||
@echo
|
||||
@$(MAKE) -s -f Makefile.sphinx help 2>/dev/null
|
||||
|
||||
.phony: help livesphinx sphinx test
|
||||
.phony: distclean clean clean-sphinx
|
||||
livesphinx:
|
||||
$(MAKE) -f Makefile.sphinx livehtml SPHINXOPTS="$(SPHINXOPTS)"
|
||||
|
@ -1,4 +1,3 @@
|
||||
## SPDX-License-Identifier: GPL-2.0-only
|
||||
# Makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
|
@ -51,7 +51,7 @@ index 28e78fb366..0cce41b316 100644
|
||||
@@ -303,10 +303,10 @@ static void gpio_configure_pad(const struct pad_config *cfg)
|
||||
/* Patch GPIO settings for SoC specifically */
|
||||
soc_pad_conf = soc_gpio_pad_config_fixup(cfg, i, soc_pad_conf);
|
||||
|
||||
|
||||
- if (CONFIG(DEBUG_GPIO))
|
||||
+ if (soc_pad_conf != pad_conf)
|
||||
printk(BIOS_DEBUG,
|
||||
|
290
Documentation/acpi/devicetree.md
Normal file
@ -0,0 +1,290 @@
|
||||
# Adding new devices to a device tree
|
||||
|
||||
## Introduction
|
||||
|
||||
ACPI exposes a platform-independent interface for operating systems to perform
|
||||
power management and other platform-level functions. Some operating systems
|
||||
also use ACPI to enumerate devices that are not immediately discoverable, such
|
||||
as those behind I2C or SPI buses (in contrast to PCI). This document discusses
|
||||
the way that coreboot uses the concept of a "device tree" to generate ACPI
|
||||
tables for usage by the operating system.
|
||||
|
||||
## Devicetree and overridetree (if applicable)
|
||||
|
||||
For mainboards that are organized around a "reference board" or "baseboard"
|
||||
model (see ``src/mainboard/google/octopus`` or ``hatch`` for examples), there is
|
||||
typically a devicetree.cb file that all boards share, and any differences for a
|
||||
specific board ("variant") are captured in the overridetree.cb file. Any
|
||||
settings changed in the overridetree take precedence over those in the main
|
||||
devicetree. Note, not all mainboards will have the devicetree/overridetree
|
||||
distinction, and may only have a devicetree.cb file. Or you can always just
|
||||
write the ASL (ACPI Source Language) code yourself.
|
||||
|
||||
### Naming and referencing devices
|
||||
|
||||
When declaring a device, it can optionally be given an alias that can be
|
||||
referred to elsewhere. This is particularly useful to declare a device in one
|
||||
device tree while allowing its configuration to be more easily changed in an
|
||||
overlay. For instance, the AMD Picasso SoC definition
|
||||
(`soc/amd/picasso/chipset.cb`) declares an IOMMU on a PCI bus that is disabled
|
||||
by default:
|
||||
|
||||
```
|
||||
chip soc/amd/picasso
|
||||
device domain 0 on
|
||||
...
|
||||
device pci 00.2 alias iommu off end
|
||||
...
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
A device based on this SoC can override the configuration for the IOMMU without
|
||||
duplicating addresses, as in
|
||||
`mainboard/google/zork/variants/baseboard/devicetree_trembyle.cb`:
|
||||
|
||||
```
|
||||
chip soc/amd/picasso
|
||||
device domain 0
|
||||
...
|
||||
device ref iommu on end
|
||||
...
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
In this example the override simply enables the IOMMU, but it could also
|
||||
set additional properties (or even add child devices) inside the IOMMU `device`
|
||||
block.
|
||||
|
||||
---
|
||||
|
||||
It is important to note that devices that use `device ref` syntax to override
|
||||
previous definitions of a device by alias must be placed at **exactly the same
|
||||
location in the device tree** as the original declaration. If not, this will
|
||||
actually create another device rather than overriding the properties of the
|
||||
existing one. For instance, if the above snippet from `devicetree_trembyle.cb`
|
||||
were written as follows:
|
||||
|
||||
```
|
||||
chip soc/amd/picasso
|
||||
# NOTE: not inside domain 0!
|
||||
device ref iommu on end
|
||||
end
|
||||
```
|
||||
|
||||
Then this would leave the SoC's IOMMU disabled, and instead create a new device
|
||||
with no properties as a direct child of the SoC.
|
||||
|
||||
## Device drivers
|
||||
|
||||
Let's take a look at an example entry from
|
||||
``src/mainboard/google/hatch/variants/hatch/overridetree.cb``:
|
||||
|
||||
```
|
||||
device pci 15.0 on
|
||||
chip drivers/i2c/generic
|
||||
register "hid" = ""ELAN0000""
|
||||
register "desc" = ""ELAN Touchpad""
|
||||
register "irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPP_A21_IRQ)"
|
||||
register "wake" = "GPE0_DW0_21"
|
||||
device i2c 15 on end
|
||||
end
|
||||
end # I2C #0
|
||||
```
|
||||
|
||||
When this entry is processed during ramstage, it will create a device in the
|
||||
ACPI SSDT table (all devices in devicetrees end up in the SSDT table). The ACPI
|
||||
generation routines in coreboot actually generate the raw bytecode that
|
||||
represents the device's structure, but looking at ASL code is easier to
|
||||
understand; see below for what the disassembled bytecode looks like:
|
||||
|
||||
```
|
||||
Scope (\_SB.PCI0.I2C0)
|
||||
{
|
||||
Device (D015)
|
||||
{
|
||||
Name (_HID, "ELAN0000") // _HID: Hardware ID
|
||||
Name (_UID, Zero) // _UID: Unique ID
|
||||
Name (_DDN, "ELAN Touchpad") // _DDN: DOS Device Name
|
||||
Method (_STA, 0, NotSerialized) // _STA: Status
|
||||
{
|
||||
Return (0x0F)
|
||||
}
|
||||
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
|
||||
{
|
||||
I2cSerialBusV2 (0x0015, ControllerInitiated, 400000,
|
||||
AddressingMode7Bit, "\\_SB.PCI0.I2C0",
|
||||
0x00, ResourceConsumer, , Exclusive, )
|
||||
Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake, ,, )
|
||||
{
|
||||
0x0000002D,
|
||||
}
|
||||
})
|
||||
Name (_S0W, ACPI_DEVICE_SLEEP_D3_HOT) // _S0W: S0 Device Wake State
|
||||
Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake
|
||||
{
|
||||
0x15, // GPE #21
|
||||
0x03 // Sleep state S3
|
||||
})
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
You can see it generates _HID, _UID, _DDN, _STA, _CRS, _S0W, and _PRW
|
||||
names/methods in the Device's scope.
|
||||
|
||||
## Utilizing a device driver
|
||||
|
||||
The device driver must be enabled for your build. There will be a CONFIG option
|
||||
in the Kconfig file in the directory that the driver is in (e.g.,
|
||||
``src/drivers/i2c/generic`` contains a Kconfig file; the option here is named
|
||||
CONFIG_DRIVERS_I2C_GENERIC). The config option will need to be added to your
|
||||
mainboard's Kconfig file (e.g., ``src/mainboard/google/hatch/Kconfig``) in order
|
||||
to be compiled into your build.
|
||||
|
||||
## Diving into the above example:
|
||||
|
||||
Let's take a look at how the devicetree language corresponds to the generated
|
||||
ASL.
|
||||
|
||||
First, note this:
|
||||
|
||||
```
|
||||
chip drivers/i2c/generic
|
||||
```
|
||||
|
||||
This means that the device driver we're using has a corresponding structure,
|
||||
located at ``src/drivers/i2c/generic/chip.h``, named **struct
|
||||
drivers_i2c_generic_config** and it contains many properties you can specify to
|
||||
be included in the ACPI table.
|
||||
|
||||
### hid
|
||||
|
||||
```
|
||||
register "hid" = ""ELAN0000""
|
||||
```
|
||||
|
||||
This corresponds to **const char *hid** in the struct. In the ACPI ASL, it
|
||||
translates to:
|
||||
|
||||
```
|
||||
Name (_HID, "ELAN0000") // _HID: Hardware ID
|
||||
```
|
||||
|
||||
under the device. **This property is used to match the device to its driver
|
||||
during enumeration in the OS.**
|
||||
|
||||
### desc
|
||||
|
||||
```
|
||||
register "desc" = ""ELAN Touchpad""
|
||||
```
|
||||
|
||||
corresponds to **const char *desc** and in ASL:
|
||||
|
||||
```
|
||||
Name (_DDN, "ELAN Touchpad") // _DDN: DOS Device Name
|
||||
```
|
||||
|
||||
### irq
|
||||
|
||||
It also adds the interrupt,
|
||||
|
||||
```
|
||||
Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake, ,, )
|
||||
{
|
||||
0x0000002D,
|
||||
}
|
||||
```
|
||||
|
||||
which comes from:
|
||||
|
||||
```
|
||||
register "irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPP_A21_IRQ)"
|
||||
```
|
||||
|
||||
The GPIO pin IRQ settings control the "Level", "ActiveLow", and
|
||||
"ExclusiveAndWake" settings seen above (level means it is a level-triggered
|
||||
interrupt as opposed to edge-triggered; active low means the interrupt is
|
||||
triggered when the signal is low).
|
||||
|
||||
Note that the ACPI_IRQ_WAKE_LEVEL_LOW macro informs the platform that the GPIO
|
||||
will be routed through SCI (ACPI's System Control Interrupt) for use as a wake
|
||||
source. Also note that the IRQ names are SoC-specific, and you will need to
|
||||
find the names in your SoC's header file. The ACPI_* macros are defined in
|
||||
``src/arch/x86/include/acpi/acpi_device.h``.
|
||||
|
||||
Using a GPIO as an IRQ requires that it is configured in coreboot correctly.
|
||||
This is often done in a mainboard-specific file named ``gpio.c``.
|
||||
|
||||
### wake
|
||||
|
||||
The last register is:
|
||||
|
||||
```
|
||||
register "wake" = "GPE0_DW0_21"
|
||||
```
|
||||
|
||||
which indicates that the method of waking the system using the touchpad will be
|
||||
through a GPE, #21 associated with DW0, which is set up in devicetree.cb from
|
||||
this example. The "21" indicates GPP_X21, where GPP_X is mapped onto DW0
|
||||
elsewhere in the devicetree.
|
||||
|
||||
The last bit of the definition of that device includes:
|
||||
|
||||
```
|
||||
device i2c 15 on end
|
||||
```
|
||||
|
||||
which means it's an I2C device, with 7-bit address 0x15, and the device is "on",
|
||||
meaning it will be exposed in the ACPI table. The PCI device that the
|
||||
controller is located in determines which I2C bus the device is expected to be
|
||||
found on. In this example, this is I2C bus 0. This also determines the ACPI
|
||||
"Scope" that the device names and methods will live under, in this case
|
||||
"\_SB.PCI0.I2C0".
|
||||
|
||||
## Other auto-generated names
|
||||
|
||||
(see [ACPI specification
|
||||
6.3](https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf)
|
||||
for more details on ACPI methods)
|
||||
|
||||
### _S0W (S0 Device Wake State)
|
||||
_S0W indicates the deepest S0 sleep state this device can wake itself from,
|
||||
which in this case is ACPI_DEVICE_SLEEP_D3_HOT, representing _D3hot_.
|
||||
|
||||
### _PRW (Power Resources for Wake)
|
||||
_PRW indicates the power resources and events required for wake. There are no
|
||||
dependent power resources, but the GPE (GPE0_DW0_21) is mentioned here (0x15),
|
||||
as well as the deepest sleep state supporting waking the system (3), which is
|
||||
S3.
|
||||
|
||||
### _STA (Status)
|
||||
The _STA method is generated automatically, and its values, 0xF, indicates the
|
||||
following:
|
||||
|
||||
Bit [0] – Set if the device is present.
|
||||
Bit [1] – Set if the device is enabled and decoding its resources.
|
||||
Bit [2] – Set if the device should be shown in the UI.
|
||||
Bit [3] – Set if the device is functioning properly (cleared if device failed its diagnostics).
|
||||
|
||||
### _CRS (Current resource settings)
|
||||
The _CRS method is generated automatically, as the driver knows it is an I2C
|
||||
controller, and so specifies how to configure the controller for proper
|
||||
operation with the touchpad.
|
||||
|
||||
```
|
||||
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
|
||||
{
|
||||
I2cSerialBusV2 (0x0015, ControllerInitiated, 400000,
|
||||
AddressingMode7Bit, "\\_SB.PCI0.I2C0",
|
||||
0x00, ResourceConsumer, , Exclusive, )
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- **All fields that are left unspecified in the devicetree are initialized to
|
||||
zero.**
|
||||
- **All devices in devicetrees end up in the SSDT table, and are generated in
|
||||
coreboot's ramstage**
|
@ -11,12 +11,6 @@ upwards.
|
||||
|
||||
- [GPIO toggling in ACPI AML](gpio.md)
|
||||
|
||||
## Windows-specific ACPI documentation
|
||||
## devicetree
|
||||
|
||||
- [Windows-specific documentation](windows.md)
|
||||
|
||||
## ACPI specification - Useful links
|
||||
|
||||
- [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)
|
||||
- [Adding devices to a device tree](devicetree.md)
|
||||
|
@ -1,9 +0,0 @@
|
||||
# Testing ACPI changes under Windows
|
||||
|
||||
When testing ACPI changes in coreboot against Windows 8 or newer, beware that
|
||||
during a normal boot after a clean shutdown, Windows will use the fast startup
|
||||
mechanism which results in it not evaluating the changed ACPI code but instead
|
||||
using some cached version which won't include the changes that were supposed to
|
||||
be tested. In order for Windows to actually use the new ACPI tables, either
|
||||
disable the fast startup or just tell Windows to do a reboot which will make it
|
||||
read and use the ACPI tables in memory instead of an outdated cached version.
|
@ -26,7 +26,9 @@ In order to add support for x86_64 the following assumptions were made:
|
||||
* A stage can install new page tables in RAM
|
||||
|
||||
## Page tables
|
||||
A `pagetables` cbfs file is generated based on an assembly file.
|
||||
Page tables are generated by a tool in `util/pgtblgen/pgtblgen`. It writes
|
||||
the page tables to a file which is then included into the CBFS as file called
|
||||
`pagetables`.
|
||||
|
||||
To generate the static page tables it must know the physical address where to
|
||||
place the file.
|
||||
|
Before Width: | Height: | Size: 230 KiB After Width: | Height: | Size: 230 KiB |
@ -95,17 +95,6 @@ If you feel you have been falsely or unfairly accused of violating this
|
||||
Code of Conduct, you should notify the arbitration team with a concise
|
||||
description of your grievance.
|
||||
|
||||
## Legal action
|
||||
|
||||
Threatening or starting legal action against the project, sibling
|
||||
projects hosted on coreboot.org infrastructure, project or infrastructure
|
||||
maintainers leads to an immediate ban from coreboot.org and related
|
||||
systems.
|
||||
|
||||
The ban can be reconsidered, but it's the default action because the
|
||||
people who pour lots of time and money into the projects aren't interested
|
||||
in seeing their resources used against them.
|
||||
|
||||
## Scope
|
||||
|
||||
We expect all community participants (contributors, paid or otherwise;
|
||||
@ -126,4 +115,4 @@ Our arbitration team consists of the following people
|
||||
This Code of Conduct is distributed under
|
||||
a [Creative Commons Attribution-ShareAlike
|
||||
license](http://creativecommons.org/licenses/by-sa/3.0/). It is based
|
||||
on the [Citizen Code of Conduct](https://web.archive.org/web/20200330154000/http://citizencodeofconduct.org/)
|
||||
on the [Citizen Code of Conduct](http://citizencodeofconduct.org/)
|
||||
|
@ -14,7 +14,7 @@ their development kit with them and conduct development sessions.
|
||||
|
||||
[Open Source Firmware at Facebook](https://fosdem.org/2019/schedule/event/open_source_firmware_at_facebook/) by [David Hendricks](https://github.com/dhendrix) and [Andrea Barberio](https://github.com/insomniacslk) at [FOSDEM 2019](https://fosdem.org/2019/) ([video](https://video.fosdem.org/2019/K.4.401/open_source_firmware_at_facebook.mp4)) ([slides](https://insomniac.slackware.it/static/2019_fosdem_linuxboot_at_facebook.pdf)) (2019-02-03)
|
||||
|
||||
[Open Source Firmware - A love story](https://www.youtube.com/watch?v=xfqKm190dbU) by [Philipp Deppenwiese](https://cybersecurity.9elements.com) at [35c3](https://web.archive.org/web/20211027210118/https://events.ccc.de/congress/2018/wiki/index.php/Main_Page)
|
||||
[Open Source Firmware - A love story](https://www.youtube.com/watch?v=xfqKm190dbU) by [Philipp Deppenwiese](https://cybersecurity.9elements.com) at [35c3](https://events.ccc.de/congress/2018)
|
||||
([slides](https://cdn.media.ccc.de/congress/2018/slides-h264-hd/35c3-9778-deu-eng-Open_Source_Firmware_hd-slides.mp4)) (2018-12-27)
|
||||
|
||||
[coreboot mainboard porting with Intel FSP 2.0](https://www.youtube.com/watch?v=qUgo-AVsSCI) by Subrata Banik at OSFC 2018
|
||||
|
@ -14,7 +14,7 @@ read its
|
||||
## Real time chat
|
||||
|
||||
We also have a real time chat room on [IRC](ircs://irc.libera.chat/#coreboot),
|
||||
also bridged to [Matrix](https://matrix.to/#/#coreboot:matrix.org) and a
|
||||
also bridged to [Matrix](https://matrix.to/#/#coreboot:libera.chat) and a
|
||||
[Discord](https://discord.gg/JqT8NM5Zbg) presence. You can also find us on
|
||||
[OSF Slack](https://osfw.slack.com/), which has channels on many open source
|
||||
firmware related topics. Slack requires that people come from specific domains
|
||||
@ -31,7 +31,7 @@ topics, including community and technical matters that benefit from
|
||||
an official decision.
|
||||
|
||||
We tried a whole lot of different tools, but so far the meetings worked
|
||||
best with [Google Meet](https://meet.google.com/pyt-newq-rbb),
|
||||
best with [Google Meet](https://meet.google.com/syn-toap-agu),
|
||||
using [Google Docs](https://docs.google.com/document/d/1NRXqXcLBp5pFkHiJbrLdv3Spqh1Hu086HYkKrgKjeDQ/edit)
|
||||
for the agenda and meeting minutes. Neither the video conference nor
|
||||
the document require a Google account to participate, although editing
|
||||
|
@ -1,6 +0,0 @@
|
||||
# Community
|
||||
|
||||
* [Code of Conduct](code_of_conduct.md)
|
||||
* [Language style](language_style.md)
|
||||
* [Community forums](forums.md)
|
||||
* [coreboot at conferences](conferences.md)
|
45
Documentation/community/services.md
Normal file
@ -0,0 +1,45 @@
|
||||
# Accounts on coreboot.org
|
||||
|
||||
There are a number of places where you can benefit from creaating an account
|
||||
in our community. Since there is no single sign-on system in place (at this
|
||||
time), they come with their own setup routines.
|
||||
|
||||
## Gerrit code review
|
||||
We exchange and review patches to the code using our [Gerrit code review
|
||||
system](https://review.coreboot.org).
|
||||
|
||||
It allows logging in with a Google or GitHub account using OAuth2 as well
|
||||
as with any OpenID provider that you may already use.
|
||||
|
||||
On the [settings screen](https://review.coreboot.org/settings) you can register
|
||||
all your email addresses you intend to use in the context of coreboot
|
||||
development so that commits with your email address in them are associated with
|
||||
you properly.
|
||||
|
||||
### https push access
|
||||
When using the https URLs to git repositories, you can push with the "HTTP
|
||||
Credentials" you can have Gerrit generate for you on that page. By default,
|
||||
git uses `$HOME/.netrc` for http authentication data, so add a line there
|
||||
stating:
|
||||
|
||||
machine review.coreboot.org login $your-user-name password $your-password
|
||||
|
||||
### Gerrit user avatar
|
||||
To setup an avatar to show in Gerrit, clone the avatars repository at
|
||||
https://review.coreboot.org/gerrit-avatars.git and add a file named
|
||||
$your-user-ID.jpg (the user ID is a number shown on the [settings screen](https://review.coreboot.org/settings)).
|
||||
The image must be provided in JPEG format, must be square and have at most 50000
|
||||
bytes.
|
||||
|
||||
After you push for review, the system will automatically verify your change
|
||||
and, if adhering to these constraints, approve it. You can then immediately
|
||||
submit it.
|
||||
|
||||
## Issue tracker
|
||||
We have an [issue tracker](https://ticket.coreboot.org) that is used for
|
||||
coreboot and related code, such as libpayload, as well as for the project's
|
||||
infrastructure.
|
||||
|
||||
It can be helpful to refer to issues we track there in commit messages:
|
||||
|
||||
Fixes: https://ticket.coreboot.org/issues/$id
|
@ -55,7 +55,7 @@ else:
|
||||
#
|
||||
# This is also used if you do content translation via gettext catalogs.
|
||||
# Usually you set "language" from the command line for these cases.
|
||||
language = 'en'
|
||||
language = None
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
@ -87,9 +87,11 @@ html_theme = 'sphinx_rtd_theme'
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['_static']
|
||||
|
||||
html_css_files = [
|
||||
'theme_overrides.css', # override wide tables in RTD theme
|
||||
]
|
||||
html_context = {
|
||||
'css_files': [
|
||||
'_static/theme_overrides.css', # override wide tables in RTD theme
|
||||
],
|
||||
}
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'corebootdoc'
|
||||
|
@ -3,7 +3,7 @@
|
||||
This document describes the preferred C coding style for the
|
||||
coreboot project. It is in many ways exactly the same as the Linux
|
||||
kernel coding style. In fact, most of this document has been copied from
|
||||
the [Linux kernel coding style](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/Documentation/process/4.Coding.rst)
|
||||
the [Linux kernel coding style](http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/Documentation/CodingStyle?id=HEAD)
|
||||
|
||||
The guidelines in this file should be seen as a strong suggestion, and
|
||||
should overrule personal preference. But they may be ignored in
|
||||
@ -66,7 +66,7 @@ case 'm':
|
||||
case 'K':
|
||||
case 'k':
|
||||
mem <<= 10;
|
||||
__fallthrough;
|
||||
/* fall through */
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -818,9 +818,9 @@ Function return values and names
|
||||
|
||||
Functions can return values of many different kinds, and one of the most
|
||||
common is a value indicating whether the function succeeded or failed.
|
||||
Such a value can be represented as an error-code integer (`CB_ERR_xxx`
|
||||
(negative number) = failure, `CB_SUCCESS` (0) = success) or a "succeeded"
|
||||
boolean (0 = failure, non-zero = success).
|
||||
Such a value can be represented as an error-code integer (-Exxx =
|
||||
failure, 0 = success) or a "succeeded" boolean (0 = failure, non-zero
|
||||
= success).
|
||||
|
||||
Mixing up these two sorts of representations is a fertile source of
|
||||
difficult-to-find bugs. If the C language included a strong distinction
|
||||
@ -832,84 +832,21 @@ If the name of a function is an action or an imperative command,
|
||||
the function should return an error-code integer. If the name
|
||||
is a predicate, the function should return a "succeeded" boolean.
|
||||
|
||||
For example, "add work" is a command, and the `add_work()` function
|
||||
returns 0 for success or `CB_ERR` for failure. In the same way, "PCI
|
||||
device present" is a predicate, and the `pci_dev_present()` function
|
||||
For example, "add work" is a command, and the add_work() function
|
||||
returns 0 for success or -EBUSY for failure. In the same way, "PCI
|
||||
device present" is a predicate, and the pci_dev_present() function
|
||||
returns 1 if it succeeds in finding a matching device or 0 if it
|
||||
doesn't.
|
||||
|
||||
All EXPORTed functions must respect this convention, and so should all
|
||||
public functions. Private (static) functions need not, but it is
|
||||
recommended that they do.
|
||||
|
||||
Functions whose return value is the actual result of a computation,
|
||||
rather than an indication of whether the computation succeeded, are not
|
||||
subject to this rule. Generally they indicate failure by returning some
|
||||
out-of-range result. Typical examples would be functions that return
|
||||
pointers; they use NULL to report failure.
|
||||
|
||||
Error handling, assertions and die()
|
||||
-----------------------------
|
||||
|
||||
As firmware, coreboot has no means to let the user interactively fix things when
|
||||
something goes wrong. We either succeed to boot or the device becomes a brick
|
||||
that must be recovered through complicated external means (e.g. a flash
|
||||
programmer). Therefore, coreboot code should strive to continue booting
|
||||
wherever possible.
|
||||
|
||||
In most cases, errors should be handled by logging a message of at least
|
||||
`BIOS_ERR` level, returning out of the function stack for the failed feature,
|
||||
and then continuing execution. For example, if a function reading the EDID of an
|
||||
eDP display panel encounters an I2C error, it should print a "cannot read EDID"
|
||||
message and return an error code. The calling display initialization function
|
||||
knows that without the EDID there is no way to initialize the display correctly,
|
||||
so it will also immediately return with an error code without running its
|
||||
remaining code that would initialize the SoC's display controller. Exeuction
|
||||
returns further up the function stack to the mainboard initialization code
|
||||
which continues booting despite the failed display initialization, since
|
||||
display functionality is non-essential to the system. (Code is encouraged but
|
||||
not required to use `enum cb_err` error codes to return these errors.)
|
||||
|
||||
coreboot also has the `die()` function that completely halts execution. `die()`
|
||||
should only be used as a last resort, since it results in the worst user
|
||||
experience (bricked system). It is generally preferrable to continue executing
|
||||
even after a problem was encountered that might be fatal (e.g. SPI clock
|
||||
couldn't be configured correctly), because a slight chance of successfully
|
||||
booting is still better than not booting at all. The only cases where `die()`
|
||||
should be used are:
|
||||
|
||||
1. There is no (simple) way to continue executing. For example, when loading the
|
||||
next stage from SPI flash fails, we don't have any more code to execute. When
|
||||
memory initialization fails, we have no space to load the ramstage into.
|
||||
|
||||
2. Continuing execution would pose a security risk. All security features in
|
||||
coreboot are optional, but when they are configured in the user must be able
|
||||
to rely on them. For example, if CBFS verification is enabled and the file
|
||||
hash when loading the romstage doesn't match what it should be, it is better
|
||||
to stop execution than to jump to potentially malicious code.
|
||||
|
||||
In addition to normal error logging with `printk()`, coreboot also offers the
|
||||
`assert()` macro. `assert()` should be used judiciously to confirm that
|
||||
conditions are true which the programmer _knows_ to be true, in order to catch
|
||||
programming errors and incorrect assumptions. It is therefore different from a
|
||||
normal `if ()`-check that is used to actually test for things which may turn
|
||||
out to be true or false based on external conditions. For example, anything
|
||||
that involves communicating with hardware, such as whether an attempt to read
|
||||
from SPI flash succeeded, should _not_ use `assert()` and should instead just
|
||||
be checked with a normal `if ()` and subsequent manual error handling. Hardware
|
||||
can always fail for various reasons and the programmer can never 100% assume in
|
||||
advance that it will work as expected. On the other hand, if a function takes a
|
||||
pointer parameter `ctx` and the contract for that function (as documented in a
|
||||
comment above its declaration) specifies that this parameter should point to a
|
||||
valid context structure, then adding an `assert(ctx)` line to that function may
|
||||
be a good idea. The programmer knows that this function should never be called
|
||||
with a NULL pointer (because that's how it is specified), and if it was actually
|
||||
called with a NULL pointer that would indicate a programming error on account of
|
||||
the caller.
|
||||
|
||||
`assert()` can be configured to either just print an error message and continue
|
||||
execution (default), or call `die()` (when `CONFIG_FATAL_ASSERTS` is set).
|
||||
Developers are encouraged to always test their code with this option enabled to
|
||||
make assertion errors (and therefore bugs) more easy to notice. Since assertions
|
||||
thus do not always stop execution, they should never be relied upon to be the
|
||||
sole guard against conditions that really _need_ to stop execution (e.g.
|
||||
security guarantees should never be enforced only by `assert()`).
|
||||
pointers; they use NULL or the ERR_PTR mechanism to report failure.
|
||||
|
||||
Headers and includes
|
||||
---------------
|
||||
@ -1023,55 +960,17 @@ asm ("magic %reg1, #42nt"
|
||||
: /* outputs */ : /* inputs */ : /* clobbers */);
|
||||
```
|
||||
|
||||
GCC extensions
|
||||
--------------
|
||||
|
||||
GCC is the only officially-supported compiler for coreboot, and a
|
||||
variety of its C language extensions are heavily used throughout the
|
||||
code base. There have been occasional attempts to add clang as a second
|
||||
compiler option, which is generally compatible to the same language
|
||||
extensions that have been long-established by GCC.
|
||||
|
||||
Some GCC extensions (e.g. inline assembly) are basically required for
|
||||
proper firmware development. Others enable more safe or flexible
|
||||
coding patterns than can be expressed with standard C (e.g. statement
|
||||
expressions and `typeof()` to avoid double evaluation in macros like
|
||||
`MAX()`). Yet others just add some simple convenience and reduce
|
||||
boilerplate (e.g. `void *` arithmetic).
|
||||
|
||||
Since some GCC extensions are necessary either way, there is no gain
|
||||
from avoiding other GCC extensions elsewhere. The use of all official
|
||||
GCC extensions is expressly allowed within coreboot. In cases where an
|
||||
extension can be replaced by a 100% equivalent C standard feature with
|
||||
no extra boilerplate or loss of readability, the C standard feature
|
||||
should be preferred (this usually only happens when GCC retains an
|
||||
older pre-standardization extension for backwards compatibility, e.g.
|
||||
the old pre-C99 syntax for designated initializers). But if there is
|
||||
any advantage offered by the GCC extension (e.g. using GCC zero-length
|
||||
arrays instead of C99 variable-length arrays because they don't inhibit
|
||||
`sizeof()`), there is no reason to deprive ourselves of that, and "this
|
||||
is not C standard compliant" should not be a reason to argue against
|
||||
its use in reviews.
|
||||
|
||||
This rule only applies to explicit GCC extensions listed in the
|
||||
"Extensions to the C Language Family" section of the GCC manual. Code
|
||||
should never rely on incidental GCC translation behavior that is not
|
||||
explicitly documented as a feature and could change at any moment.
|
||||
|
||||
References
|
||||
----------
|
||||
|
||||
The C Programming Language, Second Edition by Brian W. Kernighan and
|
||||
Dennis M. Ritchie. Prentice Hall, Inc., 1988. ISBN 0-13-110362-8
|
||||
(paperback), 0-13-110370-9 (hardback). URL:
|
||||
<https://duckduckgo.com/?q=isbn+0-13-110362-8> or
|
||||
<https://www.google.com/search?q=isbn+0-13-110362-8>
|
||||
|
||||
<http://cm.bell-labs.com/cm/cs/cbook/>
|
||||
|
||||
The Practice of Programming by Brian W. Kernighan and Rob Pike.
|
||||
Addison-Wesley, Inc., 1999. ISBN 0-201-61586-X. URL:
|
||||
<https://duckduckgo.com/?q=ISBN+0-201-61586-X> or
|
||||
<https://www.google.com/search?q=ISBN+0-201-61586-X>
|
||||
<http://cm.bell-labs.com/cm/cs/tpop/>
|
||||
|
||||
GNU manuals - where in compliance with K&R and this text - for cpp, gcc,
|
||||
gcc internals and indent, all available from
|
||||
|
@ -1,286 +0,0 @@
|
||||
# Google Summer of Code
|
||||
|
||||
## Organization admins
|
||||
|
||||
The *organization admins* are managing the GSoC program for the coreboot
|
||||
organization.
|
||||
|
||||
The organization admins are:
|
||||
|
||||
* Felix Singer (primary)
|
||||
* Martin Roth
|
||||
* David Hendricks
|
||||
|
||||
|
||||
## Contacts
|
||||
|
||||
If you are interested in participating in GSoC as a contributor or mentor,
|
||||
please have a look at our [community forums] and reach out to us. Working closely
|
||||
with the community is highly encouraged, as we've seen that our most successful
|
||||
contributors are generally very involved.
|
||||
|
||||
|
||||
## Why work on coreboot for GSoC?
|
||||
|
||||
* coreboot offers you the opportunity to work with various architectures
|
||||
right on the iron. coreboot supports both current and older silicon for a
|
||||
wide variety of chips and technologies.
|
||||
|
||||
* coreboot has a worldwide developer and user base.
|
||||
|
||||
* We are a very passionate team, so you will interact directly with the
|
||||
project initiators and project leaders.
|
||||
|
||||
* We have a large, helpful community. coreboot has some extremely talented
|
||||
and helpful experts in firmware involved in the project. They are ready to
|
||||
assist and mentor contributors participating in GSoC.
|
||||
|
||||
* One of the last areas where open source software is not common is firmware.
|
||||
Running proprietary firmware can have severe effects on user's freedom and
|
||||
security. coreboot has a mission to change that by providing a common
|
||||
framework for initial hardware initialization and you can help us succeed.
|
||||
|
||||
|
||||
## Collection of official GSoC guides & documents
|
||||
|
||||
* [Timeline][GSoC Timeline]
|
||||
|
||||
* [Roles and Responsibilities][GSoC Roles and Responsibilities]
|
||||
|
||||
* [Contributor Guide][GSoC Contributor Guide]
|
||||
|
||||
* [Contributor Advice][GSoC Contributor Advice]
|
||||
|
||||
* [Mentor Guide][GSoC Mentor Guide]
|
||||
|
||||
* [FAQ][GSoC FAQ]
|
||||
|
||||
* [Rules][GSoC Rules]
|
||||
|
||||
* [Glossary][GSoC Glossary]
|
||||
|
||||
* [Organization Admin Tips][GSoC Organization Admin Tips]
|
||||
|
||||
|
||||
## Contributor requirements & commitments
|
||||
|
||||
Google Summer of Code is a significant time commitment for you. Medium-sized
|
||||
projects are estimated to take 175 hours, while large-sized projects are
|
||||
estimated to take 350 hours. Depending on the project size, this means we
|
||||
expect you to work roughly half-time or full-time on your project during the
|
||||
three months of coding. We expect to be able to see this level of effort in the
|
||||
results.
|
||||
|
||||
The standard program duration is 12 weeks and in consultation with the mentor
|
||||
it can be extended up to 22 weeks. Please keep in mind that the actual number
|
||||
of hours you spend on the project highly depends on your skills and previous
|
||||
experience.
|
||||
|
||||
Make sure that your schedule (exams, courses, day job) gives you a sufficient
|
||||
amount of spare time. If this is not the case, then you should not apply.
|
||||
|
||||
|
||||
### Before applying
|
||||
|
||||
* Join the [mailing list] and our other [community forums]. Introduce yourself
|
||||
and mention that you are a prospective GSoC contributor. Ask questions and
|
||||
discuss the project that you are considering. Community involvement is a
|
||||
key component of coreboot development.
|
||||
|
||||
* You accept our [Code of Conduct] and [Language style].
|
||||
|
||||
* Demonstrate that you can work with the coreboot codebase.
|
||||
|
||||
* Look over some of the development processes guidelines: [Getting started],
|
||||
[Tutorial], [Flashing firmware tutorial] and [Coding style].
|
||||
|
||||
* Download, build and boot coreboot in QEMU or on real hardware. Please email
|
||||
your serial output results to the [mailing list].
|
||||
|
||||
* Look through some patches on Gerrit to get an understanding of the review
|
||||
process and common issues.
|
||||
|
||||
* Get signed up for Gerrit and push at least one patch to Gerrit for review.
|
||||
Check the [small project list][Project ideas] or ask for simple tasks on
|
||||
the [mailing list] or on our other [community forums] if you need ideas.
|
||||
|
||||
|
||||
### During the program
|
||||
|
||||
* To pass and to be paid by Google requires that you meet certain milestones.
|
||||
|
||||
* First, you must be in good standing with the community before the official
|
||||
start of the program. We expect you to post some design emails to the
|
||||
[mailing list], and get feedback on them, both before applying, and during
|
||||
the "community bonding period" between acceptance and official start.
|
||||
|
||||
* You must have made progress and committed significant code before the
|
||||
mid-term point and by the final.
|
||||
|
||||
* We require that accepted contributors to maintain a blog, where you are
|
||||
expected to write about your project *WEEKLY*. This is a way to measure
|
||||
progress and for the community at large to be able to help you. GSoC is
|
||||
*NOT* a private contract between your mentor and you.
|
||||
|
||||
* You must be active in the community on IRC and the [mailing list].
|
||||
|
||||
* You are expected to work on development publicly, and to push commits to the
|
||||
project on a regular basis. Depending on the project and what your mentor
|
||||
agrees to, these can be published directly to the project or to a public
|
||||
repository such as Gitlab or Github. If you are not publishing directly to
|
||||
the project codebase, be aware that we do not want large dumps of code that
|
||||
need to be rushed to meet the mid-term and final goals.
|
||||
|
||||
We don't expect our contributors to be experts in our problem domain, but we
|
||||
don't want you to fail because some basic misunderstanding was in your way of
|
||||
completing the task.
|
||||
|
||||
|
||||
## Projects
|
||||
|
||||
There are many development tasks available in coreboot. We prepared some ideas
|
||||
for Summer of Code projects. These are projects that we think can be managed in
|
||||
the timeline of GSoC, and they cover areas where coreboot is trying to reach
|
||||
new users and new use cases.
|
||||
|
||||
Of course your application does not have to be based on any of the ideas listed.
|
||||
It is entirely possible that you have a great idea that we just didn't think of
|
||||
yet. Please let us know!
|
||||
|
||||
The blog posts related to previous GSoC projects might give some insights to
|
||||
what it is like to be a coreboot GSoC contributor.
|
||||
|
||||
|
||||
## coreboot Summer of Code Application
|
||||
|
||||
coreboot welcomes contributors from all backgrounds and levels of experience.
|
||||
|
||||
Your application should include a complete project proposal. You should
|
||||
document that you have the knowledge and the ability to complete your proposed
|
||||
project. This may require a little research and understanding of coreboot prior
|
||||
to sending your application. The community and coreboot project mentors are your
|
||||
best resource in fleshing out your project ideas and helping with a project
|
||||
timeline. We recommend that you get feedback and recommendations on your
|
||||
proposal before the application deadline.
|
||||
|
||||
Please complete the standard GSoC application and project proposal. Provide the
|
||||
following information as part of your application. Make sure to provide multiple
|
||||
ways of communicating in case your equipment (such as a laptop) is lost,
|
||||
damaged, or stolen, or in case of a natural disaster that disrupts internet
|
||||
service. You risk automatically failing if your mentor cannot contact you and if
|
||||
you cannot provide updates according to GSoC deadlines.
|
||||
|
||||
**Personal Information**
|
||||
|
||||
* Name
|
||||
|
||||
* Email and contact options (IRC, Matrix, …)
|
||||
|
||||
* Phone number (optional, but recommended)
|
||||
|
||||
* Timezone, Usual working hours (UTC)
|
||||
|
||||
* School / University, Degree Program, expected graduation date
|
||||
|
||||
* Short bio / Overview of your background
|
||||
|
||||
* What are your other time commitments? Do you have a job, classes, vacations?
|
||||
When and how long?
|
||||
|
||||
**Software experience**
|
||||
|
||||
If applicable, please provide the following information:
|
||||
|
||||
* Portfolio, Website, blog, microblog, Github, Gitlab, ...
|
||||
|
||||
* Links to one or more patches submitted
|
||||
|
||||
* Links to posts on the [mailing list] with the serial output of your build.
|
||||
|
||||
* Please comment on your software and firmware experience.
|
||||
|
||||
* Have you contributed to an open source project? Which one? What was your
|
||||
experience?
|
||||
|
||||
* What was your experience while building and running coreboot? Did you have
|
||||
problems?
|
||||
|
||||
**Your project**
|
||||
|
||||
* Provide an overview of your project (in your own words).
|
||||
|
||||
* Provide a breakdown of your project in small specific weekly goals. Think
|
||||
about the potential timeline.
|
||||
|
||||
* How will you accomplish this goal? What is your working style?
|
||||
|
||||
* Explain what risks or potential problems your project might experience.
|
||||
|
||||
* What would you expect as a minimum level of success?
|
||||
|
||||
* Do you have a stretch goal?
|
||||
|
||||
**Other**
|
||||
|
||||
* Resume (optional)
|
||||
|
||||
|
||||
### Advice on how to apply
|
||||
|
||||
* [GSoC Contributor Guide]
|
||||
|
||||
* The Drupal project has a great page on how to write an GSoC application.
|
||||
|
||||
* Secrets for GSoC success: [2]
|
||||
|
||||
|
||||
## Mentors
|
||||
|
||||
Each accepted project will have at least one mentor. We will match mentors and
|
||||
contributors based on the project and experience level. If possible, we also
|
||||
will try to match their time zones.
|
||||
|
||||
Mentors are expected to stay in frequent contact with the contributor and
|
||||
provide guidance such as code reviews, pointers to useful documentation, etc.
|
||||
This should generally be a time commitment of several hours per week.
|
||||
|
||||
Some projects might have more than one mentor, who can serve as a backup. They
|
||||
are expected to coordinate with each other and a contributor on a regular basis,
|
||||
and keep track of the contributor process. They should be able to take over
|
||||
mentoring duty if one of the mentors is unavailable (vacations, sickness,
|
||||
emergencies).
|
||||
|
||||
|
||||
### Volunteering to be a mentor
|
||||
|
||||
If you'd like to volunteer to be a mentor, please read the [GSoC Mentor Guide].
|
||||
This will give you a better idea of expectations, and where to go for help.
|
||||
After that, contact Org Admins (see coreboot contacts section above).
|
||||
|
||||
The following coreboot developers have volunteered to be GSoC 2022 mentors.
|
||||
Please stop by in our community forums and say hi to them and ask them
|
||||
questions.
|
||||
|
||||
* Tim Wawrzynczak
|
||||
* Raul Rangel
|
||||
* Ron Minnich
|
||||
|
||||
|
||||
[community forums]: ../community/forums.md
|
||||
[mailing list]: https://mail.coreboot.org/postorius/lists/coreboot.coreboot.org
|
||||
[Getting started]: ../getting_started/index.md
|
||||
[Tutorial]: ../tutorial/index.md
|
||||
[Flashing firmware tutorial]: ../tutorial/flashing_firmware/index.md
|
||||
[Coding style]: coding_style.md
|
||||
[Code of Conduct]: ../community/code_of_conduct.md
|
||||
[Language style]: ../community/language_style.md
|
||||
[Project ideas]: project_ideas.md
|
||||
[GSoC Timeline]: https://developers.google.com/open-source/gsoc/timeline
|
||||
[GSoC Roles and Responsibilities]: https://developers.google.com/open-source/gsoc/help/responsibilities
|
||||
[GSoC Contributor Guide]: https://google.github.io/gsocguides/student
|
||||
[GSoC Contributor Advice]: https://developers.google.com/open-source/gsoc/help/student-advice
|
||||
[GSoC Mentor Guide]: https://google.github.io/gsocguides/mentor
|
||||
[GSoC FAQ]: https://developers.google.com/open-source/gsoc/faq
|
||||
[GSoC Rules]: https://summerofcode.withgoogle.com/rules
|
||||
[GSoC Glossary]: https://developers.google.com/open-source/gsoc/resources/glossary
|
||||
[GSoC Organization Admin Tips]: https://developers.google.com/open-source/gsoc/help/oa-tips
|
@ -1,7 +0,0 @@
|
||||
# Contributing
|
||||
|
||||
* [Coding Style](coding_style.md)
|
||||
* [Gerrit Guidelines](gerrit_guidelines.md)
|
||||
* [Project Ideas](project_ideas.md)
|
||||
* [Documentation Ideas](documentation_ideas.md)
|
||||
* [Google Summer of Code](gsoc.md)
|
@ -20,24 +20,6 @@ doubt if you can bring yourself up to speed in a required time frame
|
||||
with the projects. We can then try together to figure out if you're a
|
||||
good match for a project, even when requirements might not all be met.
|
||||
|
||||
## Small projects
|
||||
|
||||
This is a collection of tasks which don't require deep knowledge on
|
||||
coreboot itself. If you are a beginner and want to get familiar with the
|
||||
the project and the code base, or if you just want to get your hands
|
||||
dirty with some small tasks, then these are for you.
|
||||
|
||||
* Resolve static analysis issues reported by [scan-build] and
|
||||
[Coverity scan]. More details on the page for
|
||||
[Coverity scan integration].
|
||||
|
||||
* Resolve issues reported by the [linter][Linter issues]
|
||||
|
||||
[scan-build]: https://coreboot.org/scan-build/
|
||||
[Coverity scan]: https://scan.coverity.com/projects/coreboot
|
||||
[Coverity scan integration]: ../infrastructure/coverity.md
|
||||
[Linter issues]: https://qa.coreboot.org/job/coreboot-untested-files/lastSuccessfulBuild/artifact/lint.txt
|
||||
|
||||
## Provide toolchain binaries
|
||||
Our crossgcc subproject provides a uniform compiler environment for
|
||||
working on coreboot and related projects. Sadly, building it takes hours,
|
||||
@ -63,6 +45,7 @@ non-Linux builds or Docker for different Linux distributions.
|
||||
* hardware requirements: Nothing special
|
||||
|
||||
### Mentors
|
||||
* Patrick Georgi <patrick@georgi.software>
|
||||
|
||||
## Support Power9/Power8 in coreboot
|
||||
There are some basic PPC64 stubs in coreboot, and there's open hardware
|
||||
@ -86,8 +69,8 @@ across architectures.
|
||||
## Port payloads to ARM, AArch64 or RISC-V
|
||||
While we have a rather big set of payloads for x86 based platforms, all other
|
||||
architectures are rather limited. Improve the situation by porting a payload
|
||||
to one of the platforms, for example GRUB2, U-Boot (the UI part), edk2,
|
||||
FILO, or Linux-as-Payload.
|
||||
to one of the platforms, for example GRUB2, U-Boot (the UI part), Tianocore,
|
||||
yabits, FILO, or Linux-as-Payload.
|
||||
|
||||
Since this is a bit of a catch-all idea, an application to GSoC should pick a
|
||||
combination of payload and architecture to support.
|
||||
@ -129,6 +112,7 @@ their bug reports.
|
||||
going on from the resulting logs.
|
||||
|
||||
### Mentors
|
||||
* Patrick Georgi <patrick@georgi.software>
|
||||
|
||||
## Extend Ghidra to support analysis of firmware images
|
||||
[Ghidra](https://ghidra-sre.org) is a recently released cross-platform
|
||||
|
Before Width: | Height: | Size: 195 KiB |
@ -1,40 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="250"
|
||||
height="200"
|
||||
viewBox="0 0 250.00001 200"
|
||||
version="1.1"
|
||||
id="svg4"
|
||||
sodipodi:docname="coreboot_logo.svg"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
id="namedview6"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="true"
|
||||
showgrid="false"
|
||||
width="250px"
|
||||
height="200px"
|
||||
inkscape:zoom="1.464382"
|
||||
inkscape:cx="-62.825135"
|
||||
inkscape:cy="121.21154"
|
||||
inkscape:window-width="1519"
|
||||
inkscape:window-height="920"
|
||||
inkscape:window-x="209"
|
||||
inkscape:window-y="73"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
id="path61"
|
||||
d="m 80.661062,0.13961031 c 0,0 8.15178,6.60943399 23.247088,18.58954069 1.05796,0.880056 1.33191,1.294888 1.12373,1.641232 -0.31985,0.543174 -1.75582,-0.08872 -1.75582,-0.08872 -11.664048,-4.438128 -24.834388,-6.953649 -33.759848,-6.376408 -2.95434,0.189259 -3.90102,0.665956 -4.321175,1.508159 -0.19683,0.395552 -0.226549,1.460608 0.765169,2.779745 3.900636,5.157312 13.294036,15.263399 28.921176,24.855056 16.060528,9.852834 44.423978,23.830157 69.508388,34.990773 11.22686,4.992657 19.31714,11.666735 16.74132,19.3658 -2.87674,8.579122 -13.98099,9.747592 -22.85157,6.198982 C 151.07253,100.72135 144.33596,91.685794 133.39489,79.565635 114.43868,58.561649 105.44571,50.180157 73.988942,56.584689 58.21986,59.796417 43.339503,72.701794 31.438885,86.322779 23.497569,96.338376 19.677814,104.66948 18.527118,114.71536 c 0,0 -2.168556,-3.98066 -0.01478,-14.17227 3.764359,-17.803609 -4.428375,-25.450182 -4.428375,-25.450182 -41.49508,58.844472 17.526881,112.045702 63.024789,61.095232 0,0 -14.887006,33.05468 -13.647358,43.34849 -6.349646,2.08185 -9.170023,7.92269 0.332682,14.9707 10.382756,7.69907 35.885136,7.03371 56.001494,-1.61165 37.55849,-16.14193 60.9693,-46.22207 72.57279,-65.32401 2.71019,-4.46651 5.57763,-6.63885 7.56296,-7.34857 3.01112,-1.08635 23.72764,0.16234 33.42717,-5.3451 1.34942,0.65673 3.06678,1.00763 5.33032,0.8354 C 245.71787,115.17969 250,106.76795 250,106.76795 c 0,0 -8.87062,-16.922111 -30.12254,-29.55327 C 199.86141,65.319739 194.02789,69.457093 176.05582,55.128281 147.99814,32.763519 114.02178,7.3201044 80.661062,0.13961031 Z M 102.26692,70.594304 c 13.26505,-0.0029 23.37736,4.660953 25.1286,13.170519 2.97326,14.478329 -27.955978,50.936567 -25.92334,51.521377 0.19683,0.0549 0.6391,-0.16704 1.28637,-0.60991 10.15186,-13.28789 29.37687,-33.69148 36.58765,-32.90227 12.92072,1.41187 17.38079,18.53779 17.38079,18.53779 l -43.07864,38.86837 c 8.89707,2.41684 18.6275,3.29074 28.363,2.54317 -19.24009,13.70237 -40.10745,17.52487 -53.007358,11.85088 20.405928,-14.79629 57.956938,-51.80601 57.956938,-51.80601 0,0 -6.24718,-15.74184 -17.51757,-6.10287 -10.90133,9.32102 -20.97474,20.96607 -24.95486,24.68502 -2.46226,2.29571 -6.636458,6.63454 -9.104398,4.76844 -3.00355,-2.26922 5.935248,-22.37963 12.771298,-39.0458 9.32669,-22.730028 -1.40413,-29.828637 -13.965258,-29.198404 -11.25525,0.565885 -26.629956,7.384774 -37.644841,14.120509 -3.118992,1.909626 -5.249017,3.0833 -6.036334,2.354652 -0.688903,-0.641589 0.03892,-1.850245 2.084808,-3.578182 C 68.148932,76.592284 87.233202,70.597548 102.26692,70.594304 Z"
|
||||
style="stroke-width:1.89259;fill:#ffffff" />
|
||||
</svg>
|
Before Width: | Height: | Size: 3.6 KiB |
@ -8,15 +8,6 @@ and those providing after-market firmware to extend the usefulness of devices.
|
||||
|
||||
## Hardware shipping with coreboot
|
||||
|
||||
### NovaCustom laptops
|
||||
|
||||
[NovaCustom](https://configurelaptop.eu/) sells configurable laptops with
|
||||
[Dasharo](https://dasharo.com/) coreboot based firmware on board, maintained by
|
||||
[3mdeb](https://3mdeb.com/). NovaCustom offers full GNU/Linux and Microsoft
|
||||
Windows compatibility. NovaCustom ensures security updates via fwupd for 5 years
|
||||
and the firmware is equipped with important security features such as measured
|
||||
boot, verified boot, TPM integration and UEFI Secure Boot.
|
||||
|
||||
### ChromeOS Devices
|
||||
|
||||
All ChromeOS devices ([Chromebooks](https://chromebookdb.com/), Chromeboxes,
|
||||
@ -33,19 +24,12 @@ ships with coreboot and support upstream maintenance for the devices through a
|
||||
third party, [3mdeb](https://3mdeb.com). They provide current and tested
|
||||
firmware binaries on [GitHub](https://pcengines.github.io).
|
||||
|
||||
### Star Labs
|
||||
|
||||
[Star Labs](https://starlabs.systems/) offers a range of laptops designed and
|
||||
built specifically for Linux that are available with coreboot firmware. They
|
||||
use edk2 as the payload and include an NVRAM option to disable the Intel
|
||||
Management Engine.
|
||||
|
||||
### System76
|
||||
|
||||
[System76](https://system76.com/) manufactures Linux laptops, desktops, and
|
||||
servers. Some models are sold with [System76 Open
|
||||
Firmware](https://github.com/system76/firmware-open), an open source
|
||||
distribution of coreboot, edk2, and System76 firmware applications.
|
||||
distribution of coreboot, EDK2, and System76 firmware applications.
|
||||
|
||||
### Purism
|
||||
|
||||
@ -63,22 +47,11 @@ provides ready-made firmware images for supported devices: those which can be
|
||||
built entirely from source code. Their copy of the coreboot repository is
|
||||
therefore stripped of all devices that require binary components to boot.
|
||||
|
||||
|
||||
### Dasharo
|
||||
|
||||
[Dasharo](https://dasharo.com/) is an open-source based firmware distribution
|
||||
focusing on clean and simple code, long-term maintenance, transparent
|
||||
validation, privacy-respecting implementation, liberty for the owners, and
|
||||
trustworthiness for all.
|
||||
|
||||
Contributions are welcome,
|
||||
[this document](https://docs.dasharo.com/ways-you-can-help-us/).
|
||||
|
||||
### MrChromebox
|
||||
|
||||
[MrChromebox](https://mrchromebox.tech/) provides upstream coreboot firmware
|
||||
images for the vast majority of x86-based Chromebooks and Chromeboxes, using
|
||||
edk2 as the payload to provide a modern UEFI bootloader. Why replace
|
||||
Tianocore as the payload to provide a modern UEFI bootloader. Why replace
|
||||
coreboot with coreboot? Mr Chromebox's images are built using upstream
|
||||
coreboot (vs Google's older, static tree/branch), include many features and
|
||||
fixes not found in the stock firmware, and offer much broader OS compatibility
|
||||
|
319
Documentation/doxygen/Doxyfile.coreboot_platform
Normal file
@ -0,0 +1,319 @@
|
||||
# Doxyfile 1.8.11
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Project related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
DOXYFILE_ENCODING = UTF-8
|
||||
PROJECT_NAME = "coreboot for $(DOXYGEN_PLATFORM)"
|
||||
PROJECT_NUMBER =
|
||||
PROJECT_BRIEF = "coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers."
|
||||
PROJECT_LOGO = Documentation/coreboot_logo.png
|
||||
OUTPUT_DIRECTORY = $(DOXYGEN_OUTPUT_DIR)
|
||||
CREATE_SUBDIRS = YES
|
||||
ALLOW_UNICODE_NAMES = NO
|
||||
OUTPUT_LANGUAGE = English
|
||||
BRIEF_MEMBER_DESC = YES
|
||||
REPEAT_BRIEF = YES
|
||||
ABBREVIATE_BRIEF =
|
||||
ALWAYS_DETAILED_SEC = YES
|
||||
INLINE_INHERITED_MEMB = NO
|
||||
FULL_PATH_NAMES = YES
|
||||
STRIP_FROM_PATH =
|
||||
STRIP_FROM_INC_PATH =
|
||||
SHORT_NAMES = NO
|
||||
JAVADOC_AUTOBRIEF = YES
|
||||
QT_AUTOBRIEF = NO
|
||||
MULTILINE_CPP_IS_BRIEF = NO
|
||||
INHERIT_DOCS = YES
|
||||
SEPARATE_MEMBER_PAGES = NO
|
||||
TAB_SIZE = 8
|
||||
ALIASES =
|
||||
TCL_SUBST =
|
||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||
OPTIMIZE_OUTPUT_JAVA = NO
|
||||
OPTIMIZE_FOR_FORTRAN = NO
|
||||
OPTIMIZE_OUTPUT_VHDL = NO
|
||||
EXTENSION_MAPPING =
|
||||
MARKDOWN_SUPPORT = YES
|
||||
AUTOLINK_SUPPORT = YES
|
||||
BUILTIN_STL_SUPPORT = NO
|
||||
CPP_CLI_SUPPORT = NO
|
||||
SIP_SUPPORT = NO
|
||||
IDL_PROPERTY_SUPPORT = YES
|
||||
DISTRIBUTE_GROUP_DOC = NO
|
||||
GROUP_NESTED_COMPOUNDS = NO
|
||||
SUBGROUPING = YES
|
||||
INLINE_GROUPED_CLASSES = NO
|
||||
INLINE_SIMPLE_STRUCTS = NO
|
||||
TYPEDEF_HIDES_STRUCT = NO
|
||||
LOOKUP_CACHE_SIZE = 0
|
||||
#---------------------------------------------------------------------------
|
||||
# Build related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
EXTRACT_ALL = YES
|
||||
EXTRACT_PRIVATE = NO
|
||||
EXTRACT_PACKAGE = NO
|
||||
EXTRACT_STATIC = YES
|
||||
EXTRACT_LOCAL_CLASSES = YES
|
||||
EXTRACT_LOCAL_METHODS = NO
|
||||
EXTRACT_ANON_NSPACES = NO
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
HIDE_UNDOC_CLASSES = NO
|
||||
HIDE_FRIEND_COMPOUNDS = NO
|
||||
HIDE_IN_BODY_DOCS = NO
|
||||
INTERNAL_DOCS = NO
|
||||
CASE_SENSE_NAMES = YES
|
||||
HIDE_SCOPE_NAMES = NO
|
||||
HIDE_COMPOUND_REFERENCE= NO
|
||||
SHOW_INCLUDE_FILES = YES
|
||||
SHOW_GROUPED_MEMB_INC = NO
|
||||
FORCE_LOCAL_INCLUDES = NO
|
||||
INLINE_INFO = YES
|
||||
SORT_MEMBER_DOCS = YES
|
||||
SORT_BRIEF_DOCS = NO
|
||||
SORT_MEMBERS_CTORS_1ST = NO
|
||||
SORT_GROUP_NAMES = NO
|
||||
SORT_BY_SCOPE_NAME = NO
|
||||
STRICT_PROTO_MATCHING = NO
|
||||
GENERATE_TODOLIST = YES
|
||||
GENERATE_TESTLIST = YES
|
||||
GENERATE_BUGLIST = YES
|
||||
GENERATE_DEPRECATEDLIST= YES
|
||||
ENABLED_SECTIONS =
|
||||
MAX_INITIALIZER_LINES = 30
|
||||
SHOW_USED_FILES = YES
|
||||
SHOW_FILES = YES
|
||||
SHOW_NAMESPACES = YES
|
||||
FILE_VERSION_FILTER =
|
||||
LAYOUT_FILE =
|
||||
CITE_BIB_FILES =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to warning and progress messages
|
||||
#---------------------------------------------------------------------------
|
||||
QUIET = YES
|
||||
WARNINGS = YES
|
||||
WARN_IF_UNDOCUMENTED = YES
|
||||
WARN_IF_DOC_ERROR = YES
|
||||
WARN_NO_PARAMDOC = YES
|
||||
WARN_AS_ERROR = NO
|
||||
WARN_FORMAT = "$file:$line: $text"
|
||||
WARN_LOGFILE =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the input files
|
||||
#---------------------------------------------------------------------------
|
||||
INPUT = $(DOXYFILES)
|
||||
INPUT_ENCODING = UTF-8
|
||||
FILE_PATTERNS =
|
||||
RECURSIVE = NO
|
||||
EXCLUDE =
|
||||
EXCLUDE_SYMLINKS = NO
|
||||
EXCLUDE_PATTERNS =
|
||||
EXCLUDE_SYMBOLS =
|
||||
EXAMPLE_PATH =
|
||||
EXAMPLE_PATTERNS =
|
||||
EXAMPLE_RECURSIVE = NO
|
||||
IMAGE_PATH =
|
||||
INPUT_FILTER =
|
||||
FILTER_PATTERNS =
|
||||
FILTER_SOURCE_FILES = NO
|
||||
FILTER_SOURCE_PATTERNS =
|
||||
USE_MDFILE_AS_MAINPAGE =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to source browsing
|
||||
#---------------------------------------------------------------------------
|
||||
SOURCE_BROWSER = YES
|
||||
INLINE_SOURCES = NO
|
||||
STRIP_CODE_COMMENTS = NO
|
||||
REFERENCED_BY_RELATION = YES
|
||||
REFERENCES_RELATION = YES
|
||||
REFERENCES_LINK_SOURCE = YES
|
||||
SOURCE_TOOLTIPS = YES
|
||||
USE_HTAGS = NO
|
||||
VERBATIM_HEADERS = YES
|
||||
CLANG_ASSISTED_PARSING = NO
|
||||
CLANG_OPTIONS =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the alphabetical class index
|
||||
#---------------------------------------------------------------------------
|
||||
ALPHABETICAL_INDEX = YES
|
||||
COLS_IN_ALPHA_INDEX = 5
|
||||
IGNORE_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the HTML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_HTML = YES
|
||||
HTML_OUTPUT = html
|
||||
HTML_FILE_EXTENSION = .html
|
||||
HTML_HEADER =
|
||||
HTML_FOOTER =
|
||||
HTML_STYLESHEET =
|
||||
HTML_EXTRA_STYLESHEET =
|
||||
HTML_EXTRA_FILES =
|
||||
HTML_COLORSTYLE_HUE = 220
|
||||
HTML_COLORSTYLE_SAT = 100
|
||||
HTML_COLORSTYLE_GAMMA = 80
|
||||
HTML_TIMESTAMP = NO
|
||||
HTML_DYNAMIC_SECTIONS = NO
|
||||
HTML_INDEX_NUM_ENTRIES = 100
|
||||
GENERATE_DOCSET = NO
|
||||
DOCSET_FEEDNAME = "Doxygen documentation"
|
||||
DOCSET_BUNDLE_ID = org.doxygen.Project
|
||||
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
|
||||
DOCSET_PUBLISHER_NAME = Publisher
|
||||
GENERATE_HTMLHELP = NO
|
||||
CHM_FILE =
|
||||
HHC_LOCATION =
|
||||
GENERATE_CHI = NO
|
||||
CHM_INDEX_ENCODING =
|
||||
BINARY_TOC = NO
|
||||
TOC_EXPAND = NO
|
||||
GENERATE_QHP = NO
|
||||
QCH_FILE =
|
||||
QHP_NAMESPACE = org.doxygen.Project
|
||||
QHP_VIRTUAL_FOLDER = doc
|
||||
QHP_CUST_FILTER_NAME =
|
||||
QHP_CUST_FILTER_ATTRS =
|
||||
QHP_SECT_FILTER_ATTRS =
|
||||
QHG_LOCATION =
|
||||
GENERATE_ECLIPSEHELP = NO
|
||||
ECLIPSE_DOC_ID = org.doxygen.Project
|
||||
DISABLE_INDEX = NO
|
||||
GENERATE_TREEVIEW = YES
|
||||
ENUM_VALUES_PER_LINE = 4
|
||||
TREEVIEW_WIDTH = 250
|
||||
EXT_LINKS_IN_WINDOW = NO
|
||||
FORMULA_FONTSIZE = 10
|
||||
FORMULA_TRANSPARENT = YES
|
||||
USE_MATHJAX = NO
|
||||
MATHJAX_FORMAT = HTML-CSS
|
||||
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
|
||||
MATHJAX_EXTENSIONS =
|
||||
MATHJAX_CODEFILE =
|
||||
SEARCHENGINE = YES
|
||||
SERVER_BASED_SEARCH = NO
|
||||
EXTERNAL_SEARCH = NO
|
||||
SEARCHENGINE_URL =
|
||||
SEARCHDATA_FILE = searchdata.xml
|
||||
EXTERNAL_SEARCH_ID =
|
||||
EXTRA_SEARCH_MAPPINGS =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the LaTeX output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_LATEX = NO
|
||||
LATEX_OUTPUT = latex
|
||||
LATEX_CMD_NAME = latex
|
||||
MAKEINDEX_CMD_NAME = makeindex
|
||||
COMPACT_LATEX = NO
|
||||
PAPER_TYPE = a4wide
|
||||
EXTRA_PACKAGES =
|
||||
LATEX_HEADER =
|
||||
LATEX_FOOTER =
|
||||
LATEX_EXTRA_STYLESHEET =
|
||||
LATEX_EXTRA_FILES =
|
||||
PDF_HYPERLINKS = NO
|
||||
USE_PDFLATEX = NO
|
||||
LATEX_BATCHMODE = NO
|
||||
LATEX_HIDE_INDICES = NO
|
||||
LATEX_SOURCE_CODE = NO
|
||||
LATEX_BIB_STYLE = plain
|
||||
LATEX_TIMESTAMP = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the RTF output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_RTF = NO
|
||||
RTF_OUTPUT = rtf
|
||||
COMPACT_RTF = NO
|
||||
RTF_HYPERLINKS = NO
|
||||
RTF_STYLESHEET_FILE =
|
||||
RTF_EXTENSIONS_FILE =
|
||||
RTF_SOURCE_CODE = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the man page output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_MAN = NO
|
||||
MAN_OUTPUT = man
|
||||
MAN_EXTENSION = .3
|
||||
MAN_SUBDIR =
|
||||
MAN_LINKS = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the XML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_XML = NO
|
||||
XML_OUTPUT = xml
|
||||
XML_PROGRAMLISTING = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the DOCBOOK output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_DOCBOOK = NO
|
||||
DOCBOOK_OUTPUT = docbook
|
||||
DOCBOOK_PROGRAMLISTING = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options for the AutoGen Definitions output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_AUTOGEN_DEF = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the Perl module output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_PERLMOD = NO
|
||||
PERLMOD_LATEX = NO
|
||||
PERLMOD_PRETTY = YES
|
||||
PERLMOD_MAKEVAR_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the preprocessor
|
||||
#---------------------------------------------------------------------------
|
||||
ENABLE_PREPROCESSING = YES
|
||||
MACRO_EXPANSION = YES
|
||||
EXPAND_ONLY_PREDEF = YES
|
||||
SEARCH_INCLUDES = YES
|
||||
INCLUDE_PATH =
|
||||
INCLUDE_FILE_PATTERNS =
|
||||
PREDEFINED = __attribute__(x)=
|
||||
EXPAND_AS_DEFINED =
|
||||
SKIP_FUNCTION_MACROS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to external references
|
||||
#---------------------------------------------------------------------------
|
||||
TAGFILES =
|
||||
GENERATE_TAGFILE =
|
||||
ALLEXTERNALS = NO
|
||||
EXTERNAL_GROUPS = YES
|
||||
EXTERNAL_PAGES = YES
|
||||
PERL_PATH = /usr/bin/perl
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the dot tool
|
||||
#---------------------------------------------------------------------------
|
||||
CLASS_DIAGRAMS = YES
|
||||
MSCGEN_PATH =
|
||||
DIA_PATH =
|
||||
HIDE_UNDOC_RELATIONS = NO
|
||||
HAVE_DOT = NO
|
||||
DOT_NUM_THREADS = 0
|
||||
DOT_FONTNAME = Helvetica
|
||||
DOT_FONTSIZE = 10
|
||||
DOT_FONTPATH =
|
||||
CLASS_GRAPH = YES
|
||||
COLLABORATION_GRAPH = YES
|
||||
GROUP_GRAPHS = YES
|
||||
UML_LOOK = YES
|
||||
UML_LIMIT_NUM_FIELDS = 10
|
||||
TEMPLATE_RELATIONS = NO
|
||||
INCLUDE_GRAPH = YES
|
||||
INCLUDED_BY_GRAPH = YES
|
||||
CALL_GRAPH = YES
|
||||
CALLER_GRAPH = YES
|
||||
GRAPHICAL_HIERARCHY = YES
|
||||
DIRECTORY_GRAPH = YES
|
||||
DOT_IMAGE_FORMAT = png
|
||||
INTERACTIVE_SVG = NO
|
||||
DOT_PATH =
|
||||
DOTFILE_DIRS =
|
||||
MSCFILE_DIRS =
|
||||
DIAFILE_DIRS =
|
||||
PLANTUML_JAR_PATH =
|
||||
PLANTUML_INCLUDE_PATH =
|
||||
DOT_GRAPH_MAX_NODES = 50
|
||||
MAX_DOT_GRAPH_DEPTH = 0
|
||||
DOT_TRANSPARENT = NO
|
||||
DOT_MULTI_TARGETS = YES
|
||||
GENERATE_LEGEND = YES
|
||||
DOT_CLEANUP = YES
|
@ -1,143 +0,0 @@
|
||||
# CBFS SMBIOS hooks
|
||||
|
||||
The document describes the coreboot options how to make CBFS files populate
|
||||
platform-unique SMBIOS data.
|
||||
|
||||
## SMBIOS Serial Number
|
||||
|
||||
The [DMTF SMBIOS specification] defines a field in the type 1 System
|
||||
Information and type 2 Baseboard Information called Serial Number. It
|
||||
is a null-terminated string field assumed to be unique per platform. Certain
|
||||
mainboard ports have SMBIOS hooks to generate the Serial Numbers from external
|
||||
data, e.g. Lenovo Thinkpads (see DRIVER_LENOVO_SERIALS). This driver aims to
|
||||
provide an option to populate the Serial Numbers from CBFS for boards that
|
||||
can't generate the it from any source.
|
||||
|
||||
### Usage
|
||||
|
||||
In the coreboot configuration menu (`make menuconfig`) go to `Generic Drivers`
|
||||
and select an option `Serial number in CBFS`. The Kconfig system will enable
|
||||
`DRIVERS_GENERIC_CBFS_SERIAL` and the relevant code parts will be compiled into
|
||||
coreboot image.
|
||||
|
||||
After the coreboot build for your board completes, use the cbfstool to include
|
||||
the file containing the serial number:
|
||||
|
||||
```shell
|
||||
./build/cbfstool build/coreboot.rom add -n serial_number -t raw -f /path/to/serial_file.txt
|
||||
```
|
||||
|
||||
Where `serial_file.txt` is the unterminated string representation of the SMBIOS
|
||||
type 1 or type 2 Serial Number, e.g. `5Q4Q7Y1`. If you use vboot with 1 or 2 RW
|
||||
partitions you will have to specify the RW regions where the file is going to
|
||||
be added too. By default the RW CBFS partitions are truncated, so the files
|
||||
would probably not fit, one needs to expand them first.
|
||||
|
||||
```shell
|
||||
./build/cbfstool build/coreboot.rom expand -r FW_MAIN_A
|
||||
./build/cbfstool build/coreboot.rom add -n serial_number -t raw \
|
||||
-f /path/to/serial_file.txt -r FW_MAIN_A
|
||||
./build/cbfstool build/coreboot.rom truncate -r FW_MAIN_A
|
||||
|
||||
./build/cbfstool build/coreboot.rom expand -r FW_MAIN_B
|
||||
./build/cbfstool build/coreboot.rom add -n serial_number -t raw \
|
||||
-f /path/to/serial_file.txt -r FW_MAIN_B
|
||||
./build/cbfstool build/coreboot.rom truncate -r FW_MAIN_B
|
||||
```
|
||||
|
||||
By default cbfstool adds files to COREBOOT region only, so when vboot is
|
||||
enabled and the platform is booting from RW partition, the file would not be
|
||||
picked up by the driver.
|
||||
|
||||
One may retrieve the Serial Number from running system (if it exists) using one
|
||||
of the following commands:
|
||||
|
||||
```shell
|
||||
# Type 1
|
||||
echo -n `sudo dmidecode -s system-serial-number` > serial_file.txt
|
||||
# OR Type 2
|
||||
echo -n `sudo dmidecode -s baseboard-serial-number` > serial_file.txt
|
||||
```
|
||||
|
||||
Ensure the file does not end with whitespaces like LF and/or CR. The above
|
||||
commands will not add any whitespaces. The driver automatically terminates the
|
||||
Serial Number with the NULL character. If the CBFS file is not present, the
|
||||
driver will fall back to the string defined in `MAINBOARD_SERIAL_NUMBER` build
|
||||
option.
|
||||
|
||||
Please note that this driver provides `smbios_mainboard_serial_number` hook
|
||||
overriding the default implementation which returns `MAINBOARD_SERIAL_NUMBER`
|
||||
build option. If you wish to populate only type 2 Serial Number field your
|
||||
board code needs to implement `smbios_system_serial_number`, otherwise the weak
|
||||
implementation of `smbios_system_serial_number` will call
|
||||
`smbios_mainboard_serial_number` from the `DRIVERS_GENERIC_CBFS_SERIAL`
|
||||
implementation overriding it. So selecting the `DRIVERS_GENERIC_CBFS_SERIAL`
|
||||
has a side-effect of populating both SMBIOS type 1 and type 2 Serial Numbers
|
||||
if the board does not implement its own `smbios_system_serial_number`.
|
||||
|
||||
There is also SMBIOS type 3 Chassis Information Serial Number, but it is not
|
||||
populated by `DRIVERS_GENERIC_CBFS_SERIAL` nor by the default weak
|
||||
implementation (returns empty string). If you wish to populate type 3 Serial
|
||||
Number, your board code should override the default
|
||||
`smbios_chassis_serial_number` weak implementation.
|
||||
|
||||
## SMBIOS System UUID
|
||||
|
||||
The [DMTF SMBIOS specification] defines a field in the type 1 System
|
||||
Information Structure called System UUID. It is a 16 bytes value compliant with
|
||||
[RFC4122] and assumed to be unique per platform. Certain mainboard ports have
|
||||
SMBIOS hooks to generate the UUID from external data, e.g. Lenovo Thinkpads
|
||||
(see DRIVER_LENOVO_SERIALS). This driver aims to provide an option to populate
|
||||
the UUID from CBFS for boards that can't generate the UUID from any source.
|
||||
|
||||
### Usage
|
||||
|
||||
In the coreboot configuration menu (`make menuconfig`) go to `Generic Drivers`
|
||||
and select an option `System UUID in CBFS`. The Kconfig system will enable
|
||||
`DRIVERS_GENERIC_CBFS_UUID` and the relevant code parts will be compiled into
|
||||
coreboot image.
|
||||
|
||||
After the coreboot build for your board completes, use the cbfstool to include
|
||||
the file containing the UUID:
|
||||
|
||||
```shell
|
||||
./build/cbfstool build/coreboot.rom add -n system_uuid -t raw -f /path/to/uuid_file.txt
|
||||
```
|
||||
|
||||
Where `uuid_file.txt` is the unterminated string representation of the SMBIOS
|
||||
type 1 UUID, e.g. `4c4c4544-0051-3410-8051-b5c04f375931`. If you use vboot with
|
||||
1 or 2 RW partitions you will have to specify the RW regions where the file is
|
||||
going to be added too. By default the RW CBFS partitions are truncated, so the
|
||||
files would probably not fit, one needs to expand them first.
|
||||
|
||||
```shell
|
||||
./build/cbfstool build/coreboot.rom expand -r FW_MAIN_A
|
||||
./build/cbfstool build/coreboot.rom add -n system_uuid -t raw \
|
||||
-f /path/to/uuid_file.txt -r FW_MAIN_A
|
||||
./build/cbfstool build/coreboot.rom truncate -r FW_MAIN_A
|
||||
|
||||
./build/cbfstool build/coreboot.rom expand -r FW_MAIN_B
|
||||
./build/cbfstool build/coreboot.rom add -n system_uuid -t raw \
|
||||
-f /path/to/uuid_file.txt -r FW_MAIN_B
|
||||
./build/cbfstool build/coreboot.rom truncate -r FW_MAIN_B
|
||||
```
|
||||
|
||||
By default cbfstool adds files to COREBOOT region only, so when vboot is
|
||||
enabled and the platform is booting from RW partition, the file would not be
|
||||
picked up by the driver.
|
||||
|
||||
One may retrieve the UUID from running system (if it exists) using the
|
||||
following command:
|
||||
|
||||
```shell
|
||||
echo -n `sudo dmidecode -s system-uuid` > uuid_file.txt
|
||||
```
|
||||
|
||||
The above command ensures the file does not end with whitespaces like LF and/or
|
||||
CR. The above command will not add any whitespaces. But the driver will handle
|
||||
situations where up to 2 additional bytes like CR and LF will be included in
|
||||
the file. Any more than that will make the driver fail to populate UUID in
|
||||
SMBIOS.
|
||||
|
||||
[DMTF SMBIOS specification]: https://www.dmtf.org/standards/smbios
|
||||
[RFC4122]: https://www.ietf.org/rfc/rfc4122.txt
|
@ -43,7 +43,7 @@ This policy monitors the temperature of participants and controls fans to spin
|
||||
at varying speeds. These speeds are defined by the platform, and will be enabled
|
||||
depending on the various temperatures reported by participants.
|
||||
|
||||
## Note about units
|
||||
# Note about units
|
||||
|
||||
ACPI uses unusual units for specifying various physical measurements. For
|
||||
example, temperatures are specified in 10ths of a degree K, and time is measured
|
||||
@ -69,7 +69,7 @@ data was a 0). The following Methods were removed:
|
||||
2) There is no more implicit inclusion of _ACn methods for TCPU (these must be
|
||||
specified in the devicetree entries or by calling the DPTF acpigen API).
|
||||
|
||||
## ACPI Tables
|
||||
# ACPI Tables
|
||||
|
||||
DPTF relies on an assortment of ACPI tables to provide parameters to the DPTF
|
||||
application. We will discuss the more important ones here.
|
||||
@ -108,7 +108,7 @@ various informational properties.
|
||||
This table describes performance states supported by a participant (typically
|
||||
the battery charger).
|
||||
|
||||
## ACPI Methods
|
||||
# ACPI Methods
|
||||
|
||||
The Active and Passive policies also provide for short Methods to define
|
||||
different kinds of temperature thresholds.
|
||||
@ -141,7 +141,7 @@ a "graceful shutdown".
|
||||
|
||||
These are optional, and are enabled by selecting the Critical Policy.
|
||||
|
||||
## How to use the devicetree entries
|
||||
# How to use the devicetree entries
|
||||
|
||||
The `drivers/intel/dptf` chip driver is organized into several sections:
|
||||
- Policies
|
||||
@ -151,7 +151,7 @@ The `drivers/intel/dptf` chip driver is organized into several sections:
|
||||
The Policies section (`policies.active`, `policies.passive`, and
|
||||
`policies.critical`) is where the components of each policy are defined.
|
||||
|
||||
### Active Policy
|
||||
## Active Policy
|
||||
|
||||
Each Active Policy is defined in terms of 4 parts:
|
||||
1) A Source (this is implicitly defined as TFN1, the system fan)
|
||||
@ -182,7 +182,7 @@ the CPU's active cooling capability). When the CPU temperature first crosses
|
||||
rest of the table (note that it *must* be defined from highest temperature/
|
||||
percentage on down to the lowest).
|
||||
|
||||
### Passive Policy
|
||||
## Passive Policy
|
||||
|
||||
Each Passive Policy is defined in terms of 5 parts:
|
||||
1) Source - The device that can be throttled
|
||||
@ -201,7 +201,7 @@ This example sets up a policy to begin throttling the charger performance when
|
||||
temperature sensor 1 reaches 65C. The sampling period here is 60000 ms (60 s).
|
||||
The Priority is defaulted to 100 in this case.
|
||||
|
||||
### Critical Policy
|
||||
## Critical Policy
|
||||
|
||||
Each Critical Policy is defined in terms of 3 parts:
|
||||
1) Source - A device that can trigger a critical event
|
||||
@ -218,7 +218,7 @@ register "policies.critical[1]" = "DPTF_CRITICAL(CPU, 75, SHUTDOWN)"
|
||||
This example sets up a policy wherein ACPI will cause the system to shutdown
|
||||
(in a "graceful" manner) when the CPU temperature reaches 75C.
|
||||
|
||||
### Power Limits
|
||||
## Power Limits
|
||||
|
||||
Control over the SoC's Running Average Power Limits (RAPL) is one of the tools
|
||||
that DPTF uses to enact Passive policies. DPTF can control both PL1 and PL2, if
|
||||
@ -244,7 +244,7 @@ This example allow DPTF to control the SoC's PL1 level to between 3W and 15W,
|
||||
over a time interval ranging from 28 to 32 seconds, and it can move PL1 in
|
||||
increments of 200 mW.
|
||||
|
||||
### Charger Performance
|
||||
## Charger Performance
|
||||
|
||||
The battery charger can be a large contributor of unwanted heat in a system that
|
||||
has one. Controlling the rate of charging is another tool that DPTF uses to enact
|
||||
@ -266,7 +266,7 @@ register "controls.charger_perf[3]" = "{ 8, 500 }"
|
||||
In this example, when DPTF decides to throttle the charger, it has four different
|
||||
performance states to choose from.
|
||||
|
||||
### Fan Performance
|
||||
## Fan Performance
|
||||
|
||||
When using DPTF, the system fan (`TFN1`) is the device responsible for actively
|
||||
cooling the other temperature sensors on the mainboard. A fan speed table can be
|
||||
@ -298,21 +298,21 @@ increment of 10 percentage points. This is common when specifying fine-grained
|
||||
control of the fan, wherein DPTF will interpolate between the percentages in the
|
||||
table for a given temperature threshold.
|
||||
|
||||
### Options
|
||||
## Options
|
||||
|
||||
#### Fan
|
||||
### Fan
|
||||
1) Fine-grained control - a boolean (see Fan Performance section above)
|
||||
2) Step-size - Recommended minimum step size (in percentage points) to adjust
|
||||
the fan speed when using fine-grained control (ranges from 1 - 9).
|
||||
3) Low-speed notify - If true, the platform will issue a `Notify (0x80)` to the
|
||||
fan device if a low fan speed is detected.
|
||||
|
||||
#### Temperature sensors
|
||||
### Temperature sensors
|
||||
1) Hysteresis - The amount of hysteresis implemented in either circuitry or
|
||||
the firmware that reads the temperature sensor (in degrees C).
|
||||
2) Name - This name is applied to the _STR property of the sensor
|
||||
|
||||
### OEM Variables
|
||||
## OEM Variables
|
||||
Platform vendors can define an array of OEM-specific values as OEM variables
|
||||
to be used under DPTF policy. There are total six OEM variables available.
|
||||
These can be used in AP policy for more specific actions. These OEM variables
|
||||
|
@ -1,309 +0,0 @@
|
||||
# Driver Devicetree Entries
|
||||
|
||||
Let's take a look at an example entry from
|
||||
``src/mainboard/google/hatch/variants/hatch/overridetree.cb``:
|
||||
|
||||
```
|
||||
device pci 15.0 on
|
||||
chip drivers/i2c/generic
|
||||
register "hid" = ""ELAN0000""
|
||||
register "desc" = ""ELAN Touchpad""
|
||||
register "irq" = "ACPI_IRQ_LEVEL_LOW(GPP_A21_IRQ)"
|
||||
register "detect" = "1"
|
||||
register "wake" = "GPE0_DW0_21"
|
||||
device i2c 15 on end
|
||||
end
|
||||
end # I2C #0
|
||||
```
|
||||
|
||||
When this entry is processed during ramstage, it will create a device in the
|
||||
ACPI SSDT table (all devices in devicetrees end up in the SSDT table). The ACPI
|
||||
generation routines in coreboot actually generate the raw bytecode that
|
||||
represents the device's structure, but looking at ASL code is easier to
|
||||
understand; see below for what the disassembled bytecode looks like:
|
||||
|
||||
```
|
||||
Scope (\_SB.PCI0.I2C0)
|
||||
{
|
||||
Device (D015)
|
||||
{
|
||||
Name (_HID, "ELAN0000") // _HID: Hardware ID
|
||||
Name (_UID, Zero) // _UID: Unique ID
|
||||
Name (_DDN, "ELAN Touchpad") // _DDN: DOS Device Name
|
||||
Method (_STA, 0, NotSerialized) // _STA: Status
|
||||
{
|
||||
Return (0x0F)
|
||||
}
|
||||
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
|
||||
{
|
||||
I2cSerialBusV2 (0x0015, ControllerInitiated, 400000,
|
||||
AddressingMode7Bit, "\\_SB.PCI0.I2C0",
|
||||
0x00, ResourceConsumer, , Exclusive, )
|
||||
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
|
||||
{
|
||||
0x0000002D,
|
||||
}
|
||||
})
|
||||
Name (_S0W, ACPI_DEVICE_SLEEP_D3_HOT) // _S0W: S0 Device Wake State
|
||||
Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake
|
||||
{
|
||||
0x15, // GPE #21
|
||||
0x03 // Sleep state S3
|
||||
})
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
You can see it generates \_HID, \_UID, \_DDN, \_STA, \_CRS, \_S0W, and \_PRW
|
||||
names/methods in the Device's scope.
|
||||
|
||||
## Utilizing a device driver
|
||||
|
||||
The device driver must be enabled for your build. There will be a CONFIG option
|
||||
in the Kconfig file in the directory that the driver is in (e.g.,
|
||||
``src/drivers/i2c/generic`` contains a Kconfig file; the option here is named
|
||||
CONFIG_DRIVERS_I2C_GENERIC). The config option will need to be added to your
|
||||
mainboard's Kconfig file (e.g., ``src/mainboard/google/hatch/Kconfig``) in order
|
||||
to be compiled into your build.
|
||||
|
||||
## Diving into the above example:
|
||||
|
||||
Let's take a look at how the devicetree language corresponds to the generated
|
||||
ASL.
|
||||
|
||||
First, note this:
|
||||
|
||||
```
|
||||
chip drivers/i2c/generic
|
||||
```
|
||||
|
||||
This means that the device driver we're using has a corresponding structure,
|
||||
located at ``src/drivers/i2c/generic/chip.h``, named **struct
|
||||
drivers_i2c_generic_config** and it contains many properties you can specify to
|
||||
be included in the ACPI table.
|
||||
|
||||
### hid
|
||||
|
||||
```
|
||||
register "hid" = ""ELAN0000""
|
||||
```
|
||||
|
||||
This corresponds to **const char \*hid** in the struct. In the ACPI ASL, it
|
||||
translates to:
|
||||
|
||||
```
|
||||
Name (_HID, "ELAN0000") // _HID: Hardware ID
|
||||
```
|
||||
|
||||
under the device. **This property is used to match the device to its driver
|
||||
during enumeration in the OS.**
|
||||
|
||||
### desc
|
||||
|
||||
```
|
||||
register "desc" = ""ELAN Touchpad""
|
||||
```
|
||||
|
||||
corresponds to **const char \*desc** and in ASL:
|
||||
|
||||
```
|
||||
Name (_DDN, "ELAN Touchpad") // _DDN: DOS Device Name
|
||||
```
|
||||
|
||||
### irq
|
||||
|
||||
It also adds the interrupt,
|
||||
|
||||
```
|
||||
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
|
||||
{
|
||||
0x0000002D,
|
||||
}
|
||||
```
|
||||
|
||||
which comes from:
|
||||
|
||||
```
|
||||
register "irq" = "ACPI_IRQ_LEVEL_LOW(GPP_A21_IRQ)"
|
||||
```
|
||||
|
||||
The IRQ settings control the "Trigger" and "Polarity" settings seen above (level
|
||||
means it is a level-triggered interrupt as opposed to
|
||||
edge-triggered; active low means the interrupt is triggered when the signal is
|
||||
low).
|
||||
|
||||
Also note that the IRQ names are SoC-specific, and you will need to
|
||||
find the names in your SoC's header file. The ACPI_* macros are defined in
|
||||
``src/arch/x86/include/acpi/acpi_device.h``.
|
||||
|
||||
Using a GPIO as an IRQ requires that it is configured in coreboot correctly.
|
||||
This is often done in a mainboard-specific file named ``gpio.c``.
|
||||
|
||||
AMD platforms don't have the ability to route GPIOs to the IO-APIC. Instead the
|
||||
GPIO controller needs to be used directly. You can do this by setting the
|
||||
`irq_gpio` register and using the `ACPI_GPIO_IRQ_X_X` macros.
|
||||
|
||||
i.e.,
|
||||
```
|
||||
register "irq_gpio" = "ACPI_GPIO_IRQ_EDGE_LOW(GPIO_40)"
|
||||
```
|
||||
|
||||
### detect
|
||||
|
||||
The next register is:
|
||||
|
||||
```
|
||||
register "detect" = "1"
|
||||
```
|
||||
|
||||
This flag tells the I2C driver that it should attempt to detect the presence of
|
||||
the device (using an I2C zero-byte write), and only generate a SSDT entry if the
|
||||
device is actually present. This alleviates the OS from having to determine if
|
||||
a device is present or not (ChromeOS/Linux) and prevents resource conflict/
|
||||
driver issues (Windows).
|
||||
|
||||
Currently, the detect feature works and is hooked up for all I2C touchpads,
|
||||
and should be used any time a board has multiple touchpad options.
|
||||
I2C audio devices should also work without issue.
|
||||
|
||||
Touchscreens can use this feature as well, but special care is needed to
|
||||
implement the proper power sequencing for the device to be detected. Generally,
|
||||
this means driving the enable GPIO high and holding the reset GPIO low in early
|
||||
GPIO init (bootblock/romstage), then releasing reset in ramstage. The first
|
||||
mainboards in the tree to implement this are google/skyrim and google/guybrush.
|
||||
This feature has also been used in downstream forks without issue for some time
|
||||
now on several other boards.
|
||||
|
||||
### wake
|
||||
|
||||
The last register is:
|
||||
|
||||
```
|
||||
register "wake" = "GPE0_DW0_21"
|
||||
```
|
||||
|
||||
which indicates that the method of waking the system using the touchpad will be
|
||||
through a GPE, #21 associated with DW0, which is set up in devicetree.cb from
|
||||
this example. The "21" indicates GPP_X21, where GPP_X is mapped onto DW0
|
||||
elsewhere in the devicetree.
|
||||
|
||||
### device
|
||||
|
||||
The last bit of the definition of that device includes:
|
||||
|
||||
```
|
||||
device i2c 15 on end
|
||||
```
|
||||
|
||||
which means it's an I2C device, with 7-bit address 0x15, and the device is "on",
|
||||
meaning it will be exposed in the ACPI table. The PCI device that the
|
||||
controller is located in determines which I2C bus the device is expected to be
|
||||
found on. In this example, this is I2C bus 0. This also determines the ACPI
|
||||
"Scope" that the device names and methods will live under, in this case
|
||||
"\_SB.PCI0.I2C0".
|
||||
|
||||
## Wake sources
|
||||
|
||||
The ACPI spec defines two methods to describe how a device can wake the system.
|
||||
Only one of these methods should be used, otherwise duplicate wake events will
|
||||
be generated.
|
||||
|
||||
### Using GPEs as a wake source
|
||||
|
||||
The `wake` property specified above is used to tell the ACPI subsystem that the
|
||||
device can use a GPE to wake the system. The OS can control whether to enable
|
||||
or disable the wake source by unmasking/masking off the GPE.
|
||||
|
||||
The `GPIO` -> `GPE` mapping must be configured in firmware. On AMD platforms this is
|
||||
generally done by a mainboard specific `gpio.c` file that defines the GPIO
|
||||
using `PAD_SCI`. The `GPIO` -> `GPE` mapping is returned by the
|
||||
`soc_get_gpio_event_table` method that is defined in the SoC specific `gpio.c`
|
||||
file. On Intel platforms, you fill in the `pmc_gpe0_dw0`, `pmc_gpe0_dw1`, and
|
||||
`pmc_gpe0_dw2` fields in the devicetree to map 3 GPIO communities to `tier-1`
|
||||
GPEs (the rest are available as `tier-2` GPEs).
|
||||
|
||||
Windows has a large caveat when using this method. If you use the `gpio_irq`
|
||||
property to define a `GpioInt` in the `_CRS`, and then use the `wake` property
|
||||
to define a `GPE`, Windows will
|
||||
[BSOD](https://github.com/MicrosoftDocs/windows-driver-docs/blob/staging/windows-driver-docs-pr/debugger/bug-check-0xa5--acpi-bios-error.md)
|
||||
complaining about an invalid ACPI configuration.
|
||||
> 0x1000D - A device used both GPE and GPIO interrupts, which is not supported.
|
||||
|
||||
In order to avoid this error, you should use the `irq` property instead. AMD
|
||||
platforms don't support routing GPIOs to the IO-APIC, so this workaround isn't
|
||||
feasible. The other option is to use a wake capable GPIO as described below.
|
||||
|
||||
### Using GPIO interrupts as a wake source
|
||||
|
||||
The `ACPI_IRQ_WAKE_{EDGE,LEVEL}_{LOW,HIGH}` macros can be used when setting the
|
||||
`irq` or `gpio_irq` properties. This ends up setting `ExclusiveAndWake` or
|
||||
`SharedAndWake` on the `Interrupt` or `GpioInt` ACPI resource.
|
||||
|
||||
This method has a few caveats:
|
||||
* On Intel and AMD platforms the IO-APIC can't wake the system. This means using
|
||||
the `ACPI_IRQ_WAKE_*` macros with the `irq` property won't actually wake the
|
||||
system. Instead you need to use the `gpio_irq` property, or a `GPE` as
|
||||
described above.
|
||||
* The OS needs to know how to enable the `wake` bit on the GPIO. For linux this
|
||||
means the platform specific GPIO controller driver must implement the
|
||||
`irq_set_wake` callback. For AMD systems this wasn't
|
||||
[implemented](https://github.com/torvalds/linux/commit/d62bd5ce12d79bcd6a6c3e4381daa7375dc21158)
|
||||
until linux v5.15. If the controller doesn't define this callback, it's
|
||||
possible for the firmware to manually set the `wake` bit on the GPIO. This is
|
||||
often done in a mainboard-specific file named `gpio.c`. This is not
|
||||
recommended because then it's not possible for the OS to disable the wake
|
||||
source.
|
||||
* As of
|
||||
[linux v6.0-rc5](https://github.com/torvalds/linux/releases/tag/v6.0-rc5),
|
||||
the ACPI subsystem doesn't take the interrupt `wake` bit into account when
|
||||
deciding on which power state to put the device in before suspending the
|
||||
system. This means that if you define a power resource for a device via
|
||||
`has_power_resource`, `enable_gpio`, etc, then the linux kernel will place the
|
||||
device into D3Cold. i.e., power off the device.
|
||||
|
||||
## Other auto-generated names
|
||||
|
||||
(see [ACPI specification
|
||||
6.3](https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf)
|
||||
for more details on ACPI methods)
|
||||
|
||||
### _S0W (S0 Device Wake State)
|
||||
\_S0W indicates the deepest S0 sleep state this device can wake itself from,
|
||||
which in this case is `ACPI_DEVICE_SLEEP_D3_HOT`, representing _D3hot_.
|
||||
D3Hot means the `PR3` power resources are still on and the device is still
|
||||
responsive on the bus. For i2c devices this is generally the same state as `D0`.
|
||||
|
||||
### \_PRW (Power Resources for Wake)
|
||||
\_PRW indicates the power resources and events required for wake. There are no
|
||||
dependent power resources, but the GPE (GPE0_DW0_21) is mentioned here (0x15),
|
||||
as well as the deepest sleep state supporting waking the system (3), which is
|
||||
S3.
|
||||
|
||||
### \_STA (Status)
|
||||
The \_STA method is generated automatically, and its values, 0xF, indicates the
|
||||
following:
|
||||
|
||||
Bit [0] – Set if the device is present.
|
||||
Bit [1] – Set if the device is enabled and decoding its resources.
|
||||
Bit [2] – Set if the device should be shown in the UI.
|
||||
Bit [3] – Set if the device is functioning properly (cleared if device failed its diagnostics).
|
||||
|
||||
### \_CRS (Current resource settings)
|
||||
The \_CRS method is generated automatically, as the driver knows it is an I2C
|
||||
controller, and so specifies how to configure the controller for proper
|
||||
operation with the touchpad.
|
||||
|
||||
```
|
||||
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
|
||||
{
|
||||
I2cSerialBusV2 (0x0015, ControllerInitiated, 400000,
|
||||
AddressingMode7Bit, "\\_SB.PCI0.I2C0",
|
||||
0x00, ResourceConsumer, , Exclusive, )
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- **All device driver entries in devicetrees end up in the SSDT table, and are
|
||||
generated in coreboot's ramstage**
|
||||
(The lone exception to this rule is i2c touchpads with the 'detect' flag set;
|
||||
in this case, devices not present will not be added to the SSDT)
|
@ -4,14 +4,9 @@ The drivers can be found in `src/drivers`. They are intended for onboard
|
||||
and plugin devices, significantly reducing integration complexity and
|
||||
they allow to easily reuse existing code across platforms.
|
||||
|
||||
For details on how to connect device drivers to a mainboard, see [Driver Devicetree Entries](dt_entries.md).
|
||||
|
||||
Some of the drivers currently available include:
|
||||
|
||||
* [Intel DPTF](dptf.md)
|
||||
* [IPMI KCS](ipmi_kcs.md)
|
||||
* [SMMSTORE](smmstore.md)
|
||||
* [SMMSTOREv2](smmstorev2.md)
|
||||
* [SoundWire](soundwire.md)
|
||||
* [SMMSTOREv2](smmstorev2.md)
|
||||
* [USB4 Retimer](retimer.md)
|
||||
* [CBFS SMBIOS hooks](cbfs_smbios.md)
|
||||
|
@ -42,15 +42,6 @@ The following registers can be set:
|
||||
* `gpe_interrupt`
|
||||
* Integer
|
||||
* The bit in GPE (SCI) used to notify about a change on the KCS.
|
||||
* `wait_for_bmc`
|
||||
* Boolean
|
||||
* Wait for BMC to boot. This can be used if the BMC takes a long time to boot
|
||||
after PoR:
|
||||
- AST2400 on Supermicro X11SSH: 34 s
|
||||
* `bmc_boot_timeout`
|
||||
* Integer
|
||||
* The timeout in seconds to wait for the IPMI service to be loaded.
|
||||
Will be used if wait_for_bmc is true.
|
||||
|
||||
|
||||
[IPMI]: https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/ipmi-second-gen-interface-spec-v2-rev1-1.pdf
|
||||
|
@ -1,6 +1,6 @@
|
||||
# USB4 Retimers
|
||||
|
||||
## Introduction
|
||||
# Introduction
|
||||
As USB speeds continue to increase (up to 5G, 10G, and even 20G or higher in
|
||||
newer revisions of the spec), it becomes more difficult to maintain signal
|
||||
integrity for longer traces. Devices such as retimers and redrivers can be used
|
||||
@ -17,7 +17,7 @@ by doing CDR and retransmitting the data (i.e., it is protocol-aware). Since
|
||||
this is a digital component, it may have firmware.
|
||||
|
||||
|
||||
## Driver Usage
|
||||
# Driver Usage
|
||||
|
||||
Some operating systems may have the ability to update firmware on USB4 retimers,
|
||||
and ultimately will need some way to power the device on and off so that its new
|
||||
|
@ -21,7 +21,7 @@ operations is desired, as it reduces complexity and potential for bugs.
|
||||
|
||||
This can be used by a FTW (FaultTolerantWrite) implementation that uses
|
||||
at least two regions in an A/B update scheme. The FTW implementation in
|
||||
edk2 uses three different regions in the store:
|
||||
EDK2 uses three different regions in the store:
|
||||
|
||||
- The variable store
|
||||
- The FTW spare block
|
||||
@ -35,7 +35,7 @@ With 64 KiB as block size, the minimum size of the FTW-enabled store is:
|
||||
- The FTW spare block: 2 blocks = 2 * 64 KiB
|
||||
- The FTW working block: 1 block = 64 KiB
|
||||
|
||||
Therefore, the minimum size for edk2 FTW is 4 blocks, or 256 KiB.
|
||||
Therefore, the minimum size for EDK2 FTW is 4 blocks, or 256 KiB.
|
||||
|
||||
## API
|
||||
|
||||
|
@ -1,136 +0,0 @@
|
||||
# External Resources
|
||||
|
||||
This is a list of resources that could be useful to coreboot developers.
|
||||
These are not endorsed or officially recommended by the coreboot project,
|
||||
but simply listed here in the hopes that someone will find something
|
||||
useful.
|
||||
|
||||
Please add any helpful or informational links and sections as you see fit.
|
||||
|
||||
## Articles
|
||||
|
||||
* External Interrupts in the x86 system.
|
||||
* [Part 1: Interrupt controller evolution](https://habr.com/en/post/446312/)
|
||||
* [Part 2: Linux kernel boot options](https://habr.com/en/post/501660/)
|
||||
* [Part 3: Interrupt routing setup in a chipset](https://habr.com/en/post/501912/)
|
||||
* System address map initialization in x86/x64 architecture.
|
||||
* [Part 1: PCI-based systems](https://resources.infosecinstitute.com/topic/system-address-map-initialization-in-x86x64-architecture-part-1-pci-based-systems/)
|
||||
* [Part 2: PCI express-based systems](https://resources.infosecinstitute.com/topic/system-address-map-initialization-x86x64-architecture-part-2-pci-express-based-systems/)
|
||||
* [PCIe elastic buffer](https://www.mindshare.com/files/resources/mindshare_pcie_elastic_buffer.pdf)
|
||||
* [Boot Guard and PSB have user-hostile defaults](https://mjg59.dreamwidth.org/58424.html)
|
||||
|
||||
|
||||
## General Information
|
||||
|
||||
* [OS Dev](https://wiki.osdev.org/Categorized_Main_Page)
|
||||
* [Interface BUS](http://www.interfacebus.com/)
|
||||
|
||||
## OpenSecurityTraining2
|
||||
|
||||
OpenSecurityTraining2 is dedicated to sharing training material for any topic
|
||||
related to computer security, including coreboot.
|
||||
|
||||
There are various ways to learn firmware, some are more efficient than others,
|
||||
depending on the people. Before going straight to practice and experimenting
|
||||
with hardware, it can be beneficial to learn the basics of computing. OST2
|
||||
focuses on conveying computer architecture and security information in the form
|
||||
of structured instructor-led classes, available to everyone for free.
|
||||
|
||||
All material is licensed [CC BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/),
|
||||
allowing anyone to use the material however they see fit, so long as they share
|
||||
modified works back to the community.
|
||||
|
||||
Below is a list of currently available courses that can help understand the
|
||||
inner workings of coreboot and other firmware-related topics:
|
||||
|
||||
* [coreboot design principles and boot process](https://ost2.fyi/Arch4031)
|
||||
* [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
|
||||
as well (such as
|
||||
[how to avoid writing exploitable code in C/C++](https://ost2.fyi/Vulns1001).)
|
||||
|
||||
## Firmware Specifications & Information
|
||||
|
||||
* [System Management BIOS - SMBIOS](https://www.dmtf.org/standards/smbios)
|
||||
* [Desktop and Mobile Architecture for System Hardware - DASH](https://www.dmtf.org/standards/dash)
|
||||
* [PNP BIOS](https://www.intel.com/content/dam/support/us/en/documents/motherboards/desktop/sb/pnpbiosspecificationv10a.pdf)
|
||||
|
||||
|
||||
### ACPI
|
||||
|
||||
* [ACPI Specs](https://uefi.org/acpi/specs)
|
||||
* [ACPI in Linux](https://www.kernel.org/doc/ols/2005/ols2005v1-pages-59-76.pdf)
|
||||
* [ACPI 5 Linux](https://blog.linuxplumbersconf.org/2012/wp-content/uploads/2012/09/LPC2012-ACPI5.pdf)
|
||||
* [ACPI 6 Linux](https://events.static.linuxfound.org/sites/events/files/slides/ACPI_6_and_Linux_0.pdf)
|
||||
|
||||
|
||||
### Security
|
||||
|
||||
* [Intel Boot Guard](https://edk2-docs.gitbook.io/understanding-the-uefi-secure-boot-chain/secure_boot_chain_in_uefi/intel_boot_guard)
|
||||
|
||||
|
||||
## Hardware information
|
||||
|
||||
* [WikiChip](https://en.wikichip.org/wiki/WikiChip)
|
||||
* [Sandpile](https://www.sandpile.org/)
|
||||
* [CPU-World](https://www.cpu-world.com/index.html)
|
||||
* [CPU-Upgrade](https://www.cpu-upgrade.com/index.html)
|
||||
|
||||
|
||||
### Hardware Specifications & Standards
|
||||
|
||||
* [Bluetooth](https://www.bluetooth.com/specifications/specs/) - Bluetooth SIG
|
||||
* [eMMC](https://www.jedec.org/) - JEDEC - (LOGIN REQUIRED)
|
||||
* [eSPI](https://cdrdv2.intel.com/v1/dl/getContent/645987) - Intel
|
||||
* [I2c Spec](https://web.archive.org/web/20170704151406/https://www.nxp.com/docs/en/user-guide/UM10204.pdf),
|
||||
[Appnote](https://www.nxp.com/docs/en/application-note/AN10216.pdf) - NXP
|
||||
* [I2S](https://www.nxp.com/docs/en/user-manual/UM11732.pdf) - NXP
|
||||
* [I3C](https://www.mipi.org/specifications/i3c-sensor-specification) - MIPI Alliance (LOGIN REQUIRED)
|
||||
* [Memory](https://www.jedec.org/) - JEDEC - (LOGIN REQUIRED)
|
||||
* [NVMe](https://nvmexpress.org/developers/) - NVMe Specifications
|
||||
* [LPC](https://www.intel.com/content/dam/www/program/design/us/en/documents/low-pin-count-interface-specification.pdf) - Intel
|
||||
* [PCI / PCIe / M.2](https://pcisig.com/specifications) - PCI-SIG - (LOGIN REQUIRED)
|
||||
* [Power Delivery](https://www.usb.org/documents) - USB Implementers Forum
|
||||
* [SATA](https://sata-io.org/developers/purchase-specification) - SATA-IO (LOGIN REQUIRED)
|
||||
* [SMBus](http://www.smbus.org/specs/) - System Management Interface Forum
|
||||
* [Smart Battery](http://smartbattery.org/specs/) - Smart Battery System Implementers Forum
|
||||
* [USB](https://www.usb.org/documents) - USB Implementers Forum
|
||||
* [WI-FI](https://www.wi-fi.org/discover-wi-fi/specifications) - Wi-Fi Alliance
|
||||
|
||||
|
||||
### Chip Vendor Documentation
|
||||
|
||||
* AMD
|
||||
* [Developer Guides, Manuals & ISA Documents](https://developer.amd.com/resources/developer-guides-manuals/)
|
||||
* [AMD Tech Docs - Official Documentation Page](https://www.amd.com/en/support/tech-docs)
|
||||
* ARM
|
||||
* [Tools and Software - Specifications](https://developer.arm.com/tools-and-software/software-development-tools/specifications)
|
||||
* Intel
|
||||
* [Developer Zone](https://www.intel.com/content/www/us/en/developer/overview.html)
|
||||
* [Resource & Documentation Center](https://www.intel.com/content/www/us/en/resources-documentation/developer.html)
|
||||
* [Architecture Software Developer Manuals](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html)
|
||||
* [Intel specific ACPI](https://www.intel.com/content/www/us/en/standards/processor-vendor-specific-acpi-specification.html)
|
||||
|
||||
* Rockchip
|
||||
* [Open Source Wiki](https://opensource.rock-chips.com/wiki_Main_Page)
|
||||
|
||||
|
||||
## Software
|
||||
|
||||
* [Fiedka](https://github.com/fiedka/fiedka) - A graphical Firmware Editor
|
||||
* [IOTools](https://github.com/adurbin/iotools) - Command line tools to access hardware registers
|
||||
* [UEFITool](https://github.com/LongSoft/UEFITool) - Editor for UEFI PI compliant firmware images
|
||||
* [CHIPSEC](https://chipsec.github.io) - Framework for analyzing platform level security & configuration
|
||||
* [SPDEditor](https://github.com/integralfx/SPDEditor) - GUI to edit DDR3 SPD files
|
||||
* [DDR4XMPEditor](https://github.com/integralfx/DDR4XMPEditor) - Editor for DDR4 SPD and XMP
|
||||
* [overclockSPD](https://github.com/baboomerang/overclockSPD) - Fast and easy way to read and write data to RAM SPDs.
|
||||
* [VBiosFinder](https://github.com/coderobe/VBiosFinder) - This tool attempts to extract a VBIOS from a BIOS update.
|
||||
|
||||
|
||||
## Infrastructure software
|
||||
|
||||
* [Kconfig](https://www.kernel.org/doc/html/latest/kbuild/kconfig-language.html)
|
||||
* [GNU Make](https://www.gnu.org/software/make/manual/)
|
23
Documentation/flash_tutorial/ext_standalone.md
Normal file
@ -0,0 +1,23 @@
|
||||
# Flashing firmware standalone
|
||||
|
||||
If none of the other methods work, there are three possibilities:
|
||||
|
||||
## Desolder
|
||||
You must remove or desolder the flash IC before you can flash it.
|
||||
It's recommended to solder a socket in place of the flash IC.
|
||||
|
||||
When flashing the IC, always connect all input pins.
|
||||
If in doubt, pull /WP, /HOLD, /RESET and alike up towards Vcc.
|
||||
|
||||
## SPI flash emulator
|
||||
If you are a developer, you might want to use an [EM100Pro] instead, which sets
|
||||
the onboard flash on hold, and allows to run custom firmware.
|
||||
It provides a very fast development cycle without actually writing to flash.
|
||||
|
||||
## SPI flash overwrite
|
||||
It is possible to set the onboard flash on hold and use another flash chip.
|
||||
Connect all lines one-to-one, except /HOLD. Pull /HOLD of the soldered flash IC
|
||||
low, and /HOLD of your replacement flash IC high.
|
||||
|
||||
|
||||
[EM100Pro]: https://www.dediprog.com/product/EM100Pro
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
@ -3,7 +3,7 @@
|
||||
## Overview
|
||||
![][architecture]
|
||||
|
||||
[architecture]: comparison_coreboot_uefi.svg
|
||||
[architecture]: comparision_coreboot_uefi.svg
|
||||
|
||||
## Stages
|
||||
coreboot consists of multiple stages that are compiled as separate binaries and
|
||||
|
@ -62,23 +62,6 @@ supported options are:
|
||||
|
||||
`position` and `align` are mutually exclusive.
|
||||
|
||||
### Adding Makefile fragments
|
||||
|
||||
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
|
||||
adding something like this to `site-local/Makefile.inc`
|
||||
|
||||
```
|
||||
$(call add_intermediate, add_mrc_data)
|
||||
$(CBFSTOOL) $< write -r RW_MRC_CACHE -f site-local/my-mrc-recording.bin
|
||||
```
|
||||
|
||||
Note that the second line must start with a tab, not spaces.
|
||||
|
||||
```eval_rst
|
||||
See also :doc:`../tutorial/managing_local_additions`.
|
||||
```
|
||||
|
||||
#### FMAP region support
|
||||
With the addition of FMAP flash partitioning support to coreboot, there was a
|
||||
need to extend the specification of files to provide more precise control
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
@ -1,87 +0,0 @@
|
||||
# Adding new devices to a device tree
|
||||
|
||||
## Introduction
|
||||
|
||||
ACPI exposes a platform-independent interface for operating systems to perform
|
||||
power management and other platform-level functions. Some operating systems
|
||||
also use ACPI to enumerate devices that are not immediately discoverable, such
|
||||
as those behind I2C or SPI buses (in contrast to PCI). This document discusses
|
||||
the way that coreboot uses the concept of a "device tree" to generate ACPI
|
||||
tables for usage by the operating system.
|
||||
|
||||
## Devicetree and overridetree (if applicable)
|
||||
|
||||
For mainboards that are organized around a "reference board" or "baseboard"
|
||||
model (see ``src/mainboard/google/octopus`` or ``hatch`` for examples), there is
|
||||
typically a devicetree.cb file that all boards share, and any differences for a
|
||||
specific board ("variant") are captured in the overridetree.cb file. Any
|
||||
settings changed in the overridetree take precedence over those in the main
|
||||
devicetree. Note, not all mainboards will have the devicetree/overridetree
|
||||
distinction, and may only have a devicetree.cb file. Or you can always just
|
||||
write the ASL (ACPI Source Language) code yourself.
|
||||
|
||||
### Naming and referencing devices
|
||||
|
||||
When declaring a device, it can optionally be given an alias that can be
|
||||
referred to elsewhere. This is particularly useful to declare a device in one
|
||||
device tree while allowing its configuration to be more easily changed in an
|
||||
overlay. For instance, the AMD Picasso SoC definition
|
||||
(`soc/amd/picasso/chipset.cb`) declares an IOMMU on a PCI bus that is disabled
|
||||
by default:
|
||||
|
||||
```
|
||||
chip soc/amd/picasso
|
||||
device domain 0 on
|
||||
...
|
||||
device pci 00.2 alias iommu off end
|
||||
...
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
A device based on this SoC can override the configuration for the IOMMU without
|
||||
duplicating addresses, as in
|
||||
`mainboard/google/zork/variants/baseboard/devicetree_trembyle.cb`:
|
||||
|
||||
```
|
||||
chip soc/amd/picasso
|
||||
device domain 0
|
||||
...
|
||||
device ref iommu on end
|
||||
...
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
In this example the override simply enables the IOMMU, but it could also
|
||||
set additional properties (or even add child devices) inside the IOMMU `device`
|
||||
block.
|
||||
|
||||
---
|
||||
|
||||
It is important to note that devices that use `device ref` syntax to override
|
||||
previous definitions of a device by alias must be placed at **exactly the same
|
||||
location in the device tree** as the original declaration. If not, this will
|
||||
actually create another device rather than overriding the properties of the
|
||||
existing one. For instance, if the above snippet from `devicetree_trembyle.cb`
|
||||
were written as follows:
|
||||
|
||||
```
|
||||
chip soc/amd/picasso
|
||||
# NOTE: not inside domain 0!
|
||||
device ref iommu on end
|
||||
end
|
||||
```
|
||||
|
||||
Then this would leave the SoC's IOMMU disabled, and instead create a new device
|
||||
with no properties as a direct child of the SoC.
|
||||
|
||||
## Device drivers
|
||||
|
||||
Platform independent device drivers are hooked up via entries in a devicetree.
|
||||
See [Driver Devicetree Entries](../drivers/dt_entries.md) for more info.
|
||||
|
||||
## Notes
|
||||
|
||||
- **All fields that are left unspecified in the devicetree are initialized to
|
||||
zero.**
|
@ -41,7 +41,7 @@ project you're submitting the changes to. If you’re submitting code that
|
||||
you wrote that might be owned by your employer, make sure that your
|
||||
employer is aware and you are authorized to submit the code. For
|
||||
clarification, see the Developer's Certificate of Origin in the coreboot
|
||||
[Signed-off-by policy](#sign-off-procedure).
|
||||
[Signed-off-by policy](https://www.coreboot.org/Development_Guidelines#Sign-off_Procedure).
|
||||
|
||||
* In general, patches should remain open for review for at least 24 hours
|
||||
since the last significant modification to the change. The purpose is to
|
||||
@ -53,10 +53,7 @@ it's implemented, should restart the wait period.
|
||||
a recently-introduced issue (build, boot or OS-level compatibility, not
|
||||
necessarily identified by coreboot.org facilities). Its commit message
|
||||
has to explain what change introduced the problem and the nature of
|
||||
the problem so that the emergency need becomes apparent. Avoid stating
|
||||
something like "fix build error" in the commit summary, describe what
|
||||
the commit does instead, just like any other commit. In addition, it is
|
||||
recommended to reference the commit that introduced the issue. The change
|
||||
the problem so that the emergency need becomes apparent. The change
|
||||
itself should be as limited in scope and impact as possible to make it
|
||||
simple to assess the impact. Such a change can be merged early with 3
|
||||
Code-Review+2. For emergency fixes that affect a single project (SoC,
|
||||
@ -127,54 +124,6 @@ those platforms. While it would be nice to update any other platforms, you
|
||||
must at least provide a path that will allow other platforms to continue
|
||||
working.
|
||||
|
||||
Sign-off Procedure
|
||||
------------------
|
||||
The coreboot project employs a sign-off procedure similar to what is
|
||||
used by the Linux kernel. Each gerrit commit requires a sign-off line
|
||||
saying that the contributed code abides by the Developer's certificate
|
||||
of origin, below.
|
||||
```text
|
||||
Signed-off-by: Random J Developer <random@developer.example.org>
|
||||
```
|
||||
|
||||
Using '-s' with 'git commit' will automatically add a Signed-off-by line
|
||||
to your commit message. Patches without a Signed-off-by should not be
|
||||
pushed to gerrit, and will be rejected by coreboot's CI system.
|
||||
|
||||
You must use a known identity in the Signed-off-by line. Anonymous
|
||||
contributions cannot be committed! This can be anything sufficient to
|
||||
identify and contact the source of a contribution, such as your name or
|
||||
an established alias/nickname. Refer to [this LKML thread] and the
|
||||
[SCO-Linux disputes] for the rationale behind the DCO.
|
||||
|
||||
Developer's Certificate of Origin 1.1
|
||||
|
||||
> By making a contribution to this project, I certify that:
|
||||
>
|
||||
> (a) The contribution was created in whole or in part by me and I have
|
||||
> the right to submit it under the open source license indicated in the
|
||||
> file; or
|
||||
>
|
||||
> (b) The contribution is based upon previous work that, to the best of
|
||||
> my knowledge, is covered under an appropriate open source license and
|
||||
> I have the right under that license to submit that work with
|
||||
> modifications, whether created in whole or in part by me, under the
|
||||
> same open source license (unless I am permitted to submit under a
|
||||
> different license), as indicated in the file; or
|
||||
>
|
||||
> (c) The contribution was provided directly to me by some other person
|
||||
> who certified (a), (b) or (c) and I have not modified it; and
|
||||
>
|
||||
> (d) In the case of each of (a), (b), or (c), I understand and agree
|
||||
> that this project and the contribution are public and that a record of
|
||||
> the contribution (including all personal information I submit with it,
|
||||
> including my sign-off) is maintained indefinitely and may be
|
||||
> redistributed consistent with this project or the open source license
|
||||
> indicated in the file.
|
||||
|
||||
Note: The [Developer's Certificate of Origin 1.1] is licensed under the
|
||||
terms of the [Creative Commons Attribution-ShareAlike 2.5 License].
|
||||
|
||||
|
||||
Recommendations for gerrit activity
|
||||
-----------------------------------
|
||||
@ -221,10 +170,7 @@ This helps verify that the patch train won’t tie up the jenkins builders
|
||||
for no reason if there are failing patches in the train. For running
|
||||
parallel builds, you can specify the number of cores to use by setting the
|
||||
the CPUS environment variable. Example:
|
||||
|
||||
```Bash
|
||||
make what-jenkins-does CPUS=8
|
||||
```
|
||||
make what-jenkins-does CPUS=8
|
||||
|
||||
* Use a topic when pushing a train of patches. This groups the commits
|
||||
together so people can easily see the connection at the top level of
|
||||
@ -232,10 +178,7 @@ gerrit. Topics can be set for individual patches in gerrit by going into
|
||||
the patch and clicking on the icon next to the topic line. Topics can also
|
||||
be set when you push the patches into gerrit. For example, to push a set of
|
||||
commits with the i915-kernel-x60 set, use the command:
|
||||
|
||||
```Bash
|
||||
git push origin HEAD:refs/for/master%topic=i915-kernel-x60
|
||||
```
|
||||
git push origin HEAD:refs/for/master%topic=i915-kernel-x60
|
||||
|
||||
* If one of your patches isn't ready to be merged, make sure it's obvious
|
||||
that you don't feel it's ready for merge yet. The preferred way to show
|
||||
@ -245,28 +188,17 @@ Examples of this are "WIP: title" or "[NEEDS_TEST]: title". Another way to
|
||||
mark the patch as not ready would be to give it a -1 or -2 review, but
|
||||
isn't as obvious as the commit message. These patches can also be pushed with
|
||||
the wip flag:
|
||||
|
||||
```Bash
|
||||
git push origin HEAD:refs/for/master%wip
|
||||
```
|
||||
git push origin HEAD:refs/for/master%wip
|
||||
|
||||
* When pushing patches that are not for submission, these should be marked
|
||||
as such. This can be done in the title ‘[DONOTSUBMIT]’, or can be pushed as
|
||||
private changes, so that only explicitly added reviewers will see them. These
|
||||
sorts of patches are frequently posted as ideas or RFCs for the community to
|
||||
look at. Note that private changes can still be fetched from Gerrit by anybody
|
||||
who knows their commit ID, so don't use this for sensitive changes. To push
|
||||
a private change, use the command:
|
||||
|
||||
```Bash
|
||||
git push origin HEAD:refs/for/master%private
|
||||
```
|
||||
sorts of patches are frequently posted as ideas or RFCs for the community
|
||||
to look at. To push a private change, use the command:
|
||||
git push origin HEAD:refs/for/master%private
|
||||
|
||||
* Multiple push options can be combined:
|
||||
|
||||
```Bash
|
||||
git push origin HEAD:refs/for/master%private,wip,topic=experiment
|
||||
```
|
||||
git push origin HEAD:refs/for/master%private,wip,topic=experiment
|
||||
|
||||
* Respond to anyone who has taken the time to review your patches, even if
|
||||
it's just to say that you disagree. While it may seem annoying to address a
|
||||
@ -340,15 +272,13 @@ git/gerrit tags by prepending the lines with 'Original-'. Marking
|
||||
the original text this way makes it much easier to tell what changes
|
||||
happened in which repository. This applies to these lines, not the actual
|
||||
commit message itself:
|
||||
|
||||
* Commit-Id:
|
||||
* Change-Id:
|
||||
* Signed-off-by:
|
||||
* Reviewed-on:
|
||||
* Tested-by:
|
||||
* Reviewed-by:
|
||||
|
||||
The script `util/gitconfig/rebase.sh` can be used to help automate this.
|
||||
Commit-Id:
|
||||
Change-Id:
|
||||
Signed-off-by:
|
||||
Reviewed-on:
|
||||
Tested-by:
|
||||
Reviewed-by:
|
||||
The script 'util/gitconfig/rebase.sh' can be used to help automate this.
|
||||
Other tags such as 'Commit-Queue' can simply be removed.
|
||||
|
||||
* Check if there's documentation that needs to be updated to remain current
|
||||
@ -434,7 +364,3 @@ Requests for clarification and suggestions for updates to these guidelines
|
||||
should be sent to the coreboot mailing list at <coreboot@coreboot.org>.
|
||||
|
||||
[ready changes]: https://review.coreboot.org/q/age:1d+project:coreboot+status:open+is:mergeable+label:All-Comments-Resolved%253Dok+label:Code-Review%253D2+-label:Code-Review%253C0+label:Verified%253D1+-label:Verified-1
|
||||
[Developer's Certificate of Origin 1.1]: https://developercertificate.org/
|
||||
[Creative Commons Attribution-ShareAlike 2.5 License]: https://creativecommons.org/licenses/by-sa/2.5/
|
||||
[this LKML thread]: https://lkml.org/lkml/2004/5/23/10
|
||||
[SCO-Linux disputes]: https://en.wikipedia.org/wiki/SCO%E2%80%93Linux_disputes
|
@ -162,82 +162,6 @@ The first is configuring a pin as an output, when it was designed to be an
|
||||
input. There is a real risk in this case of short-circuiting a component which
|
||||
could cause catastrophic failures, up to and including your mainboard!
|
||||
|
||||
### Intel SoCs
|
||||
|
||||
As per Intel Platform Controller Hub (PCH) EDS since Skylake, a GPIO PAD register
|
||||
supports four different types of GPIO reset as:
|
||||
|
||||
```eval_rst
|
||||
+------------------------+----------------+-------------+-------------+
|
||||
| | | PAD Reset ? |
|
||||
+ PAD Reset Config + Platform Reset +-------------+-------------+
|
||||
| | | GPP | GPD |
|
||||
+========================+================+=============+=============+
|
||||
| | 00 - Power Good | Warm Reset | N | N |
|
||||
| | (GPP: RSMRST, +----------------+-------------+-------------+
|
||||
| | GPD: DSW_PWROK) | Cold Reset | N | N |
|
||||
| +----------------+-------------+-------------+
|
||||
| | S3/S4/S5 | N | N |
|
||||
| +----------------+-------------+-------------+
|
||||
| | Global Reset | N | N |
|
||||
| +----------------+-------------+-------------+
|
||||
| | Deep Sx | Y | N |
|
||||
| +----------------+-------------+-------------+
|
||||
| | G3 | Y | Y |
|
||||
+------------------------+----------------+-------------+-------------+
|
||||
| 01 - Deep | Warm Reset | Y | Y |
|
||||
| +----------------+-------------+-------------+
|
||||
| | Cold Reset | Y | Y |
|
||||
| +----------------+-------------+-------------+
|
||||
| | S3/S4/S5 | N | N |
|
||||
| +----------------+-------------+-------------+
|
||||
| | Global Reset | Y | Y |
|
||||
| +----------------+-------------+-------------+
|
||||
| | Deep Sx | Y | Y |
|
||||
| +----------------+-------------+-------------+
|
||||
| | G3 | Y | Y |
|
||||
+------------------------+----------------+-------------+-------------+
|
||||
| 10 - Host Reset/PLTRST | Warm Reset | Y | Y |
|
||||
| +----------------+-------------+-------------+
|
||||
| | Cold Reset | Y | Y |
|
||||
| +----------------+-------------+-------------+
|
||||
| | S3/S4/S5 | Y | Y |
|
||||
| +----------------+-------------+-------------+
|
||||
| | Global Reset | Y | Y |
|
||||
| +----------------+-------------+-------------+
|
||||
| | Deep Sx | Y | Y |
|
||||
| +----------------+-------------+-------------+
|
||||
| | G3 | Y | Y |
|
||||
+------------------------+----------------+-------------+-------------+
|
||||
| | 11 - Resume Reset | Warm Reset | n/a | N |
|
||||
| | (GPP: Reserved, +----------------+-------------+-------------+
|
||||
| | GPD: RSMRST) | Cold Reset | n/a | N |
|
||||
| +----------------+-------------+-------------+
|
||||
| | S3/S4/S5 | n/a | N |
|
||||
| +----------------+-------------+-------------+
|
||||
| | Global Reset | n/a | N |
|
||||
| +----------------+-------------+-------------+
|
||||
| | Deep Sx | n/a | Y |
|
||||
| +----------------+-------------+-------------+
|
||||
| | G3 | n/a | Y |
|
||||
+------------------------+----------------+-------------+-------------+
|
||||
```
|
||||
|
||||
Each GPIO Community has a Pad Configuration Lock register for a GPP allowing locking
|
||||
specific register fields in the PAD configuration register.
|
||||
|
||||
The Pad Config Lock registers reset type is default hardcoded to **Power Good** and
|
||||
it's **not** configurable by GPIO PAD DW0.PadRstCfg. Hence, it may appear that for a GPP,
|
||||
the Pad Reset Config (DW0 Bit 31) is configured differently from `Power Good`.
|
||||
|
||||
This would create confusion where the Pad configuration is returned to its `default`
|
||||
value but remains `locked`, this would prevent software to reprogram the GPP.
|
||||
Additionally, this means software can't rely on GPIOs being reset by PLTRST# or Sx entry.
|
||||
|
||||
Hence, as per GPIO BIOS Writers Guide (BWG) it's recommended to change the Pad Reset
|
||||
Configuration for lock GPP as `Power Good` so that pad configuration and lock bit are
|
||||
always in sync and can be reset at the same time.
|
||||
|
||||
## Soft Straps
|
||||
|
||||
Soft straps, that can be configured by the vendor in the Intel Flash Image Tool
|
||||
|
@ -4,6 +4,7 @@
|
||||
* [Build System](build_system.md)
|
||||
* [Submodules](submodules.md)
|
||||
* [Kconfig](kconfig.md)
|
||||
* [Gerrit Guidelines](gerrit_guidelines.md)
|
||||
* [Documentation License](license.md)
|
||||
* [Writing Documentation](writing_documentation.md)
|
||||
* [Setting up GPIOs](gpio.md)
|
||||
* [Adding devices to a device tree](devicetree.md)
|
||||
|
@ -786,7 +786,7 @@ select <symbol> \[if <expr>\]
|
||||
config TPM
|
||||
bool
|
||||
default n
|
||||
select MEMORY_MAPPED_TPM if ARCH_X86
|
||||
select LPC_TPM if ARCH_X86
|
||||
select I2C_TPM if ARCH_ARM
|
||||
select I2C_TPM if ARCH_ARM64
|
||||
help
|
||||
|
@ -159,5 +159,5 @@ TOC tree.
|
||||
[guide]: http://www.sphinx-doc.org/en/stable/install.html
|
||||
[Sphinx]: http://www.sphinx-doc.org/en/master/
|
||||
[Markdown Guide]: https://www.markdownguide.org/
|
||||
[Gerrit Guidelines]: ../contributing/gerrit_guidelines.md
|
||||
[Gerrit Guidelines]: gerrit_guidelines.md
|
||||
[review.coreboot.org]: https://review.coreboot.org
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
A coreboot image for an Intel SoC contains two separate definitions of the
|
||||
layout of the flash. The Intel Flash Descriptor (IFD) which defines offsets and
|
||||
sizes of various regions of flash and the [coreboot FMAP](../../lib/flashmap.md).
|
||||
sizes of various regions of flash and the [coreboot FMAP](../lib/flashmap.md).
|
||||
|
||||
The FMAP should define all of the of the regions defined by the IFD to ensure
|
||||
that those regions are accounted for by coreboot and will not be accidentally
|
||||
@ -29,7 +29,7 @@ way to categorize anything required by the SoC but not provided by coreboot.
|
||||
+------------+------------------+-----------+-------------------------------------------+
|
||||
| 4 | Platform Data | SI_PDR | |
|
||||
+------------+------------------+-----------+-------------------------------------------+
|
||||
| 8 | EC Firmware | SI_EC | Most ChromeOS devices do not use this |
|
||||
| 8 | EC Firmware | SI_EC | Most Chrome OS devices do not use this |
|
||||
| | | | region; EC firmware is stored in BIOS |
|
||||
| | | | region of flash |
|
||||
+------------+------------------+-----------+-------------------------------------------+
|
@ -1,13 +1,9 @@
|
||||
# Welcome to the coreboot documentation
|
||||
|
||||
This is the developer documentation for [coreboot](https://coreboot.org).
|
||||
It is built from Markdown files in the [Documentation] directory in the
|
||||
source code.
|
||||
|
||||
## Spelling of coreboot
|
||||
|
||||
The correct spelling of coreboot is completely in lower case characters and in
|
||||
one word without a space between the two parts.
|
||||
It is built from Markdown files in the
|
||||
[Documentation](https://review.coreboot.org/cgit/coreboot.git/tree/Documentation)
|
||||
directory in the source code.
|
||||
|
||||
## Purpose of coreboot
|
||||
|
||||
@ -25,7 +21,7 @@ initialization routines across many different use cases, no matter if
|
||||
they provide standard interfaces or entirely custom boot flows.
|
||||
|
||||
Popular [payloads](payloads.md) in use with coreboot are SeaBIOS,
|
||||
which provides PCBIOS services, edk2, which provides UEFI services,
|
||||
which provides PCBIOS services, Tianocore, which provides UEFI services,
|
||||
GRUB2, the bootloader used by many Linux distributions, or depthcharge,
|
||||
a custom boot loader used on Chromebooks.
|
||||
|
||||
@ -142,7 +138,7 @@ say hello!
|
||||
## Getting the source code
|
||||
|
||||
coreboot is primarily developed in the
|
||||
[git](https://review.coreboot.org/plugins/gitiles/coreboot) version control
|
||||
[git](https://review.coreboot.org/cgit/coreboot.git) version control
|
||||
system, using [Gerrit](https://review.coreboot.org) to manage
|
||||
contributions and code review.
|
||||
|
||||
@ -172,8 +168,14 @@ Contents:
|
||||
|
||||
* [Getting Started](getting_started/index.md)
|
||||
* [Tutorial](tutorial/index.md)
|
||||
* [Contributing](contributing/index.md)
|
||||
* [Community](community/index.md)
|
||||
* [Coding Style](contributing/coding_style.md)
|
||||
* [Project Ideas](contributing/project_ideas.md)
|
||||
* [Documentation Ideas](contributing/documentation_ideas.md)
|
||||
* [Code of Conduct](community/code_of_conduct.md)
|
||||
* [Language style](community/language_style.md)
|
||||
* [Community forums](community/forums.md)
|
||||
* [Project services](community/services.md)
|
||||
* [coreboot at conferences](community/conferences.md)
|
||||
* [Payloads](payloads.md)
|
||||
* [Distributions](distributions.md)
|
||||
* [Technotes](technotes/index.md)
|
||||
@ -192,12 +194,6 @@ Contents:
|
||||
* [SuperIO](superio/index.md)
|
||||
* [Vendorcode](vendorcode/index.md)
|
||||
* [Utilities](util.md)
|
||||
* [Software Bill of Materials](sbom/sbom.md)
|
||||
* [Project infrastructure & services](infrastructure/index.md)
|
||||
* [Boards supported in each release directory](releases/boards_supported_on_branches.md)
|
||||
* [Release notes](releases/index.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/master/Documentation/
|
||||
* [coreboot infrastructure](infrastructure/index.md)
|
||||
* [Release notes for past releases](releases/index.md)
|
||||
* [Flashing firmware tutorial](flash_tutorial/index.md)
|
||||
|
@ -8,8 +8,8 @@ Let a jenkins admin know that you’re interested in setting up a jenkins
|
||||
build system.
|
||||
|
||||
For a permanent build system, this should generally be a dedicated
|
||||
machine workstation or server class machine that is not generally being
|
||||
used for other purposes. The coreboot builds are very intensive.
|
||||
machine that is not generally being used for other purposes. The
|
||||
coreboot builds are very intensive.
|
||||
|
||||
It's also best to be aware that although we don't know of any security
|
||||
issues, the jenkins-node image is run with the privileged flag which
|
||||
@ -26,48 +26,34 @@ Currently active Jenkins admins:
|
||||
* Patrick Georgi:
|
||||
* Email: [patrick@georgi-clan.de](mailto:patrick@georgi-clan.de)
|
||||
* IRC: pgeorgi
|
||||
* Martin Roth:
|
||||
* Email: [gaumless@gmail.com](mailto:gaumless@gmail.com)
|
||||
* IRC: martinr
|
||||
|
||||
|
||||
### Build Machine requirements
|
||||
|
||||
For a builder, we need a very fast system with lots of threads and
|
||||
plenty of RAM. The builder builds and stores the git repos and output
|
||||
in tmpfs along with the ccache save area, so if there isn't enough
|
||||
memory, the builds will slow down because of smaller ccache areas and
|
||||
can run into "out of storage space" errors.
|
||||
For a builder, we need a fast system with lots of threads and plenty of
|
||||
RAM. The builder builds and stores the git repos and output in tmpfs
|
||||
along with the ccache save area, so if there isn't enough memory, the
|
||||
builds will slow down because of smaller ccache areas and can run into
|
||||
"out of storage space" errors.
|
||||
|
||||
#### Current Build Machines
|
||||
|
||||
To give an idea of what a suitable build machine might be, currently the
|
||||
coreboot project has 6 active jenkins build machines.
|
||||
|
||||
These times are taken from the week of Feb 21 - Feb 28, 2022
|
||||
coreboot project has 3 active jenkins build machines.
|
||||
|
||||
* Congenialbuilder - 128 threads, 256GiB RAM
|
||||
* Coverity Builds, Toolchain builds, Scanbuild-builds
|
||||
* Fastest Passing coreboot gerrit build: 6 min, 47 sec
|
||||
* Slowest Passing coreboot gerrit build: 14 min
|
||||
* Fastest Passing coreboot gerrit build: 4 min, 30 sec
|
||||
* Slowest Passing coreboot gerrit build: 9 min, 56 sec
|
||||
|
||||
* Gleefulbuilder - 64 threads, 64GiB RAM
|
||||
* Fastest Passing coreboot gerrit build: 10 min
|
||||
* Slowest Passing coreboot gerrit build: 46 min
|
||||
|
||||
* Fabulousbuilder - 64 threads, 64GiB RAM
|
||||
* Fastest Passing coreboot gerrit build: 7 min, 56 sec
|
||||
* Slowest Passing coreboot gerrit build: 56 min (No ccache)
|
||||
* Gleeful builder - 64 thread, 64GiB RAM
|
||||
* Fastest Passing coreboot gerrit build: 6 min, 6 sec
|
||||
* Slowest Passing coreboot gerrit build, 34 min
|
||||
|
||||
|
||||
* Ultron (9elements) - 48 threads, 128GiB RAM
|
||||
* Fastest Passing coreboot gerrit build: 12 min
|
||||
* Slowest Passing coreboot gerrit build: 58 min
|
||||
|
||||
* Bob - 64 threads, 128GiB RAM
|
||||
* Fastest Passing coreboot gerrit build: 7 min
|
||||
* Slowest Passing coreboot gerrit build: 34 min
|
||||
|
||||
* Pokeybuilder - 32 Threads, 96GiB RAM
|
||||
* Runs coreboot-checkpatch and other lighter builds
|
||||
* Fastest Passing coreboot gerrit build: 6 min, 32 sec
|
||||
* Slowest Passing coreboot gerrit build: 44 min
|
||||
|
||||
|
||||
### Jenkins Builds
|
||||
@ -75,24 +61,13 @@ These times are taken from the week of Feb 21 - Feb 28, 2022
|
||||
There are a number of builds handled by the coreboot jenkins builders,
|
||||
for a number of different projects - coreboot, flashrom, memtest86+,
|
||||
em100, etc. Many of these have builders for their current master branch
|
||||
as well as Gerrit and [Coverity](coverity.md) builds.
|
||||
as well as gerrit and coverity builds.
|
||||
|
||||
|
||||
#### Long builds - over 90 minutes on congenialbuilder
|
||||
There are a few builds that take a long time even on the fastest
|
||||
machines. These tasks run overnight in the US timezones.
|
||||
* coreboot_coverity - 9 to 12 hours
|
||||
* coreboot_scanbuild - ~3 hours
|
||||
* coreboot_toolchain - ~1 hour 45 minutes
|
||||
|
||||
|
||||
#### All builds
|
||||
|
||||
You can see all the builds in the main jenkins interface:
|
||||
You can see all the builds here:
|
||||
[https://qa.coreboot.org/](https://qa.coreboot.org/)
|
||||
|
||||
Most of the time on the builders is taken up by the coreboot master and
|
||||
coreboot gerrit builds.
|
||||
gerrit builds.
|
||||
|
||||
* [coreboot gerrit build](https://qa.coreboot.org/job/coreboot-gerrit/)
|
||||
([Time trend](https://qa.coreboot.org/job/coreboot-gerrit/buildTimeTrend))
|
||||
@ -110,8 +85,8 @@ hour.
|
||||
|
||||
On a system with 32 cores, it was tested with this command:
|
||||
|
||||
```sh
|
||||
stress-ng --cpu 20 --io 6 --vm 6 --vm-bytes 1G --verify --metrics-brief -t 60m
|
||||
```
|
||||
$ stress-ng --cpu 20 --io 6 --vm 6 --vm-bytes 1G --verify --metrics-brief -t 60m
|
||||
```
|
||||
|
||||
You can watch the temperature with the sensors package or with ‘acpi -t’
|
||||
@ -121,8 +96,8 @@ You can check for thermal throttling by running this command and seeing
|
||||
if the values go down on any of the cores after it's been running for a
|
||||
while.
|
||||
|
||||
```sh
|
||||
while [ true ]; do clear; cat /proc/cpuinfo | grep 'cpu MHz' ; sleep 1; done
|
||||
```
|
||||
$ while [ true ]; do clear; cat /proc/cpuinfo | grep 'cpu MHz' ; sleep 1; done
|
||||
```
|
||||
|
||||
If the machine throttles or resets, you probably need to upgrade the
|
||||
@ -152,23 +127,10 @@ the machine remotely (if you allow them).
|
||||
|
||||
### Install and set up docker
|
||||
|
||||
Install docker by following [the
|
||||
directions](https://docs.docker.com/engine/install/) on the docker site.
|
||||
These instructions keep changing, so just check the latest information.
|
||||
|
||||
|
||||
### Set up the system for the jenkins builder
|
||||
|
||||
As a regular user - *Not root*, run:
|
||||
|
||||
```sh
|
||||
sudo mkdir -p ${COREBOOT_JENKINS_CACHE_DIR}
|
||||
sudo mkdir -p ${COREBOOT_JENKINS_CCACHE_DIR}
|
||||
sudo chown $(whoami):$(whoami) ${COREBOOT_JENKINS_CCACHE_DIR}
|
||||
sudo chown $(whoami):$(whoami) ${COREBOOT_JENKINS_CACHE_DIR}
|
||||
wget http://www.dediprog.com/save/78.rar/to/EM100Pro.rar
|
||||
mv EM100Pro.rar ${COREBOOT_JENKINS_CACHE_DIR}
|
||||
```
|
||||
Install docker by following the
|
||||
[directions](https://docs.docker.com/engine/install/) on the docker
|
||||
site. These instructions keep changing, so just check the latest
|
||||
information.
|
||||
|
||||
|
||||
#### Set up environment variables
|
||||
@ -177,12 +139,12 @@ To make configuration and the later commands easier, these should go in
|
||||
your shell's .rc file. Note that you only need to set them if you're
|
||||
using something other than the default.
|
||||
|
||||
```sh
|
||||
```
|
||||
# Set the port used on your machine to connect to jenkins.
|
||||
export COREBOOT_JENKINS_PORT=49151
|
||||
|
||||
# Set the revision of the container from [docker hub](https://hub.docker.com/repository/docker/coreboot/coreboot-sdk)
|
||||
export DOCKER_COMMIT=2021-09-23_b0d87f753c
|
||||
# Set the revision of the container from docker hub
|
||||
export DOCKER_COMMIT=65718760fa
|
||||
|
||||
# Set the location of where the jenkins cache directory will be.
|
||||
export COREBOOT_JENKINS_CACHE_DIR="/srv/docker/coreboot-builder/cache"
|
||||
@ -199,13 +161,13 @@ continuing to the next step.
|
||||
|
||||
From the coreboot directory, run
|
||||
|
||||
```sh
|
||||
```
|
||||
make -C util/docker help
|
||||
```
|
||||
|
||||
This will show you the available targets and variables needed:
|
||||
|
||||
```text
|
||||
```
|
||||
Commands for working with docker images:
|
||||
coreboot-sdk - Build coreboot-sdk container
|
||||
upload-coreboot-sdk - Upload coreboot-sdk to hub.docker.com
|
||||
@ -237,10 +199,22 @@ Variables:
|
||||
DOCKER_COMMIT=65718760fa
|
||||
```
|
||||
|
||||
### Set up the system for the jenkins builder
|
||||
|
||||
As a regular user - *Not root*, run:
|
||||
|
||||
```
|
||||
sudo mkdir -p ${COREBOOT_JENKINS_CACHE_DIR}
|
||||
sudo mkdir -p ${COREBOOT_JENKINS_CCACHE_DIR}
|
||||
sudo chown $(whoami):$(whoami) ${COREBOOT_JENKINS_CCACHE_DIR}
|
||||
sudo chown $(whoami):$(whoami) ${COREBOOT_JENKINS_CACHE_DIR}
|
||||
wget http://www.dediprog.com/save/78.rar/to/EM100Pro.rar
|
||||
mv EM100Pro.rar ${COREBOOT_JENKINS_CACHE_DIR}
|
||||
```
|
||||
|
||||
### Install the coreboot jenkins builder
|
||||
|
||||
```sh
|
||||
```
|
||||
make -C util/docker docker-jenkins-server
|
||||
```
|
||||
|
||||
@ -252,17 +226,17 @@ machine profile on qa.coreboot.org.
|
||||
|
||||
They need to know:
|
||||
* Your external IP address or domain name. If you don’t have a static
|
||||
IP, make sure you have a dynamic dns hostname configured.
|
||||
IP, make sure you have a dynamic dns hostname configured.
|
||||
* The port on your machine and firewall that’s exposed for jenkins:
|
||||
`$COREBOOT_JENKINS_PORT`
|
||||
`$COREBOOT_JENKINS_PORT`
|
||||
* The core count of the machine.
|
||||
* How much memory is available on the machine. This helps determine
|
||||
the amount of memory used for ccache.
|
||||
the amount of memory used for ccache.
|
||||
|
||||
|
||||
### First build
|
||||
On the first build after a machine is reset, it will frequently take
|
||||
an hour to do the entire what-jenkins-does build while the ccache
|
||||
20-25 minutes to do the entire what-jenkins-does build while the ccache
|
||||
is getting filled up and the entire coreboot repo gets downloaded. As
|
||||
the ccache gets populated, the build time will drop.
|
||||
|
||||
@ -271,40 +245,39 @@ the ccache gets populated, the build time will drop.
|
||||
|
||||
|
||||
### How to log in to the docker instance for debugging
|
||||
|
||||
```sh
|
||||
make -C util/docker docker-jenkins-attach
|
||||
su coreboot
|
||||
cd ~/slave-root/workspace
|
||||
bash
|
||||
```
|
||||
$ make -C util/docker docker-jenkins-attach
|
||||
$ su coreboot
|
||||
$ cd ~/slave-root/workspace
|
||||
$ bash
|
||||
```
|
||||
|
||||
|
||||
WARNING: This should not be used to make changes to the build system,
|
||||
but just to debug issues. Changes to the build system image are highly
|
||||
but just to debug issues. Changes to the build system are highly
|
||||
discouraged as it leads to situations where patches can pass the build
|
||||
testing on one builder and fail on another builder. Any changes that are
|
||||
made in the image will be lost on the next update, so if you
|
||||
accidentally change something, you can remove the containers and images,
|
||||
then update to get a fresh installation.
|
||||
accidentally change something, you can remove the containers and images
|
||||
and update to get a fresh installation.
|
||||
|
||||
|
||||
### How to download containers/images for a fresh installation and remove old containers
|
||||
|
||||
To delete the old containers & images:
|
||||
|
||||
```sh
|
||||
docker stop $COREBOOT_JENKINS_CONTAINER
|
||||
docker rm $COREBOOT_JENKINS_CONTAINER
|
||||
docker images # lists all existing images
|
||||
docker rmi XXXX # Use the image ID found in the above command.
|
||||
```
|
||||
$ docker stop $COREBOOT_JENKINS_CONTAINER
|
||||
$ docker rm $COREBOOT_JENKINS_CONTAINER
|
||||
$ docker images # lists all existing images
|
||||
$ docker rmi XXXX # Use the image ID found in the above command.
|
||||
```
|
||||
|
||||
To get and run the new coreboot-jenkins image, change the value in the
|
||||
`DOCKER_COMMIT` variable to the new image value.
|
||||
|
||||
```sh
|
||||
make -C util/docker docker-jenkins-server
|
||||
```
|
||||
$ make -C util/docker docker-jenkins-server
|
||||
```
|
||||
|
||||
#### Getting ready to push the docker images
|
||||
@ -318,15 +291,15 @@ Get an admin to add the account to the coreboot team on hub.docker.com
|
||||
Make sure your credentials are configured on your host machine by
|
||||
running
|
||||
|
||||
```sh
|
||||
docker login
|
||||
```
|
||||
$ docker login
|
||||
```
|
||||
|
||||
This will prompt you for your docker username, password, and your email
|
||||
address, and write out to ~/.docker/config.json. Without this file, you
|
||||
won’t be able to push the images.
|
||||
|
||||
#### Updating the Dockerfiles
|
||||
#### Updating the Dockerfiles:
|
||||
|
||||
The coreboot-sdk Dockerfile will need to be updated when any additional
|
||||
dependencies are added. Both the coreboot-sdk and the
|
||||
@ -337,15 +310,15 @@ files are stored in the coreboot repo under coreboot/util/docker.
|
||||
Read the [dockerfile best practices](https://docs.docker.com/v1.8/articles/dockerfile_best-practices/)
|
||||
page before updating the files.
|
||||
|
||||
#### Rebuilding the coreboot-sdk docker image to update the toolchain
|
||||
#### Rebuilding the coreboot-sdk docker image to update the toolchain:
|
||||
|
||||
```sh
|
||||
make -C util/docker coreboot-sdk
|
||||
```
|
||||
$ make -C util/docker coreboot-sdk
|
||||
```
|
||||
|
||||
This takes a relatively long time.
|
||||
|
||||
#### Test the coreboot-sdk docker image
|
||||
#### Test the coreboot-sdk docker image:
|
||||
|
||||
There are two methods of running the docker image - interactively as a
|
||||
shell, or doing the build directly. Running interactively as a shell is
|
||||
@ -353,44 +326,44 @@ useful for early testing, because it allows you to update the image
|
||||
(without any changes getting saved) and re-test builds. This saves the
|
||||
time of having to rebuild the image for every issue you find.
|
||||
|
||||
#### Running the docker image interactively
|
||||
#### Running the docker image interactively:
|
||||
|
||||
Run:
|
||||
|
||||
```sh
|
||||
make -C util/docker docker-jenkins-server
|
||||
make -C util/docker docker-jenkins-attach
|
||||
```
|
||||
$ make -C util/docker docker-jenkins-server
|
||||
$ make -C util/docker docker-jenkins-attach
|
||||
```
|
||||
|
||||
#### Running the build directly
|
||||
#### Running the build directly:
|
||||
|
||||
From the coreboot directory:
|
||||
|
||||
```sh
|
||||
make -C util/docker docker-build-coreboot
|
||||
```
|
||||
$ make -C util/docker docker-build-coreboot
|
||||
```
|
||||
|
||||
You’ll also want to test building the other projects and payloads:
|
||||
ChromeEC, flashrom, memtest86+, em100, Grub2, SeaBIOS, iPXE, coreinfo,
|
||||
nvramcui, tint...
|
||||
|
||||
#### Pushing the coreboot-sdk image to hub.docker.com for use
|
||||
#### Pushing the coreboot-sdk image to hub.docker.com for use:
|
||||
|
||||
When you’re satisfied with the testing, push the coreboot-sdk image to
|
||||
the hub.docker.com
|
||||
|
||||
```sh
|
||||
make -C util/docker upload-coreboot-sdk
|
||||
```
|
||||
$ make -C util/docker upload-coreboot-sdk
|
||||
```
|
||||
|
||||
#### Building and pushing the coreboot-jenkins-node docker image
|
||||
#### Building and pushing the coreboot-jenkins-node docker image:
|
||||
|
||||
This docker image is pretty simple, so there’s not really any testing
|
||||
that needs to be done.
|
||||
|
||||
```sh
|
||||
make -C util/docker coreboot-jenkins-node
|
||||
make -C util/docker upload-coreboot-jenkins-node
|
||||
```
|
||||
$ make -C util/docker coreboot-jenkins-node
|
||||
$ make -C util/docker upload-coreboot-jenkins-node
|
||||
```
|
||||
|
||||
### Coverity Setup
|
||||
@ -403,7 +376,6 @@ to be marked as a coverity builder.
|
||||
|
||||
Download the Linux-64 coverity build tool and decompress it into your
|
||||
cache directory as defined by the `$COREBOOT_JENKINS_CACHE_DIR` variable
|
||||
on the jenkins server.
|
||||
|
||||
[https://scan.coverity.com/download](https://scan.coverity.com/download)
|
||||
|
||||
@ -411,7 +383,7 @@ Rename the directory from its original name
|
||||
(cov-analysis-linux64-7.7.0.4) to ‘coverity’, or better, create a
|
||||
symlink:
|
||||
|
||||
```sh
|
||||
```
|
||||
ln -s cov-analysis-linux64-7.7.0.4 coverity
|
||||
```
|
||||
|
||||
|
@ -1,103 +0,0 @@
|
||||
# Coverity Scan for open source firmware
|
||||
|
||||
## What’s Coverity and Coverity Scan?
|
||||
|
||||
Coverity is a static analysis tool. It hooks into the build process
|
||||
and in addition to the compiler creating object files, Coverity collects
|
||||
information about the code. That data is then processed in a separate pass
|
||||
to identify common programming errors, like out of bounds accesses in C.
|
||||
|
||||
Coverity Scan is an online service for Open Source projects providing this
|
||||
analysis for free. The analysis pass is done on their servers and issues
|
||||
can be handled in their [web UI](https://scan.coverity.com/).
|
||||
|
||||
The Scan service has some quotas based on code size to avoid overloading
|
||||
the system, but even at one build per week, that’s usually good enough
|
||||
because the identified issues still need to be triaged and fixed or they
|
||||
will simply be re-identified next week.
|
||||
|
||||
### Triage?
|
||||
|
||||
The Web UI looks a bit like an issue tracker, even if it’s not a very
|
||||
good one. It’s possible to mark identified issues as valid or invalid,
|
||||
and annotate them with metadata which CLs fix them. The latter isn’t
|
||||
strictly necessary because Coverity Scan simply marks issues it can’t
|
||||
find anymore as fixed, but at times it helped identify issues that made
|
||||
a comeback.
|
||||
|
||||
### Alternatives
|
||||
|
||||
There’s also clang’s scan-build, which is fully open-source, and
|
||||
finds different issues. As such, it’s less of an alternative and more
|
||||
of a complement.
|
||||
|
||||
There’s a regular run of that for coreboot but not for the other projects
|
||||
hosted at coreboot.org.
|
||||
|
||||
One downside is that it emits a bunch of HTML to report on issues,
|
||||
but there’s no interactivity (e.g. marking issues solved), no way
|
||||
to merge multiple builds (e.g. multiple board builds of a single tree)
|
||||
or a simple way to extract burndown charts and the like from that.
|
||||
|
||||
#### Looking for a project?
|
||||
|
||||
On the upside, it can emit the data in a machine readable format, so if
|
||||
anybody needs a project, a scan-build web-frontend like Coverity Scan would
|
||||
be feasible without having to go through scan-build’s guts, just by parsing
|
||||
text files - plus all the stateful and web parts to build on top.
|
||||
|
||||
## Logging into Coverity Scan
|
||||
|
||||
Coverity Scan needs an account. It supports its own accounts and GitHub
|
||||
OAuth.
|
||||
|
||||
Access to the dashboards needs approval: Request and you shall receive.
|
||||
|
||||
## coreboot & friends and Coverity Scan
|
||||
|
||||
coreboot, flashrom, Chromium EC and other projects of that family have
|
||||
been made Coverity aware, that is, their build systems support building
|
||||
with a custom compiler configuration passed in “just right” to enable
|
||||
Coverity to add its hooks.
|
||||
|
||||
The public coreboot CI system at
|
||||
[https://qa.coreboot.org/](https://qa.coreboot.org/) regularly does
|
||||
builds with Coverity and sends them off to Coverity Scan.
|
||||
|
||||
Specifically, it covers:
|
||||
|
||||
* Chromium EC: [Coverity Scan site][crECCoverity] ([build job][crECBuildJob])
|
||||
* coreboot: [Coverity Scan site][corebootCoverity] ([build job][corebootBuildJob]), [scan-build output][corebootScanBuild] ([build job][corebootScanBuildJob])
|
||||
* em100: [Coverity Scan site][em100Coverity] ([build job][em100BuildJob])
|
||||
* fcode-utils: [Coverity Scan site][fcodeUtilsCoverity] ([build job][fcodeUtilsBuildJob])
|
||||
* flashrom: [Coverity Scan site][flashromCoverity] ([build job][flashromBuildJob])
|
||||
* memtest86+: [Coverity Scan site][memtestCoverity] ([build job][memtestBuildJob])
|
||||
* vboot: [Coverity Scan site][vbootCoverity] ([build job][vbootBuildJob])
|
||||
|
||||
[crECCoverity]: https://scan.coverity.com/projects/chromium-ec
|
||||
[corebootCoverity]: https://scan.coverity.com/projects/coreboot
|
||||
[em100Coverity]: https://scan.coverity.com/projects/em100
|
||||
[fcodeUtilsCoverity]: https://scan.coverity.com/projects/fcode-utils
|
||||
[flashromCoverity]: https://scan.coverity.com/projects/flashrom
|
||||
[memtestCoverity]: https://scan.coverity.com/projects/memtest86
|
||||
[vbootCoverity]: https://scan.coverity.com/projects/vboot
|
||||
|
||||
[corebootScanBuild]: https://www.coreboot.org/scan-build/
|
||||
|
||||
[crECBuildJob]: https://qa.coreboot.org/view/coverity/job/ChromeEC-Coverity/
|
||||
[corebootBuildJob]: https://qa.coreboot.org/view/coverity/job/coreboot-coverity/
|
||||
[corebootScanBuildJob]: https://qa.coreboot.org/view/coverity/job/coreboot_scanbuild/
|
||||
[em100BuildJob]: https://qa.coreboot.org/view/coverity/job/em100-coverity/
|
||||
[fcodeUtilsBuildJob]: https://qa.coreboot.org/view/coverity/job/fcode-utils-coverity/
|
||||
[flashromBuildJob]: https://qa.coreboot.org/view/coverity/job/flashrom-coverity/
|
||||
[memtestBuildJob]: https://qa.coreboot.org/view/coverity/job/memtest86plus-coverity/
|
||||
[vbootBuildJob]: https://qa.coreboot.org/view/coverity/job/vboot-coverity/
|
||||
|
||||
Some projects (e.g. Chromium EC) build a different subset of boards on
|
||||
each run, ensuring that everything is analyzed eventually. The downside
|
||||
is that coverity issues pop up and disappear somewhat randomly as they
|
||||
are discovered and go unnoticed in a later build.
|
||||
|
||||
More projects that are hosted on review.coreboot.org (potentially as a
|
||||
mirror, like vboot and EC) could be served through that pipeline. Reach
|
||||
out to {stepan,patrick,martin}@coreboot.org.
|
@ -1,12 +1,6 @@
|
||||
# Project infrastructure & services
|
||||
|
||||
This section contains documentation about our infrastructure
|
||||
|
||||
## Services
|
||||
|
||||
* [Project services](services.md)
|
||||
# coreboot infrastructure
|
||||
|
||||
This section contains documentation about coreboot infrastructure
|
||||
|
||||
## Jenkins builders and builds
|
||||
* [Setting up Jenkins build machines](builders.md)
|
||||
* [Coverity Scan integration](coverity.md)
|
||||
|
@ -1,60 +0,0 @@
|
||||
# Accounts on coreboot.org
|
||||
|
||||
There are a number of places where you can benefit from creating an account
|
||||
in our community. Since there is no single sign-on system in place (at this
|
||||
time), they come with their own setup routines.
|
||||
|
||||
## Gerrit code review
|
||||
We exchange and review patches to the code using our [Gerrit code review
|
||||
system](https://review.coreboot.org).
|
||||
|
||||
It allows logging in with a Google or GitHub account using OAuth2 as well
|
||||
as with any OpenID provider that you may already use.
|
||||
|
||||
On the [settings screen](https://review.coreboot.org/settings) you can register
|
||||
all your email addresses you intend to use in the context of coreboot
|
||||
development so that commits with your email address in them are associated with
|
||||
you properly.
|
||||
|
||||
Below is a list of its SSH host keys and fingerprints.
|
||||
```Bash
|
||||
[review.coreboot.org]:29418 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvNDn8qGHlWM/5ndFltStlg3QTc8xvGOgyjxxZByhMZx8LVE4cfgF38WP3euq0avyFy7gAJNghHorXpYKoOzuQPn2WNi5QhyGsUhg7ZJz9hC7Z2gqxxsZF3E7rku4Uj9sN7hWx9fBngxD4z2tP4y/18FTT5XTMcC3Q2sBCOLM0XVAO5R/nb2GO3d27avy+sanKAFEwJHnZ996IoTlU8JJFyi1Y6g30dC2K75oFgCtzntxf++wvrkkKPa+CFQub8fp20shat9WwX9kXjpRjt/Yv9LgqFCaI5ztJvWXicAmbgghGVzbzz4GoSjjF9cxxJF//KTmNb4iGQqmP3Olm27xuw==
|
||||
|
||||
[review.coreboot.org]:29418 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBzlwf/bFejt4EEz1QmbNOfK/HN1NtdcefrRs5Gs42uGnIvjxsff+vEF3//jCTvFPadoy3DrPsbQB3ioQAcYppk=
|
||||
|
||||
[review.coreboot.org]:29418 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOC3Z32gc+1rJXhKX+SW0vESlXR/h/mhcxd+62B1PWC2
|
||||
```
|
||||
|
||||
```Bash
|
||||
2048 SHA256:WW5prF7YE3MTnkRIxLklr9Gxddj9s5BZKUqWJF5dnTg review.coreboot.org:29418 (RSA)
|
||||
256 SHA256:IuLv/DgrBtVn36eMP1zFD0ISAl3IxIoCeiRms6UDhZc review.coreboot.org:29418 (ECDSA)
|
||||
256 SHA256:QFZieVHy8dCRl9tDib6qiwELnfa7SVU4ZWJ5VrXoC8k review.coreboot.org:29418 (ED25519)
|
||||
```
|
||||
|
||||
### https push access
|
||||
When using the https URLs to git repositories, you can push with the "HTTP
|
||||
Credentials" you can have Gerrit generate for you on that page. By default,
|
||||
git uses `$HOME/.netrc` for http authentication data, so add a line there
|
||||
stating:
|
||||
|
||||
machine review.coreboot.org login $your-user-name password $your-password
|
||||
|
||||
### Gerrit user avatar
|
||||
To setup an avatar to show in Gerrit, clone the avatars repository at
|
||||
https://review.coreboot.org/gerrit-avatars.git and add a file named
|
||||
$your-user-ID.jpg (the user ID is a number shown on the [settings screen](https://review.coreboot.org/settings)).
|
||||
The image must be provided in JPEG format, must be square and have at most 50000
|
||||
bytes.
|
||||
|
||||
After you push for review, the system will automatically verify your change
|
||||
and, if adhering to these constraints, approve it. You can then immediately
|
||||
submit it.
|
||||
|
||||
## Issue tracker
|
||||
We have an [issue tracker](https://ticket.coreboot.org) that is used for
|
||||
coreboot and related code, such as libpayload, as well as for the project's
|
||||
infrastructure.
|
||||
|
||||
It can be helpful to refer to issues we track there in commit messages:
|
||||
|
||||
Fixes: https://ticket.coreboot.org/issues/$id
|
@ -4,7 +4,7 @@
|
||||
|
||||
[Flashmap](https://code.google.com/p/flashmap) (FMAP) is a binary format to
|
||||
describe partitions in a flash chip. It was added to coreboot to support the
|
||||
requirements of ChromiumOS firmware but then was also used in other scenarios
|
||||
requirements of Chromium OS firmware but then was also used in other scenarios
|
||||
where precise placement of data in flash was necessary, or for data that is
|
||||
written to at runtime, as CBFS is considered too fragile for such situations.
|
||||
The Flashmap implementation inside coreboot is the de facto standard today.
|
||||
|
@ -8,8 +8,8 @@ BIOS image to be used across a wide variety of devices which may have key differ
|
||||
otherwise similar enough to use the same coreboot build target.
|
||||
|
||||
The initial implementation is designed to take advantage of a bitmask returned by the Embedded
|
||||
Controller on Google ChromeOS devices which allows the manufacturer to use the same firmware
|
||||
image across multiple devices by selecting various options at runtime. See the ChromiumOS
|
||||
Controller on Google Chrome OS devices which allows the manufacturer to use the same firmware
|
||||
image across multiple devices by selecting various options at runtime. See the Chromium OS
|
||||
[Firmware Config][1] documentation for more information.
|
||||
|
||||
This firmware configuration interface differs from the CMOS option interface in that this
|
||||
@ -91,7 +91,7 @@ file in CBFS use the value it contains when matching fields and options.
|
||||
|
||||
### Embedded Controller
|
||||
|
||||
Google ChromeOS devices support an Embedded Controller interface for reading and writing the
|
||||
Google Chrome OS devices support an Embedded Controller interface for reading and writing the
|
||||
firmware configuration value, along with other board-specific information. It is possible for
|
||||
coreboot to read this value at boot on systems that support this feature.
|
||||
|
||||
@ -101,9 +101,9 @@ possible by enabling the CBFS source and coreboot will look in CBFS first for a
|
||||
before asking the embedded controller.
|
||||
|
||||
It is also possible to adjust the value in the embedded controller *(after disabling write
|
||||
protection)* with the `ectool` command in a ChromeOS environment.
|
||||
protection)* with the `ectool` command in a Chrome OS environment.
|
||||
|
||||
For more information on the firmware configuration field on ChromeOS devices see the Chromium
|
||||
For more information on the firmware configuration field on Chrome OS devices see the Chromium
|
||||
documentation for [Firmware Config][1] and [Board Info][2].
|
||||
|
||||
[1]: http://chromium.googlesource.com/chromiumos/docs/+/master/design_docs/firmware_config.md
|
||||
@ -383,7 +383,7 @@ training. This example expects that the default value of this `register` is set
|
||||
|
||||
void mainboard_memory_init_params(FSPM_UPD *mupd)
|
||||
{
|
||||
if (fw_config_probe(FW_CONFIG(FEATURE, DISABLED))
|
||||
if (fw_config_probe_one(FW_CONFIG(FEATURE, DISABLED))
|
||||
mupd->ExampleFeature = false;
|
||||
}
|
||||
```
|
||||
|
@ -1,177 +0,0 @@
|
||||
# Acer G43T-AM3
|
||||
|
||||
The Acer G43T-AM3 is a microATX-sized desktop board. It was used for the
|
||||
Acer models Aspire M3800, Aspire M5800 and possibly more.
|
||||
|
||||
## Technology
|
||||
|
||||
```eval_rst
|
||||
+------------------+--------------------------------------------------+
|
||||
| Northbridge | Intel G43 (called x4x in coreboot code) |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Southbridge | Intel ICH10R (called i82801jx in coreboot code) |
|
||||
+------------------+--------------------------------------------------+
|
||||
| CPU socket | LGA 775 |
|
||||
+------------------+--------------------------------------------------+
|
||||
| RAM | 4 x DDR3-1066 |
|
||||
+------------------+--------------------------------------------------+
|
||||
| SuperIO | ITE IT8720F |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Audio | Realtek ALC888S |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Network | Intel 82567V-2 Gigabit Ethernet |
|
||||
+------------------+--------------------------------------------------+
|
||||
```
|
||||
|
||||
There is no serial port. Serial console output is possible by soldering
|
||||
to a point at the corresponding Super I/O pin and patching the
|
||||
mainboard-specific code accordingly.
|
||||
|
||||
## Status
|
||||
|
||||
### Working
|
||||
|
||||
Tests were done with SeaBIOS 1.14.0 and slackware64-live from 2019-07-12
|
||||
(linux-4.19.50).
|
||||
|
||||
+ Intel Core 2 processors at up to FSB 1333
|
||||
+ All four DIMM slots at 1066 MHz (tested 2x2GB + 2x4GB)
|
||||
+ Integrated graphics (libgfxinit)
|
||||
+ HDMI and VGA ports
|
||||
+ Both PCI slots
|
||||
+ Both PCI-e slots
|
||||
+ USB (8 internal, 4 external)
|
||||
+ All six SATA ports
|
||||
+ Onboard Ethernet
|
||||
+ Onboard sound card with output on the rear stereo connector
|
||||
+ PS/2 mouse and keyboard
|
||||
+ With SeaBIOS, use CONFIG_SEABIOS_PS2_TIMEOUT, tested: 500
|
||||
+ With FILO it works without further settings
|
||||
+ Temperature readings from the Super I/O (including the CPU temperature
|
||||
via PECI)
|
||||
+ Super I/O EC automatic fan control
|
||||
+ S3 suspend/resume
|
||||
+ Poweroff
|
||||
|
||||
### Not working
|
||||
|
||||
+ DDR3 memory with 512Mx8 chips (G43 limitation)
|
||||
+ 4x4GB of DDR3 memory (works, but showed a single bit error within one
|
||||
pass of Memtest86+ 5.01)
|
||||
+ Super I/O voltage reading conversions
|
||||
|
||||
### Untested
|
||||
|
||||
+ Other audio jacks or the front panel header
|
||||
+ S/PDIF output
|
||||
+ On-board Firewire
|
||||
+ Wake-on-LAN
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
```eval_rst
|
||||
+-------------------+---------------------+
|
||||
| Type | Value |
|
||||
+===================+=====================+
|
||||
| Socketed flash | No |
|
||||
+-------------------+---------------------+
|
||||
| Model | Macronix MX25L1605D |
|
||||
+-------------------+---------------------+
|
||||
| Size | 2 MiB |
|
||||
+-------------------+---------------------+
|
||||
| Package | 8-Pin SOP |
|
||||
+-------------------+---------------------+
|
||||
| Write protection | No |
|
||||
+-------------------+---------------------+
|
||||
| Dual BIOS feature | No |
|
||||
+-------------------+---------------------+
|
||||
| Internal flashing | Yes |
|
||||
+-------------------+---------------------+
|
||||
```
|
||||
|
||||
The flash is divided into the following regions, as obtained with
|
||||
`ifdtool -f rom.layout backup.rom`:
|
||||
```
|
||||
00000000:00001fff fd
|
||||
00100000:001fffff bios
|
||||
00006000:000fffff me
|
||||
00002000:00005fff gbe
|
||||
```
|
||||
|
||||
In general, flashing is possible internally and from an external header. It
|
||||
might be necessary to specify the chip type; `MX25L1605D/MX25L1608D/MX25L1673E`
|
||||
is the correct one, not `MX25L1605`.
|
||||
|
||||
### Internal flashing
|
||||
|
||||
Internal access to the flash chip is unrestricted. When installing coreboot,
|
||||
only the BIOS region should be updated by passing the `--ifd` and `-i bios`
|
||||
parameters to flashrom. A full backup is advisable.
|
||||
|
||||
Here is an example:
|
||||
|
||||
```
|
||||
$ sudo flashrom \
|
||||
-p internal \
|
||||
-c "MX25L1605D/MX25L1608D/MX25L1673E" \
|
||||
-r backup.rom
|
||||
$ sudo flashrom \
|
||||
-p internal \
|
||||
-c "MX25L1605D/MX25L1608D/MX25L1673E" \
|
||||
--ifd -i bios \
|
||||
-w coreboot.rom
|
||||
```
|
||||
|
||||
```eval_rst
|
||||
In addition to the information here, please see the
|
||||
:doc:`../../tutorial/flashing_firmware/index`.
|
||||
```
|
||||
|
||||
### External flashing
|
||||
|
||||
The SPI flash chip on this board can be flashed externally through the
|
||||
SPI_ROM1 header while the board is off and disconnected from power. There
|
||||
seems to be a diode that prevents the external programmer from powering the
|
||||
whole board.
|
||||
|
||||
The signal assignment on the header is identical to the pinout of the flash
|
||||
chip. The pinout diagram below is valid when the PCI slots are on the left
|
||||
and the CPU is on the right. Note that HOLD# and WP# must be pulled high
|
||||
(to VCC) to be able to flash the chip.
|
||||
|
||||
+---+---+
|
||||
SPI_CSn <- | x | x | -> VCC
|
||||
+---+---+
|
||||
SPI_MISO <- | x | x | -> HOLDn
|
||||
+---+---+
|
||||
WPn <- | x | x | -> SPI_CLK
|
||||
+---+---+
|
||||
GND <- | x | x | -> SPI_MOSI
|
||||
+---+---+
|
||||
|
||||
## Intel Management Engine
|
||||
|
||||
The Intel Management Engine (ME) can be disabled by setting the ME_DISABLE
|
||||
jumper on the board. It pulls GPIO33 on the ICH10 low, causing the "Flash
|
||||
Descriptor Security Override Strap" to be set. This disables the ME and also
|
||||
disables any read/write restrictions to the flash chip that may be set in the
|
||||
Intel Flash Descriptor (IFD) (none on this board). Note that changing this
|
||||
jumper only comes into effect when starting the board from a shutdown or
|
||||
suspend state, not during normal operation.
|
||||
|
||||
To completely remove the ME blob from the flash image and to decrease the size
|
||||
of the ME region, thus increasing the size of the BIOS region, `me_cleaner` can
|
||||
be used with the `-t`, `-r` and `-S` options.
|
||||
|
||||
## Fan control
|
||||
|
||||
There are two fan connectors that can be controlled individually. CPU_FAN
|
||||
can only control a fan by a PWM signal and SYS_FAN only by voltage. See
|
||||
the mainboard's `devicetree.cb` file for how coreboot configures the Super
|
||||
I/O to control the fans.
|
||||
|
||||
## Variants
|
||||
|
||||
Various similar mainboards exist, like the Acer Q45T-AM. During a discussion
|
||||
in #coreboot on IRC, ECS was suspected to be the original designer of this
|
||||
series of mainboards. They have similar models such as the ECS G43T-WM.
|
@ -1,80 +0,0 @@
|
||||
# Pademelon board
|
||||
|
||||
## Specs (with Merlin Falcon SOC)
|
||||
|
||||
* Two 260-pin DDR4 SO-DIMM slots, 1.2V DDR4-1333/1600/1866/2133 SO-DIMMs
|
||||
Supports 4GB, 8GB and 16GB DDR4 unbuffered ECC (Merlin Falcon)SO-DIMMs
|
||||
* Can use Prairie Falcon, Brown Falcon, Merlin Falcon, though coreboot
|
||||
code is specific for Merlin Falcon SOC. Some specs will change if not
|
||||
using Merlin Falcon.
|
||||
* One half mini PCI-Express slot on back side of mainboard
|
||||
* One PCI Express® 3.0 x8 slot
|
||||
* Two SATA3 ports with 6Gb/s data transfer rate
|
||||
* Two USB 2.0 ports at rear panel
|
||||
* Two USB 3.0 ports at rear panel
|
||||
* Dual Gigabit Ethernet from Realtek RTL8111F Gigabit controller
|
||||
* 6-channel High-Definition audio from Realtek ALC662 codec
|
||||
* One soldered down SPI flash with dediprog header
|
||||
|
||||
## Mainboard
|
||||
|
||||
![mainboard][pademelon]
|
||||
|
||||
Three items are marked in this picture
|
||||
1. dediprog header
|
||||
2. memory dimms, address 0xA0 and 0xA4
|
||||
3. SATA cables connected to motherboard
|
||||
|
||||
## Back panel
|
||||
|
||||
![back panel][pademelon_io]
|
||||
|
||||
* The lower serial port is UART A (debug serial)
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
```eval_rst
|
||||
+---------------------+--------------------+
|
||||
| Type | Value |
|
||||
+=====================+====================+
|
||||
| Socketed flash | no |
|
||||
+---------------------+--------------------+
|
||||
| Model | Macronix MX256435E |
|
||||
+---------------------+--------------------+
|
||||
| Size | 8 MiB |
|
||||
+---------------------+--------------------+
|
||||
| Flash programming | dediprog header |
|
||||
+---------------------+--------------------+
|
||||
| Package | SOIC-8 |
|
||||
+---------------------+--------------------+
|
||||
| Write protection | No |
|
||||
+---------------------+--------------------+
|
||||
```
|
||||
|
||||
## Technology
|
||||
|
||||
```eval_rst
|
||||
+---------------+------------------------------+
|
||||
| Fan control | Using fintek F81803A |
|
||||
+---------------+------------------------------+
|
||||
| CPU | Merlin Falcon (see reference)|
|
||||
+---------------+------------------------------+
|
||||
```
|
||||
|
||||
## Description of pictures within this document
|
||||
|
||||
```eval_rst
|
||||
+----------------------------+----------------------------------------+
|
||||
|pademelon.jpg | Motherboard with components identified |
|
||||
+----------------------------+----------------------------------------+
|
||||
|pademelon_io.jpg | Back panel picture |
|
||||
+----------------------------+----------------------------------------+
|
||||
```
|
||||
|
||||
## Reference
|
||||
|
||||
[Merlin Falcon BKDG][merlinfalcon]
|
||||
|
||||
[merlinfalcon]: ../../../soc/amd/family15h.md
|
||||
[pademelon]: pademelon.jpg
|
||||
[pademelon_io]: pademelon_io.jpg
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
80
Documentation/mainboard/amd/padmelon/padmelon.md
Normal file
@ -0,0 +1,80 @@
|
||||
# Padmelon board
|
||||
|
||||
## Specs (with Merlin Falcon SOC)
|
||||
|
||||
* Two 260-pin DDR4 SO-DIMM slots, 1.2V DDR4-1333/1600/1866/2133 SO-DIMMs
|
||||
Supports 4GB, 8GB and 16GB DDR4 unbuffered ECC (Merlin Falcon)SO-DIMMs
|
||||
* Can use Prairie Falcon, Brown Falcon, Merlin Falcon, though coreboot
|
||||
code is specific for Merlin Falcon SOC. Some specs will change if not
|
||||
using Merlin Falcon.
|
||||
* One half mini PCI-Express slot on back side of mainboard
|
||||
* One PCI Express® 3.0 x8 slot
|
||||
* Two SATA3 ports with 6Gb/s data transfer rate
|
||||
* Two USB 2.0 ports at rear panel
|
||||
* Two USB 3.0 ports at rear panel
|
||||
* Dual Gigabit Ethernet from Realtek RTL8111F Gigabit controller
|
||||
* 6-channel High-Definition audio from Realtek ALC662 codec
|
||||
* One soldered down SPI flash with dediprog header
|
||||
|
||||
## Mainboard
|
||||
|
||||
![mainboard][padmelon]
|
||||
|
||||
Three items are marked in this picture
|
||||
1. dediprog header
|
||||
2. memory dimms, address 0xA0 and 0xA4
|
||||
3. SATA cables connected to motherboard
|
||||
|
||||
## Back panel
|
||||
|
||||
![back panel][padmelon_io]
|
||||
|
||||
* The lower serial port is UART A (debug serial)
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
```eval_rst
|
||||
+---------------------+--------------------+
|
||||
| Type | Value |
|
||||
+=====================+====================+
|
||||
| Socketed flash | no |
|
||||
+---------------------+--------------------+
|
||||
| Model | Macronix MX256435E |
|
||||
+---------------------+--------------------+
|
||||
| Size | 8 MiB |
|
||||
+---------------------+--------------------+
|
||||
| Flash programming | dediprog header |
|
||||
+---------------------+--------------------+
|
||||
| Package | SOIC-8 |
|
||||
+---------------------+--------------------+
|
||||
| Write protection | No |
|
||||
+---------------------+--------------------+
|
||||
```
|
||||
|
||||
## Technology
|
||||
|
||||
```eval_rst
|
||||
+---------------+------------------------------+
|
||||
| Fan control | Using fintek F81803A |
|
||||
+---------------+------------------------------+
|
||||
| CPU | Merlin Falcon (see reference)|
|
||||
+---------------+------------------------------+
|
||||
```
|
||||
|
||||
## Description of pictures within this document
|
||||
|
||||
```eval_rst
|
||||
+----------------------------+----------------------------------------+
|
||||
|padmelon.jpg | Motherboard with components identified |
|
||||
+----------------------------+----------------------------------------+
|
||||
|padmelon_io.jpg | Back panel picture |
|
||||
+----------------------------+----------------------------------------+
|
||||
```
|
||||
|
||||
## Reference
|
||||
|
||||
[Merlin Falcon BKDG][merlinfalcon]
|
||||
|
||||
[merlinfalcon]: ../../../soc/amd/family15h.md
|
||||
[padmelon]: padmelon.jpg
|
||||
[padmelon_io]: padmelon_io.jpg
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
@ -58,7 +58,7 @@ The main SPI flash can be accessed using [flashrom]. By default, only
|
||||
the BIOS region of the flash is writable. If you wish to change any
|
||||
other region, such as the Management Engine or firmware descriptor, then
|
||||
an external programmer is required (unless you find a clever way around
|
||||
the flash protection). More information about this [here](../../tutorial/flashing_firmware/index.md).
|
||||
the flash protection). More information about this [here](../../flash_tutorial/index.md).
|
||||
|
||||
### External programming
|
||||
|
||||
@ -131,4 +131,4 @@ facing towards the bottom of the board.
|
||||
[ASRock H110M-DVS]: https://www.asrock.com/mb/Intel/H110M-DVS%20R2.0/
|
||||
[MX25L6473E]: http://www.macronix.com/Lists/Datasheet/Attachments/7380/MX25L6473E,%203V,%2064Mb,%20v1.4.pdf
|
||||
[flashrom]: https://flashrom.org/Flashrom
|
||||
[H110M-DVS manual]: https://web.archive.org/web/20191023230631/http://asrock.pc.cdn.bitgravity.com/Manual/H110M-DVS%20R2.0.pdf
|
||||
[H110M-DVS manual]: http://asrock.pc.cdn.bitgravity.com/Manual/H110M-DVS%20R2.0.pdf
|
||||
|
@ -1,176 +0,0 @@
|
||||
# ASRock H77 Pro4-M
|
||||
|
||||
The ASRock H77 Pro4-M is a microATX-sized desktop board for Intel Sandy
|
||||
Bridge and Ivy Bridge CPUs.
|
||||
|
||||
## Technology
|
||||
|
||||
```eval_rst
|
||||
+------------------+--------------------------------------------------+
|
||||
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Southbridge | Intel H77 (bd82x6x) |
|
||||
+------------------+--------------------------------------------------+
|
||||
| CPU socket | LGA 1155 |
|
||||
+------------------+--------------------------------------------------+
|
||||
| RAM | 4 x DDR3-1600 |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Super I/O | Nuvoton NCT6776 |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Audio | Realtek ALC892 |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Network | Realtek RTL8111E |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Serial | Internal header (RS-232) |
|
||||
+------------------+--------------------------------------------------+
|
||||
```
|
||||
|
||||
## Status
|
||||
|
||||
Tests were done with SeaBIOS 1.14.0 and slackware64-live from 2019-07-12
|
||||
(linux-4.19.50).
|
||||
|
||||
### Working
|
||||
|
||||
- Sandy Bridge and Ivy Bridge CPUs (tested: i5-2500, Pentium G2120)
|
||||
- Native RAM initialization with four DIMMs
|
||||
- PS/2 combined port (mouse or keyboard)
|
||||
- Integrated GPU by libgfxinit on all monitor ports (DVI-D, HDMI, D-Sub)
|
||||
- PCIe graphics in the PEG slot
|
||||
- All three additional PCIe slots
|
||||
- All rear and internal USB2 ports
|
||||
- All rear and internal USB3 ports
|
||||
- All six SATA ports from the PCH (two 6 Gb/s, four 3 Gb/s)
|
||||
- All two SATA ports from the ASM1061 PCIe-to-SATA bridge (6 Gb/s)
|
||||
- Rear eSATA connector (multiplexed with one ASM1061 port)
|
||||
- Gigabit Ethernet
|
||||
- Console output on the serial port
|
||||
- EDK II (MrChromebox's fork, at origin/uefipayload_202207) to boot
|
||||
Windows 10 (22H2) and Linux (5.19.17) via GRUB 2
|
||||
- SeaBIOS 1.16.1 to boot Windows 10 (needs VGA BIOS) and Linux via
|
||||
extlinux
|
||||
- Internal flashing with flashrom-1.2, see
|
||||
[Internal Programming](#internal-programming)
|
||||
- External flashing with flashrom-1.2 and a Raspberry Pi 1
|
||||
- S3 suspend/resume from either Linux or Windows 10
|
||||
- Poweroff
|
||||
|
||||
### Not working
|
||||
|
||||
- Booting from the two SATA ports provided by the ASM1061
|
||||
- Automatic fan control with the NCT6776D Super I/O
|
||||
|
||||
### Untested
|
||||
|
||||
- EHCI debug
|
||||
- S/PDIF audio
|
||||
- Other audio jacks than the green one, and the front panel header
|
||||
- Parallel port
|
||||
- Infrared/CIR
|
||||
- Wakeup from anything but the power button
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
```eval_rst
|
||||
+---------------------+------------+
|
||||
| Type | Value |
|
||||
+=====================+============+
|
||||
| Socketed flash | yes |
|
||||
+---------------------+------------+
|
||||
| Model | W25Q64.V |
|
||||
+---------------------+------------+
|
||||
| Size | 8 MiB |
|
||||
+---------------------+------------+
|
||||
| Package | DIP-8 |
|
||||
+---------------------+------------+
|
||||
| Write protection | no |
|
||||
+---------------------+------------+
|
||||
| Dual BIOS feature | no |
|
||||
+---------------------+------------+
|
||||
| Internal flashing | yes |
|
||||
+---------------------+------------+
|
||||
```
|
||||
|
||||
The flash is divided into the following regions, as obtained with
|
||||
`ifdtool -f rom.layout backup.rom`:
|
||||
```
|
||||
00000000:00000fff fd
|
||||
00200000:007fffff bios
|
||||
00001000:001fffff me
|
||||
```
|
||||
|
||||
### Internal programming
|
||||
|
||||
The main SPI flash can be accessed using flashrom. By default, only
|
||||
the BIOS region of the flash is writable. If you wish to change any
|
||||
other region (Management Engine or flash descriptor), then an external
|
||||
programmer is required.
|
||||
|
||||
The following command may be used to flash coreboot:
|
||||
|
||||
```
|
||||
$ sudo flashrom --noverify-all --ifd -i bios -p internal -w coreboot.rom
|
||||
```
|
||||
|
||||
The use of `--noverify-all` is required since the Management Engine
|
||||
region is not readable even by the host.
|
||||
|
||||
```eval_rst
|
||||
In addition to the information here, please see the
|
||||
:doc:`../../tutorial/flashing_firmware/index`.
|
||||
```
|
||||
|
||||
## Hardware monitoring and fan control
|
||||
|
||||
There are two fan headers for the CPU cooler, CPU_FAN1 and CPU_FAN2. They share
|
||||
a single fan tachometer input on the Super I/O while some dedicated logic
|
||||
selects which one is allowed to reach it. Two GPIO pins on the Super I/O are
|
||||
used to control that logic. The firmware has to set them; coreboot selects
|
||||
CPU_FAN1 by default, but the user can change that setting if it was built with
|
||||
CONFIG_USE_OPTION_TABLE:
|
||||
|
||||
```
|
||||
$ sudo nvramtool -e cpu_fan_header
|
||||
[..]
|
||||
$ sudo nvramtool -w cpu_fan_header=CPU_FAN2
|
||||
$ sudo nvramtool -w cpu_fan_header=None
|
||||
$ sudo nvramtool -w cpu_fan_header=Both
|
||||
```
|
||||
|
||||
The setting will take effect after a reboot. Selecting and connecting both fan
|
||||
headers is possible but the Super I/O will report wrong fan speeds.
|
||||
|
||||
Currently there is no automatic, OS-independent fan control, but a software
|
||||
like `fancontrol` from the lm-sensors package can be used instead.
|
||||
|
||||
## Serial port header
|
||||
|
||||
Serial port 1, provided by the Super I/O, is exposed on a pin header. The
|
||||
RS-232 signals are assigned to the header so that its pin numbers map directly
|
||||
to the pin numbers of a DE-9 connector. If your serial port doesn't seem to
|
||||
work, check if your bracket expects a different assignment. Also don't try to
|
||||
connect it directly to a device that operates at TTL levels - it would need a
|
||||
level converter like a MAX232.
|
||||
|
||||
Here is a top view of the serial port header found on this board:
|
||||
|
||||
+---+---+
|
||||
N/C | | 9 | RI -> pin 9
|
||||
+---+---+
|
||||
Pin 8 <- CTS | 8 | 7 | RTS -> pin 7
|
||||
+---+---+
|
||||
Pin 6 <- DSR | 6 | 5 | GND -> pin 5
|
||||
+---+---+
|
||||
Pin 4 <- DTR | 4 | 3 | TxD -> pin 3
|
||||
+---+---+
|
||||
Pin 2 <- RxD | 2 | 1 | DCD -> pin 1
|
||||
+---+---+
|
||||
|
||||
## eSATA
|
||||
|
||||
The eSATA port on the rear I/O panel and the internal connector SATA3_A1 share
|
||||
the same controller port on the ASM1061. Attaching an eSATA drive causes a
|
||||
multiplexer chip to disconnect the internal port from the SATA controller and
|
||||
connect the eSATA port instead. This can be seen on GP23 of the Super I/O
|
||||
GPIOs: it is '0' when something is connected to the eSATA port and '1'
|
||||
otherwise.
|
@ -130,4 +130,4 @@ Please also see :doc:`../../northbridge/intel/haswell/known-issues`.
|
||||
[ASRock H81M-HDS]: https://www.asrock.com/mb/Intel/H81M-HDS/
|
||||
[W25Q32FV]: https://www.winbond.com/resource-files/w25q32fv%20revi%2010202015.pdf
|
||||
[flashrom]: https://flashrom.org/Flashrom
|
||||
[Board manual]: https://web.archive.org/web/20191231093418/http://asrock.pc.cdn.bitgravity.com/Manual/H81M-HDS.pdf
|
||||
[Board manual]: http://asrock.pc.cdn.bitgravity.com/Manual/H81M-HDS.pdf
|
||||
|
@ -190,9 +190,9 @@ This version is usable for all the GPUs.
|
||||
- [Board manual]
|
||||
- Flash chip datasheet [W25Q64FV]
|
||||
|
||||
[ASUS F2A85-M]: https://web.archive.org/web/20160320065008/http://www.asus.com/Motherboards/F2A85M/
|
||||
[Board manual]: https://web.archive.org/web/20211028063105/https://dlcdnets.asus.com/pub/ASUS/mb/SocketFM2/F2A85-M/E8005_F2A85-M.pdf
|
||||
[ASUS F2A85-M]: https://www.asus.com/Motherboards/F2A85M/
|
||||
[Board manual]: https://dlcdnets.asus.com/pub/ASUS/mb/SocketFM2/F2A85-M/E8005_F2A85-M.pdf
|
||||
[flashrom]: https://flashrom.org/Flashrom
|
||||
[Piledriver]: https://en.wikipedia.org/wiki/Piledriver_%28microarchitecture%29#APU_lines
|
||||
[TeraScale 3]: https://en.wikipedia.org/wiki/TeraScale_%28microarchitecture%29#TeraScale_3
|
||||
[W25Q64FV]: https://web.archive.org/web/20220127184640/https://www.winbond.com/resource-files/w25q64fv%20revs%2007182017.pdf
|
||||
[W25Q64FV]: https://www.winbond.com/resource-files/w25q64fv%20revs%2007182017.pdf
|
||||
|
@ -1,108 +0,0 @@
|
||||
# ASUS P2B-LS
|
||||
|
||||
This page describes how to run coreboot on the ASUS P2B-LS mainboard.
|
||||
|
||||
## Variants
|
||||
|
||||
- P2B-LS
|
||||
- P2B-L (Same circuit board with SCSI components omitted)
|
||||
- P2B-S (Same circuit board with ethernet components omitted)
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
```eval_rst
|
||||
+---------------------+---------------------------+
|
||||
| Type | Value |
|
||||
+=====================+===========================+
|
||||
| Model | SST 39SF020A (or similar) |
|
||||
+---------------------+---------------------------+
|
||||
| Protocol | Parallel |
|
||||
+---------------------+---------------------------+
|
||||
| Size | 256 KiB |
|
||||
+---------------------+---------------------------+
|
||||
| Package | DIP-32 |
|
||||
+---------------------+---------------------------+
|
||||
| Socketed | yes |
|
||||
+---------------------+---------------------------+
|
||||
| Write protection | no |
|
||||
+---------------------+---------------------------+
|
||||
| Dual BIOS feature | no |
|
||||
+---------------------+---------------------------+
|
||||
| Internal flashing | yes |
|
||||
+---------------------+---------------------------+
|
||||
```
|
||||
|
||||
[flashrom] works out of the box since 0.9.2.
|
||||
Because of deficiency in vendor firmware, user needs to override the laptop
|
||||
warning as prompted. Once coreboot is in place there will be no further issue.
|
||||
|
||||
### CPU microcode considerations
|
||||
|
||||
By default, this board includes microcode updates for 5 families of Intel CPUs
|
||||
because of the wide variety of CPUs the board supports, directly or with an
|
||||
adapter. These take up a third of the total flash space leaving only 20kB free
|
||||
in the final cbfs image. It may be necessary to build a custom microcode update
|
||||
file by manually concatenating files in 3rdparty/intel-microcode/intel-ucode
|
||||
for only CPU models that the board will actually be run with.
|
||||
|
||||
## Working
|
||||
|
||||
- Slot 1 and Socket 370 CPUs and their L1/L2 caches
|
||||
- PS/2 keyboard with SeaBIOS (See [Known issues])
|
||||
- IDE hard drives
|
||||
- Ethernet (-LS, -L; Intel 82558)
|
||||
- SCSI (-LS, -S; Adaptec AIC7890)
|
||||
- USB
|
||||
- ISA add-on cards
|
||||
- PCI add-on cards
|
||||
- AGP graphics card
|
||||
- Floppy
|
||||
- Serial ports 1 and 2
|
||||
- Reboot
|
||||
- Soft off
|
||||
|
||||
## Known issues
|
||||
|
||||
- PS/2 keyboard may not be usable until Linux has completely booted.
|
||||
With SeaBIOS as payload, setting keyboard initialization timeout to
|
||||
500ms may fix the issue.
|
||||
|
||||
- i440BX does not support 256Mbit RAM modules. If installed, coreboot
|
||||
will attempt to initialize them at half their capacity anyway
|
||||
whereas vendor firmware will not boot at all.
|
||||
|
||||
- ECC memory can be used, but ECC support is still pending.
|
||||
|
||||
- Termination is enabled for all SCSI ports (if equipped). Support to
|
||||
disable termination is pending. Note that the SCSI-68 port is
|
||||
always terminated, even with vendor firmware.
|
||||
|
||||
## Untested
|
||||
|
||||
- Parallel port
|
||||
- EDO memory
|
||||
- Infrared
|
||||
- PC speaker
|
||||
|
||||
## Not working
|
||||
|
||||
- S3 suspend to RAM
|
||||
|
||||
## Technology
|
||||
|
||||
```eval_rst
|
||||
+------------------+--------------------------------------------------+
|
||||
| Northbridge | Intel I440BX |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Southbridge | i82371eb |
|
||||
+------------------+--------------------------------------------------+
|
||||
| CPU | P6 family for Slot 1 and Socket 370 |
|
||||
| | (all models from model_63x to model_6bx) |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Super I/O | winbond/w83977tf |
|
||||
+------------------+--------------------------------------------------+
|
||||
```
|
||||
|
||||
## Extra resources
|
||||
|
||||
[flashrom]: https://flashrom.org/Flashrom
|
@ -1,106 +0,0 @@
|
||||
# ASUS P3B-F
|
||||
|
||||
This page describes how to run coreboot on the ASUS P3B-F mainboard.
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
```eval_rst
|
||||
+---------------------+---------------------------+
|
||||
| Type | Value |
|
||||
+=====================+===========================+
|
||||
| Model | SST 39SF020A (or similar) |
|
||||
+---------------------+---------------------------+
|
||||
| Protocol | Parallel |
|
||||
+---------------------+---------------------------+
|
||||
| Size | 256 KiB |
|
||||
+---------------------+---------------------------+
|
||||
| Package | DIP-32 |
|
||||
+---------------------+---------------------------+
|
||||
| Socketed | yes |
|
||||
+---------------------+---------------------------+
|
||||
| Write protection | See below |
|
||||
+---------------------+---------------------------+
|
||||
| Internal flashing | yes |
|
||||
+---------------------+---------------------------+
|
||||
```
|
||||
|
||||
flashrom supports this mainboard since commit c7e9a6e15153684672bbadd1fc6baed8247ba0f6.
|
||||
If you are using older versions of flashrom, below has to be done (with ACPI disabled!)
|
||||
before flashrom can detect the flash chip:
|
||||
|
||||
```bash
|
||||
# rmmod w83781d
|
||||
# modprobe i2c-dev
|
||||
# i2cset 0 0x48 0x80 0x80
|
||||
```
|
||||
|
||||
Upon power up, flash chip is inaccessible until flashrom has been run once.
|
||||
Since flashrom does not support reversing board enabling steps,
|
||||
once it detects the flash chip, there will be no write protection until
|
||||
the next power cycle.
|
||||
|
||||
### CPU microcode considerations
|
||||
|
||||
By default, this board includes microcode updates for 5 families of Intel CPUs
|
||||
because of the wide variety of CPUs the board supports, directly or with an
|
||||
adapter. These take up a third of the total flash space leaving only 20kB free
|
||||
in the final cbfs image. It may be necessary to build a custom microcode update
|
||||
file by manually concatenating files in 3rdparty/intel-microcode/intel-ucode
|
||||
for only CPU models that the board will actually be run with.
|
||||
|
||||
## Working
|
||||
|
||||
- Slot 1 and Socket 370 CPUs and their L1/L2 caches
|
||||
- PS/2 keyboard with SeaBIOS (See [Known issues])
|
||||
- IDE hard drives
|
||||
- USB
|
||||
- PCI add-on cards
|
||||
- AGP graphics cards
|
||||
- Serial ports 1 and 2
|
||||
- Reboot
|
||||
|
||||
## Known issues
|
||||
|
||||
- PS/2 keyboard may not be usable until Linux has completely booted. With SeaBIOS
|
||||
as payload, setting keyboard initialization timeout to 2500ms may help.
|
||||
|
||||
- The coreboot+SeaBIOS combination boots so quickly some IDE hard drives are not
|
||||
yet ready by the time SeaBIOS attempts to boot from them.
|
||||
|
||||
- i440BX does not support 256Mbit RAM modules. If installed, coreboot
|
||||
will attempt to initialize them at half their capacity anyway
|
||||
whereas vendor firmware will not boot at all.
|
||||
|
||||
- ECC memory can be used, but ECC support is still pending.
|
||||
|
||||
## Untested
|
||||
|
||||
- Floppy
|
||||
- Parallel port
|
||||
- EDO memory
|
||||
- ECC memory
|
||||
- Infrared
|
||||
- PC speaker
|
||||
|
||||
## Not working
|
||||
|
||||
- ACPI (Support is currently [under gerrit review](https://review.coreboot.org/c/coreboot/+/41098))
|
||||
|
||||
## Technology
|
||||
|
||||
```eval_rst
|
||||
+------------------+--------------------------------------------------+
|
||||
| Northbridge | Intel I440BX |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Southbridge | i82371eb |
|
||||
+------------------+--------------------------------------------------+
|
||||
| CPU | P6 family for Slot 1 and Socket 370 |
|
||||
| | (all models from model_63x to model_6bx) |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Super I/O | winbond/w83977tf |
|
||||
+------------------+--------------------------------------------------+
|
||||
```
|
||||
|
||||
## Extra resources
|
||||
|
||||
[flashrom]: https://flashrom.org/Flashrom
|
@ -130,5 +130,5 @@ You can also control the CPU fan with similar rules:
|
||||
echo 2000 >/sys/class/hwmon/hwmon2/pwm1_tolerance
|
||||
|
||||
[ASUS P5Q]: https://www.asus.com/Motherboards/P5Q
|
||||
[this guide]: ../../tutorial/flashing_firmware/int_flashrom.md
|
||||
[this guide]: https://doc.coreboot.org/flash_tutorial/int_flashrom.html
|
||||
[kernel docs]: https://www.kernel.org/doc/Documentation/hwmon/w83627ehf.rst
|
||||
|
@ -106,6 +106,6 @@ region is not readable even by the host.
|
||||
- [Flash chip datasheet][W25Q32BV]
|
||||
|
||||
[ASUS P8H61-M LX]: https://www.asus.com/Motherboards/P8H61M_LX/
|
||||
[W25Q32BV]: https://web.archive.org/web/20211002141814/https://www.winbond.com/resource-files/w25q32bv_revi_100413_wo_automotive.pdf
|
||||
[W25Q32BV]: https://www.winbond.com/resource-files/w25q32bv_revi_100413_wo_automotive.pdf
|
||||
[flashrom]: https://flashrom.org/Flashrom
|
||||
[Board manual]: http://dlcdnet.asus.com/pub/ASUS/mb/LGA1155/P8H61_M_LX/E6803_P8H61-M_LX.zip
|
||||
|
@ -1,137 +0,0 @@
|
||||
# ASUS P8Z77-M
|
||||
|
||||
This page describes how to run coreboot on the [ASUS P8Z77-M].
|
||||
|
||||
## Flashing coreboot
|
||||
|
||||
```eval_rst
|
||||
+---------------------+----------------+
|
||||
| Type | Value |
|
||||
+=====================+================+
|
||||
| Model | W25Q64FVA1Q |
|
||||
+---------------------+----------------+
|
||||
| Size | 8 MiB |
|
||||
+---------------------+----------------+
|
||||
| Package | DIP-8 |
|
||||
+---------------------+----------------+
|
||||
| Socketed | yes |
|
||||
+---------------------+----------------+
|
||||
| Write protection | yes |
|
||||
+---------------------+----------------+
|
||||
| Dual BIOS feature | no |
|
||||
+---------------------+----------------+
|
||||
| Internal flashing | yes |
|
||||
+---------------------+----------------+
|
||||
```
|
||||
|
||||
The flash chip is located between the blue SATA ports.
|
||||
|
||||
The main SPI flash cannot be written internally because Asus disables BIOSWE and
|
||||
enables ``BLE/SMM_BWP`` flags in ``BIOS_CNTL`` for their latest bioses.
|
||||
To install coreboot for the first time, the flash chip must be removed and
|
||||
flashed with an external programmer; flashing in-circuit doesn't work.
|
||||
The flash chip is socketed, so it's easy to remove and reflash.
|
||||
|
||||
## Working
|
||||
|
||||
- All USB2 ports (mouse, keyboard and thumb drive)
|
||||
- USB3 ports on rear (Boots SystemRescue 6.0.3 off a Kingston DataTraveler G4 8GB)
|
||||
- Gigabit Ethernet (RTL8111F)
|
||||
- SATA3, SATA2 (all ports, hot-swap not tested)
|
||||
(Blue SATA2) (Blue SATA2) (White SATA3)
|
||||
port 5 port 3 port 1
|
||||
port 6 port 4 port 2
|
||||
|
||||
- CPU Temp sensors and hardware monitor (some values don't make sense)
|
||||
- Native and MRC memory initialization
|
||||
(please see [Native raminit compatibility] and [MRC memory compatibility])
|
||||
|
||||
- Integrated graphics with both libgfxinit and the Intel Video BIOS OpROM
|
||||
(VGA/DVI-D/HDMI tested and working)
|
||||
- 16x PCIe GPU in PCIe-16x/4x slots (tested using nVidia Quadro 600 under SystemRescue 6.0.3
|
||||
(Arch based))
|
||||
- Serial port
|
||||
- PCI slot
|
||||
Rockwell HSF 56k PCI modem, Sound Blaster Live! CT4780 (cards detected, not function tested)
|
||||
Promise SATA150 TX2plus (R/W OK to connected IDE hard drive, OpRom loaded, cannot boot from
|
||||
SeaBIOS)
|
||||
- S3 suspend from Linux
|
||||
- 2-channel analog audio (WAV playback by mplayer via back panel line out port)
|
||||
- Windows 10 with libgfxinit high resolution framebuffer and VBT
|
||||
|
||||
## Known issues
|
||||
|
||||
- If you use MRC raminit, the NVRAM variable gfx_uma_size may be ignored as IGP's UMA could
|
||||
be reconfigured by the blob.
|
||||
|
||||
- If SeaBIOS is used for payload with libgfxinit, it must be brought in via coreboot's config.
|
||||
Otherwise integrated graphics would fail with a black screen.
|
||||
|
||||
- PCI POST card is not functional because the PCI bridge early init is not yet done.
|
||||
|
||||
- The black PCIEX16_2 slot, although can physically fit an x16, only has physical contacts for
|
||||
an x8, and is electrically an x4 only.
|
||||
|
||||
## Untested
|
||||
|
||||
- Wake-on-LAN
|
||||
- USB3 on header
|
||||
- TPM header
|
||||
- EHCI debugging (Debug port is on the 5-pin side of USB2_910 header)
|
||||
- HDMI and S/PDIF audio out
|
||||
|
||||
## Not working
|
||||
|
||||
- PS/2 keyboard or mouse
|
||||
- 4 and 6 channel analog audio out: Rear left and right audio is a muted
|
||||
copy of front left and right audio, and the other two channels are silent.
|
||||
|
||||
## Native (and MRC) raminit compatibility
|
||||
|
||||
- OCZ OCZ3G1600LVAM 2x2GB kit works at DDR3-1066 instead of DDR3-1600.
|
||||
|
||||
- GSkill F3-1600C9D-16GRSL 2x8GB SODIMM kit on adapter boots, but is highly unstable
|
||||
with obvious pattern of bit errors during memtest86+ runs.
|
||||
|
||||
- Samsung PC3-10600U 2x2GB kit works at full rated speed.
|
||||
|
||||
- Kingston KTH9600B-4G 2x4GB kit works at full rated speed.
|
||||
|
||||
## Extra onboard buttons
|
||||
|
||||
The board has two onboard buttons, and each has a related LED nearby.
|
||||
What controls the LEDs and what the buttons control are unknown,
|
||||
therefore they currently do nothing under coreboot.
|
||||
|
||||
- BIOS_FLBK
|
||||
OEM firmware uses this button to facilitate a simple update mechanism
|
||||
via a USB drive plugged into the bottom USB port of the USB/LAN stack.
|
||||
|
||||
- MemOK!
|
||||
OEM firmware uses this button for memory tuning related to overclocking.
|
||||
|
||||
## Technology
|
||||
|
||||
```eval_rst
|
||||
+------------------+--------------------------------------------------+
|
||||
| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Southbridge | bd82x6x |
|
||||
+------------------+--------------------------------------------------+
|
||||
| CPU | model_206ax |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Super I/O | Nuvoton NCT6779D |
|
||||
+------------------+--------------------------------------------------+
|
||||
| EC | None |
|
||||
+------------------+--------------------------------------------------+
|
||||
| Coprocessor | Intel Management Engine |
|
||||
+------------------+--------------------------------------------------+
|
||||
```
|
||||
|
||||
## Extra resources
|
||||
|
||||
- [Flash chip datasheet][W25Q64FVA1Q]
|
||||
|
||||
[ASUS P8Z77-M]: https://www.asus.com/Motherboards/P8Z77M/
|
||||
[W25Q64FVA1Q]: https://www.winbond.com/resource-files/w25q64fv%20revs%2007182017.pdf
|
||||
[flashrom]: https://flashrom.org/Flashrom
|
@ -37,7 +37,7 @@ easy to remove and reflash.
|
||||
|
||||
## Working
|
||||
|
||||
- PS/2 keyboard with SeaBIOS & edk2 (in Mint 18.3/19.1)
|
||||
- PS/2 keyboard with SeaBIOS & Tianocore (in Mint 18.3/19.1)
|
||||
|
||||
- Rear/front headphones connector audio & mic
|
||||
|
||||
@ -57,7 +57,7 @@ easy to remove and reflash.
|
||||
port 3 port 5 port 1 port 8
|
||||
port 4 port 6 port 2 port 7
|
||||
|
||||
- NVME SSD boot on PCIe-x16/x8/4x slot using edk2
|
||||
- NVME SSD boot on PCIe-x16/x8/4x slot using Tianocore
|
||||
(tested with M.2-to-PCIe adapter and a M.2 Samsung EVO 970 SSD)
|
||||
|
||||
- CPU Temp sensors (tested PSensor on linux + HWINFO64 on Win10)
|
||||
@ -89,7 +89,7 @@ easy to remove and reflash.
|
||||
- If you use the MRC.bin, the NVRAM variable gfx_uma_size may be ignored
|
||||
as IGP's UMA could be reconfigured by the blob
|
||||
|
||||
- Using edk2 + a PCIe GPU under Windows crashes with an
|
||||
- Using TianoCore + a PCIe GPU under Windows crashes with an
|
||||
ACPI_BIOS_ERROR fatal code, not sure why. Using just the IGP
|
||||
works perfectly
|
||||
|
||||
@ -105,9 +105,9 @@ easy to remove and reflash.
|
||||
|
||||
## Not working
|
||||
|
||||
- PS/2 keyboard in Win10 using edk2 (please see [Known issues])
|
||||
- PS/2 mouse using edk2
|
||||
- PCIe graphics card on Windows and edk2 (throws critical ACPI_BIOS_ERROR)
|
||||
- PS/2 keyboard in Win10 using Tianocore (please see [Known issues])
|
||||
- PS/2 mouse using Tianocore
|
||||
- PCIe graphics card on Windows and Tianocore (throws critical ACPI_BIOS_ERROR)
|
||||
|
||||
## Native raminit compatibility
|
||||
|
||||
|
@ -1,52 +0,0 @@
|
||||
# QEMU PPC64 emulator
|
||||
This page describes how to build and run coreboot for QEMU/PPC64.
|
||||
|
||||
## Building coreboot
|
||||
```bash
|
||||
make defconfig KBUILD_DEFCONFIG=configs/config.emulation_qemu_power9
|
||||
make
|
||||
```
|
||||
|
||||
This builds coreboot with no payload.
|
||||
|
||||
## Payloads
|
||||
You can configure ELF or `skiboot` payload via `make menuconfig`. In either case
|
||||
you might need to adjust "ROM chip size" and make it large enough to accommodate
|
||||
the payload (see how much space it needs in the error you get if it doesn't
|
||||
fit).
|
||||
|
||||
## Running coreboot in QEMU
|
||||
```bash
|
||||
qemu-system-ppc64 -M powernv,hb-mode=on \
|
||||
-cpu power9 \
|
||||
-bios build/coreboot.rom \
|
||||
-drive file=build/coreboot.rom,if=mtd \
|
||||
-serial stdio \
|
||||
-display none
|
||||
```
|
||||
|
||||
- The default CPU in QEMU for AArch64 is a 604. You specify a suitable
|
||||
PowerPC CPU via `-cpu power9`.
|
||||
- By default Hostboot mode is off and needs to be turned on to run coreboot
|
||||
as a firmware rather than like an OS.
|
||||
- `-bios` specifies initial program (bootloader should suffice, but whole image
|
||||
works fine too).
|
||||
- `-drive` specifies image for emulated flash device.
|
||||
|
||||
## Running with a kernel
|
||||
Loading `skiboot` (built automatically by coreboot or otherwise) allows
|
||||
specifying kernel and root file system to be run.
|
||||
|
||||
```bash
|
||||
qemu-system-ppc64 -M powernv,hb-mode=on \
|
||||
-cpu power9 \
|
||||
-bios build/coreboot.rom \
|
||||
-drive file=build/coreboot.rom,if=mtd \
|
||||
-serial stdio \
|
||||
-display none \
|
||||
-kernel zImage \
|
||||
-initrd initrd.cpio.xz
|
||||
```
|
||||
|
||||
- Specify path to your kernel via `-kernel`.
|
||||
- Specify path to your rootfs via `-initrd`.
|
@ -1,8 +1,8 @@
|
||||
# QEMU RISC-V emulator
|
||||
# Qemu RISC-V emulator
|
||||
|
||||
## Building coreboot and running it in QEMU
|
||||
## Building coreboot and running it in Qemu
|
||||
|
||||
- Configure coreboot and run `make` as usual
|
||||
- Run `util/riscv/make-spike-elf.sh build/coreboot.rom build/coreboot.elf` to
|
||||
convert coreboot to an ELF that QEMU can load
|
||||
convert coreboot to an ELF that Qemu can load
|
||||
- Run `qemu-system-riscv64 -M virt -m 1024M -nographic -kernel build/coreboot.elf`
|
||||
|
@ -5,7 +5,10 @@ This page describes how to run coreboot on the Facebook FBG1701.
|
||||
FBG1701 are assembled with different onboard memory modules:
|
||||
Rev 1.0 Onboard Samsung K4B8G1646D-MYKO memory
|
||||
Rev 1.1 and 1.2 Onboard Micron MT41K512M16HA-125A memory
|
||||
Rev 1.3 and 1.4 Onboard Kingston B5116ECMDXGGB memory
|
||||
Rev 1.3 Onboard Kingston B5116ECMDXGGB memory
|
||||
|
||||
Use make menuconfig to configure `onboard memory manufacturer Samsung` in
|
||||
Mainboard menu.
|
||||
|
||||
## Required blobs
|
||||
|
||||
|
@ -104,11 +104,11 @@ solution. Wires need to be connected to be able to flash using an external progr
|
||||
- SMBus
|
||||
- Initialization with FSP
|
||||
- SeaBIOS payload (commit a5cab58e9a3fb6e168aba919c5669bea406573b4)
|
||||
- edk2 payload (commit 860a8d95c2ee89c9916d6e11230f246afa1cd629)
|
||||
- TianoCore payload (commit 860a8d95c2ee89c9916d6e11230f246afa1cd629)
|
||||
- LinuxBoot (kernel kernel-4_19_97) (uroot commit 9c9db9dbd6b532f5f91a511a0de885c6562aadd7)
|
||||
- eMMC
|
||||
|
||||
All of the above has been briefly tested by booting Linux from eMMC using the edk2 payload
|
||||
All of the above has been briefly tested by booting Linux from eMMC using the TianoCore payload
|
||||
and LinuxBoot.
|
||||
|
||||
SeaBios has been checked to the extend that it runs to the boot selection and provides display
|
||||
|