Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -330,29 +330,29 @@ workflows:
- EOL_t480-hotp-maximized

- build:
name: EOL_UNTESTED_optiplex-7010_9010-maximized
target: EOL_UNTESTED_optiplex-7010_9010-maximized
name: EOL_optiplex-7010_9010-maximized
target: EOL_optiplex-7010_9010-maximized
subcommand: ""
requires:
- EOL_t480-hotp-maximized

- build:
name: EOL_UNTESTED_optiplex-7010_9010-hotp-maximized
target: EOL_UNTESTED_optiplex-7010_9010-hotp-maximized
name: EOL_optiplex-7010_9010-hotp-maximized
target: EOL_optiplex-7010_9010-hotp-maximized
subcommand: ""
requires:
- EOL_t480-hotp-maximized

- build:
name: EOL_UNTESTED_optiplex-7010_9010_TXT-maximized
target: EOL_UNTESTED_optiplex-7010_9010_TXT-maximized
name: EOL_optiplex-7010_9010_TXT-maximized
target: EOL_optiplex-7010_9010_TXT-maximized
subcommand: ""
requires:
- EOL_t480-hotp-maximized

- build:
name: EOL_UNTESTED_optiplex-7010_9010_TXT-hotp-maximized
target: EOL_UNTESTED_optiplex-7010_9010_TXT-hotp-maximized
name: EOL_optiplex-7010_9010_TXT-hotp-maximized
target: EOL_optiplex-7010_9010_TXT-hotp-maximized
subcommand: ""
requires:
- EOL_t480-hotp-maximized
Expand Down Expand Up @@ -386,8 +386,8 @@ workflows:
- EOL_t480-hotp-maximized

- build:
name: EOL_UNTESTED_w530-hotp-maximized
target: EOL_UNTESTED_w530-hotp-maximized
name: EOL_w530-hotp-maximized
target: EOL_w530-hotp-maximized
subcommand: ""
requires:
- EOL_t480-hotp-maximized
Expand All @@ -400,8 +400,8 @@ workflows:
- EOL_t480-hotp-maximized

- build:
name: EOL_UNTESTED_w530-maximized
target: EOL_UNTESTED_w530-maximized
name: EOL_w530-maximized
target: EOL_w530-maximized
subcommand: ""
requires:
- EOL_t480-hotp-maximized
Expand All @@ -421,15 +421,15 @@ workflows:
- EOL_t480-hotp-maximized

- build:
name: EOL_UNTESTED_t440p-maximized
target: EOL_UNTESTED_t440p-maximized
name: EOL_t440p-maximized
target: EOL_t440p-maximized
subcommand: ""
requires:
- EOL_t480-hotp-maximized

- build:
name: EOL_UNTESTED_t440p-hotp-maximized
target: EOL_UNTESTED_t440p-hotp-maximized
name: EOL_t440p-hotp-maximized
target: EOL_t440p-hotp-maximized
subcommand: ""
requires:
- EOL_t480-hotp-maximized
Expand Down
5 changes: 2 additions & 3 deletions BOARDS_AND_TESTERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,12 @@ xx30 (Ivy Bridge: Intel 3rd Gen CPU)
- [ ] w530 (xx30): @eganonoa @zifxify @weyounsix (dGPU: w530-k2000m) @jnscmns (dGPU K1000M) @computer-user123 (w530 / w530 k2000: prefers iGPU) @tlaurio
- [ ] x230 (xx30): @nestire @tlaurion @merge @jan23 @MrChromebox @shamen123 @eganonoa @bwachter @Thrilleratplay @jnscmns
- [ ] x230-fhd/edp variant: @n4ru @computer-user123 (nitro caster board) @Tonux599 @househead @pcm720 (eDP 4.0 board and 1440p display) @doob85 https://matrix.to/#/@rsabdpy:matrix.org (agan mod board)
- [ ] x230t: @fhvyhjriur
- [ ] t530 (xx30): @fhvyhjriur @3hhh (See: https://github.com/linuxboot/heads/issues/1682)

xx4x (Haswell: Intel 4th Gen CPU)
===
- [ ] t440p: @fhvyhjriur @ThePlexus @srgrint @akunterkontrolle @rbreslow
- [ ] w541 (similar of t440p): @ResendeGHF @gaspar-ilom (Late tested; at risk of deprecation)
- [ ] t440p: @MattClifton76 @fhvyhjriur @ThePlexus @srgrint @akunterkontrolle @rbreslow
- [ ] w541 (similar of t440p): @gaspar-ilom @ResendeGHF

xx8x (Kaby Lake Refresh: Intel 8th Gen Mobile : ESU ended 12/31/2024)
===
Expand Down
4 changes: 3 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,9 @@ DATE=`date --rfc-3339=seconds`

BOARD ?= qemu-coreboot-fbwhiptail-tpm1

ifeq "y" "$(shell [[ $(BOARD) =~ (^EOL_|^)UNMAINTAINED_.* ]] && echo y)""
# If the board name begins with UNMAINTAINED_, use the
# unmaintained_boards path.
ifeq "y" "$(shell echo '$(BOARD)' | grep -E '^UNMAINTAINED_' >/dev/null 2>&1 && echo y)"
CONFIG := $(pwd)/unmaintained_boards/$(BOARD)/$(BOARD).config
else
CONFIG := $(pwd)/boards/$(BOARD)/$(BOARD).config
Expand Down
1 change: 0 additions & 1 deletion blobs/haswell/.gitignore

This file was deleted.

45 changes: 0 additions & 45 deletions blobs/haswell/obtain-mrc

This file was deleted.

7 changes: 5 additions & 2 deletions blobs/t440p/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,17 @@

Coreboot on the T440p requires the following binary blobs:

- `mrc.bin` - Consists of Intel’s Memory Reference Code (MRC) and [is used to initialize the DRAM](https://doc.coreboot.org/northbridge/intel/haswell/mrc.bin.html).
- `me.bin` - Consists of Intel’s Management Engine (ME), which we modify using [me_cleaner](https://github.com/corna/me_cleaner) to remove all but the modules which are necessary for the CPU to function.
- `gbe.bin` - Consists of hardware/software configuration data for the Gigabit Ethernet (GbE) controller. Intel publishes the data structure [here](https://web.archive.org/web/20230122164346/https://www.intel.com/content/dam/www/public/us/en/documents/design-guides/i-o-controller-hub-8-9-nvm-map-guide.pdf), and an [ImHex](https://github.com/WerWolv/ImHex) hex editor pattern is available [here](https://github.com/rbreslow/ImHex-Patterns/blob/rb/intel-ich8/patterns/intel/ich8_lan_nvm.hexpat).
- `ifd.bin` - Consists of the Intel Flash Descriptor (IFD). Intel publishes the data structure [here](https://web.archive.org/web/20221208011432/https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/io-controller-hub-8-datasheet.pdf), and an ImHex hex editor pattern is available [here](https://github.com/rbreslow/ImHex-Patterns/blob/rb/intel-ich8/patterns/intel/ich8_flash_descriptor.hexpat).

Heads supplies an IFD and GbE blob, which we extracted from a donor board. We changed the MAC address of the GbE blob to `00:de:ad:c0:ff:ee` using [nvmutil](https://libreboot.org/docs/install/nvmutil.html), to support anonymity and build reproducibility.

When building any T440p board variant with `make`, the build system will download a copy of the MRC and Intel ME. We extract `mrc.bin` from a Chromebook firmware image and `me.bin` from a Lenovo firmware update.
When building any T440p board variant with `make`, the build system will download a copy of the Intel ME. We extract the `me.bin` from a Lenovo firmware update.

### Native Ram Initialization

Note that due to native ram initialization for haswell boards in coreboot it is no longer necessary to use a third party blob (`mrc.bin`) for that.

## Using Your Own Blobs

Expand Down
14 changes: 6 additions & 8 deletions blobs/w541/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,17 @@

Coreboot on the W541 requires the following binary blobs:

- `mrc.bin` - Consists of Intel’s Memory Reference Code (MRC) and [is used to initialize the DRAM](https://doc.coreboot.org/northbridge/intel/haswell/mrc.bin.html).
- Known issues with ram initilization are listed below.
- `me.bin` - Consists of Intel’s Management Engine (ME), which we modify using [me_cleaner](https://github.com/corna/me_cleaner) to remove all but the modules which are necessary for the CPU to function.
- `gbe.bin` - Consists of hardware/software configuration data for the Gigabit Ethernet (GbE) controller. Intel publishes the data structure [here](https://web.archive.org/web/20230122164346/https://www.intel.com/content/dam/www/public/us/en/documents/design-guides/i-o-controller-hub-8-9-nvm-map-guide.pdf), and an [ImHex](https://github.com/WerWolv/ImHex) hex editor pattern is available [here](https://github.com/rbreslow/ImHex-Patterns/blob/rb/intel-ich8/patterns/intel/ich8_lan_nvm.hexpat).
- `ifd.bin` - Consists of the Intel Flash Descriptor (IFD). Intel publishes the data structure [here](https://web.archive.org/web/20221208011432/https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/io-controller-hub-8-datasheet.pdf), and an ImHex hex editor pattern is available [here](https://github.com/rbreslow/ImHex-Patterns/blob/rb/intel-ich8/patterns/intel/ich8_flash_descriptor.hexpat).

Heads supplies an IFD and GbE blob, which we extracted from a donor board. We changed the MAC address of the GbE blob to `00:de:ad:c0:ff:ee` using [nvmutil](https://libreboot.org/docs/install/nvmutil.html), to support anonymity and build reproducibility.

When building any W541 board variant with `make`, the build system will download a copy of the MRC and Intel ME. We extract `mrc.bin` from a Chromebook firmware image and `me.bin` from a Lenovo firmware update.
When building any W541 board variant with `make`, the build system will download a copy of the Intel ME. We extract the `me.bin` from a Lenovo firmware update.

### Native Ram Initialization

Note that due to native ram initialization for haswell boards in coreboot it is no longer necessary to use a third party blob (`mrc.bin`)

## Using Your Own Blobs

Expand All @@ -38,8 +40,4 @@ Now, you can rebuild Heads:

```console
$ make BOARD=w541-hotp-maximized
```

# Known Issues
- Ram initialization with the MRC blob is very slow (~40s until boot splash) and so far native ram init (NRI) which was merged upstream has not been able to resolve the issue under heads. Work on HRI is tracked here: https://github.com/linuxboot/heads/pull/1923
- S3 resume from suspend has been reported as flaky on some boards (4 DIMMs with a total of 32GB ram).
```
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,7 @@ CONFIG_HOTPKEY=y
export CONFIG_AUTO_BOOT_TIMEOUT=5

# Make the Coreboot build depend on the following 3rd party blobs:
$(build)/coreboot-$(CONFIG_COREBOOT_VERSION)/$(BOARD)/.build: \
$(pwd)/blobs/haswell/mrc.bin $(pwd)/blobs/t440p/me.bin

$(pwd)/blobs/haswell/mrc.bin:
COREBOOT_DIR="$(build)/$(coreboot_base_dir)" \
$(pwd)/blobs/haswell/obtain-mrc $(pwd)/blobs/haswell
$(build)/coreboot-$(CONFIG_COREBOOT_VERSION)/$(BOARD)/.build: $(pwd)/blobs/t440p/me.bin

$(pwd)/blobs/t440p/me.bin:
COREBOOT_DIR="$(build)/$(coreboot_base_dir)" \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,7 @@ export CONFIG_BOARD_NAME="ThinkPad T440p-maximized"
export CONFIG_FLASH_OPTIONS="flashprog --progress --programmer internal"

# Make the Coreboot build depend on the following 3rd party blobs:
$(build)/coreboot-$(CONFIG_COREBOOT_VERSION)/$(BOARD)/.build: \
$(pwd)/blobs/haswell/mrc.bin $(pwd)/blobs/t440p/me.bin

$(pwd)/blobs/haswell/mrc.bin:
COREBOOT_DIR="$(build)/$(coreboot_base_dir)" \
$(pwd)/blobs/haswell/obtain-mrc $(pwd)/blobs/haswell
$(build)/coreboot-$(CONFIG_COREBOOT_VERSION)/$(BOARD)/.build: $(pwd)/blobs/t440p/me.bin

$(pwd)/blobs/t440p/me.bin:
COREBOOT_DIR="$(build)/$(coreboot_base_dir)" \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,7 @@ CONFIG_HOTPKEY=y
export CONFIG_AUTO_BOOT_TIMEOUT=5

# Make the Coreboot build depend on the following 3rd party blobs:
$(build)/coreboot-$(CONFIG_COREBOOT_VERSION)/$(BOARD)/.build: \
$(pwd)/blobs/haswell/mrc.bin $(pwd)/blobs/w541/me.bin

$(pwd)/blobs/haswell/mrc.bin:
COREBOOT_DIR="$(build)/$(coreboot_base_dir)" \
$(pwd)/blobs/haswell/obtain-mrc $(pwd)/blobs/haswell
$(build)/coreboot-$(CONFIG_COREBOOT_VERSION)/$(BOARD)/.build: $(pwd)/blobs/w541/me.bin

$(pwd)/blobs/w541/me.bin:
COREBOOT_DIR="$(build)/$(coreboot_base_dir)" \
Expand Down
7 changes: 1 addition & 6 deletions boards/EOL_w541-maximized/EOL_w541-maximized.config
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,7 @@ export CONFIG_BOARD_NAME="ThinkPad W541-maximized"
export CONFIG_FLASH_OPTIONS="flashprog --progress --programmer internal"

# Make the Coreboot build depend on the following 3rd party blobs:
$(build)/coreboot-$(CONFIG_COREBOOT_VERSION)/$(BOARD)/.build: \
$(pwd)/blobs/haswell/mrc.bin $(pwd)/blobs/w541/me.bin

$(pwd)/blobs/haswell/mrc.bin:
COREBOOT_DIR="$(build)/$(coreboot_base_dir)" \
$(pwd)/blobs/haswell/obtain-mrc $(pwd)/blobs/haswell
$(build)/coreboot-$(CONFIG_COREBOOT_VERSION)/$(BOARD)/.build: $(pwd)/blobs/w541/me.bin

$(pwd)/blobs/w541/me.bin:
COREBOOT_DIR="$(build)/$(coreboot_base_dir)" \
Expand Down
2 changes: 1 addition & 1 deletion config/coreboot-optiplex-7019_9010-maximized.config
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ CONFIG_DIMM_SPD_SIZE=256
CONFIG_FMDFILE=""
# CONFIG_NO_POST is not set
CONFIG_MAINBOARD_VENDOR="Dell Inc."
CONFIG_CBFS_SIZE=0xBE4FFF
CONFIG_CBFS_SIZE=0xBDF000
# CONFIG_CONSOLE_SERIAL is not set
CONFIG_LINEAR_FRAMEBUFFER_MAX_HEIGHT=1600
CONFIG_LINEAR_FRAMEBUFFER_MAX_WIDTH=2560
Expand Down
2 changes: 1 addition & 1 deletion config/coreboot-optiplex-7019_9010_TXT-maximized.config
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ CONFIG_DIMM_SPD_SIZE=256
CONFIG_FMDFILE=""
# CONFIG_NO_POST is not set
CONFIG_MAINBOARD_VENDOR="Dell Inc."
CONFIG_CBFS_SIZE=0xBE4FFF
CONFIG_CBFS_SIZE=0xBDF000
# CONFIG_CONSOLE_SERIAL is not set
CONFIG_LINEAR_FRAMEBUFFER_MAX_HEIGHT=1600
CONFIG_LINEAR_FRAMEBUFFER_MAX_WIDTH=2560
Expand Down
2 changes: 1 addition & 1 deletion config/coreboot-t430-maximized.config
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ CONFIG_DIMM_SPD_SIZE=256
CONFIG_FMDFILE=""
CONFIG_NO_POST=y
CONFIG_MAINBOARD_VENDOR="LENOVO"
CONFIG_CBFS_SIZE=0xBE4FFF
CONFIG_CBFS_SIZE=0xBDF000
CONFIG_LINEAR_FRAMEBUFFER_MAX_HEIGHT=1600
CONFIG_LINEAR_FRAMEBUFFER_MAX_WIDTH=2560
CONFIG_MAX_CPUS=8
Expand Down
16 changes: 7 additions & 9 deletions config/coreboot-t440p.config
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ CONFIG_DIMM_SPD_SIZE=256
CONFIG_FMDFILE=""
CONFIG_NO_POST=y
CONFIG_MAINBOARD_VENDOR="LENOVO"
CONFIG_CBFS_SIZE=0xBE4FFF
CONFIG_CBFS_SIZE=0xBDF000
CONFIG_LINEAR_FRAMEBUFFER_MAX_HEIGHT=1600
CONFIG_LINEAR_FRAMEBUFFER_MAX_WIDTH=2560
CONFIG_MAX_CPUS=8
Expand Down Expand Up @@ -157,9 +157,9 @@ CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout"
CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0
CONFIG_TPM_PIRQ=0x0
CONFIG_DCACHE_RAM_BASE=0xff7c0000
CONFIG_DCACHE_RAM_SIZE=0x10000
CONFIG_DCACHE_RAM_SIZE=0x40000
CONFIG_C_ENV_BOOTBLOCK_SIZE=0x40000
CONFIG_DCACHE_BSP_STACK_SIZE=0x2000
CONFIG_DCACHE_BSP_STACK_SIZE=0x20000
CONFIG_MAX_ACPI_TABLE_SIZE_KB=144
CONFIG_HAVE_INTEL_FIRMWARE=y
CONFIG_MRC_SETTINGS_CACHE_SIZE=0x10000
Expand Down Expand Up @@ -290,9 +290,7 @@ CONFIG_INTEL_GMA_BCLV_WIDTH=16
CONFIG_INTEL_GMA_BCLM_OFFSET=0xc8256
CONFIG_INTEL_GMA_BCLM_WIDTH=16
CONFIG_BOOTBLOCK_IN_CBFS=y
CONFIG_HAVE_MRC=y
CONFIG_MRC_FILE="@BLOB_DIR@/haswell/mrc.bin"
CONFIG_DCACHE_RAM_MRC_VAR_SIZE=0x30000
CONFIG_DCACHE_RAM_MRC_VAR_SIZE=0x0
CONFIG_HPET_MIN_TICKS=0x80
CONFIG_FIXED_MCHBAR_MMIO_BASE=0xfed10000
CONFIG_FIXED_DMIBAR_MMIO_BASE=0xfed18000
Expand Down Expand Up @@ -346,9 +344,7 @@ CONFIG_CPU_MICROCODE_CBFS_DEFAULT_BINS=y
# Northbridge
#
CONFIG_NORTHBRIDGE_INTEL_HASWELL=y
# CONFIG_USE_NATIVE_RAMINIT is not set
# CONFIG_USE_BROADWELL_MRC is not set
CONFIG_HASWELL_HIDE_PEG_FROM_MRC=y
CONFIG_USE_NATIVE_RAMINIT=y

#
# Southbridge
Expand Down Expand Up @@ -710,6 +706,8 @@ CONFIG_COMPRESS_SECONDARY_PAYLOAD=y
# General Debug Settings
#
# CONFIG_DEBUG_CBFS is not set
CONFIG_HAVE_DEBUG_RAM_SETUP=y
# CONFIG_DEBUG_RAM_SETUP is not set
CONFIG_HAVE_DEBUG_SMBUS=y
# CONFIG_DEBUG_SMBUS is not set
# CONFIG_DEBUG_MALLOC is not set
Expand Down
2 changes: 1 addition & 1 deletion config/coreboot-t530-dgpu-maximized.config
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ CONFIG_DIMM_SPD_SIZE=256
CONFIG_FMDFILE=""
CONFIG_NO_POST=y
CONFIG_MAINBOARD_VENDOR="LENOVO"
CONFIG_CBFS_SIZE=0xBE4FFF
CONFIG_CBFS_SIZE=0xBDF000
CONFIG_MAX_CPUS=8
CONFIG_ONBOARD_VGA_IS_PRIMARY=y
CONFIG_VGA_BIOS_DGPU_ID="10de,0def"
Expand Down
2 changes: 1 addition & 1 deletion config/coreboot-t530-maximized.config
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ CONFIG_DIMM_SPD_SIZE=256
CONFIG_FMDFILE=""
CONFIG_NO_POST=y
CONFIG_MAINBOARD_VENDOR="LENOVO"
CONFIG_CBFS_SIZE=0xBE4FFF
CONFIG_CBFS_SIZE=0xBDF000
CONFIG_LINEAR_FRAMEBUFFER_MAX_HEIGHT=1600
CONFIG_LINEAR_FRAMEBUFFER_MAX_WIDTH=2560
CONFIG_MAX_CPUS=8
Expand Down
2 changes: 1 addition & 1 deletion config/coreboot-w530-dgpu-K1000m-maximized.config
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ CONFIG_DIMM_SPD_SIZE=256
CONFIG_FMDFILE=""
CONFIG_NO_POST=y
CONFIG_MAINBOARD_VENDOR="LENOVO"
CONFIG_CBFS_SIZE=0xBE4FFF
CONFIG_CBFS_SIZE=0xBDF000
CONFIG_MAX_CPUS=8
CONFIG_ONBOARD_VGA_IS_PRIMARY=y
CONFIG_VGA_BIOS_DGPU_ID="10de,0ffc"
Expand Down
2 changes: 1 addition & 1 deletion config/coreboot-w530-dgpu-K2000m-maximized.config
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ CONFIG_DIMM_SPD_SIZE=256
CONFIG_FMDFILE=""
CONFIG_NO_POST=y
CONFIG_MAINBOARD_VENDOR="LENOVO"
CONFIG_CBFS_SIZE=0xBE4FFF
CONFIG_CBFS_SIZE=0xBDF000
CONFIG_MAX_CPUS=8
CONFIG_ONBOARD_VGA_IS_PRIMARY=y
CONFIG_VGA_BIOS_DGPU_ID="10de,0ffb"
Expand Down
2 changes: 1 addition & 1 deletion config/coreboot-w530-maximized.config
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ CONFIG_DIMM_SPD_SIZE=256
CONFIG_FMDFILE=""
CONFIG_NO_POST=y
CONFIG_MAINBOARD_VENDOR="LENOVO"
CONFIG_CBFS_SIZE=0xBE4FFF
CONFIG_CBFS_SIZE=0xBDF000
CONFIG_LINEAR_FRAMEBUFFER_MAX_HEIGHT=1600
CONFIG_LINEAR_FRAMEBUFFER_MAX_WIDTH=2560
CONFIG_MAX_CPUS=8
Expand Down
Loading