Martin L Roth has submitted this change. ( https://review.coreboot.org/c/coreboot/+/80337?usp=email )
(
18 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: cpu/x86: Link page tables in stage if possible
......................................................................
cpu/x86: Link page tables in stage if possible
When switching back and forth between 32 to 64 bit mode, for example to
call a 32-bits FSP or to call the payload, new page tables in the
respective stage will be linked.
The advantages of this approach are:
- No need to determine a good place for page tables in CBFS that does
not overlap.
- Works with non memory mapped flash (however all coreboot targets
currently do support this)
- If later stages can use their own page tables which fits better with
the vboot RO/RW flow
A disadvantage is that it increases the stage size. This could be
improved upon by using 1G pages and generating the pages at runtime.
Note: qemu cannot have the page tables in the RO boot medium and needs
to relocate them at runtime. This is why keeping the existing code with
page tables in CBFS is done for now.
TEST: Booted to payload on google/vilbox and qemu/q35
Signed-off-by: Arthur Heymans <arthur(a)aheymans.xyz>
Change-Id: Ied54b66b930187cba5fbc578a81ed5859a616562
Reviewed-on: https://review.coreboot.org/c/coreboot/+/80337
Reviewed-by: Patrick Rudolph <patrick.rudolph(a)9elements.com>
Tested-by: build bot (Jenkins) <no-reply(a)coreboot.org>
---
M src/arch/x86/Kconfig
M src/cpu/intel/car/core2/cache_as_ram.S
M src/cpu/intel/car/non-evict/cache_as_ram.S
M src/cpu/intel/car/p4-netburst/cache_as_ram.S
M src/cpu/x86/64bit/Makefile.mk
M src/cpu/x86/64bit/entry64.inc
M src/cpu/x86/64bit/mode_switch.S
M src/cpu/x86/64bit/mode_switch2.S
M src/cpu/x86/64bit/pt.S
M src/mainboard/emulation/qemu-i440fx/Kconfig
M src/mainboard/emulation/qemu-q35/Kconfig
M src/soc/amd/common/block/cpu/noncar/pre_c.S
M src/soc/intel/common/block/cpu/car/cache_as_ram.S
13 files changed, 28 insertions(+), 10 deletions(-)
Approvals:
Patrick Rudolph: Looks good to me, approved
build bot (Jenkins): Verified
diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig
index 610321f..3f97644 100644
--- a/src/arch/x86/Kconfig
+++ b/src/arch/x86/Kconfig
@@ -83,9 +83,13 @@
is an experimental option: do not enable unless one wants to test it
and has the means to recover a system when coreboot fails to boot.
+config PAGE_TABLES_IN_CBFS
+ bool
+ default n
+
config ARCH_X86_64_PGTBL_LOC
hex "x86_64 page table location in CBFS"
- depends on ARCH_BOOTBLOCK_X86_64
+ depends on ARCH_BOOTBLOCK_X86_64 && PAGE_TABLES_IN_CBFS
default 0xfffe9000
help
The position where to place pagetables. Needs to be known at
diff --git a/src/cpu/intel/car/core2/cache_as_ram.S b/src/cpu/intel/car/core2/cache_as_ram.S
index 2e4d9c8..227ddf4 100644
--- a/src/cpu/intel/car/core2/cache_as_ram.S
+++ b/src/cpu/intel/car/core2/cache_as_ram.S
@@ -163,7 +163,7 @@
subl $4, %esp
#if ENV_X86_64
- setup_longmode $(CONFIG_ARCH_X86_64_PGTBL_LOC)
+ setup_longmode $PM4LE
movd %mm2, %rdi
shlq $32, %rdi
diff --git a/src/cpu/intel/car/non-evict/cache_as_ram.S b/src/cpu/intel/car/non-evict/cache_as_ram.S
index 578bf03..9485cd4 100644
--- a/src/cpu/intel/car/non-evict/cache_as_ram.S
+++ b/src/cpu/intel/car/non-evict/cache_as_ram.S
@@ -214,7 +214,7 @@
andl $0xfffffff0, %esp
#if ENV_X86_64
- setup_longmode $(CONFIG_ARCH_X86_64_PGTBL_LOC)
+ setup_longmode $PM4LE
movd %mm2, %rdi
shlq $32, %rdi
diff --git a/src/cpu/intel/car/p4-netburst/cache_as_ram.S b/src/cpu/intel/car/p4-netburst/cache_as_ram.S
index 32fddd6..1cb422d 100644
--- a/src/cpu/intel/car/p4-netburst/cache_as_ram.S
+++ b/src/cpu/intel/car/p4-netburst/cache_as_ram.S
@@ -363,7 +363,7 @@
subl $4, %esp
#if ENV_X86_64
- setup_longmode $(CONFIG_ARCH_X86_64_PGTBL_LOC)
+ setup_longmode $PM4LE
movd %mm2, %rdi
shlq $32, %rdi /* BIST */
diff --git a/src/cpu/x86/64bit/Makefile.mk b/src/cpu/x86/64bit/Makefile.mk
index a8dc1a2..b24e4d7 100644
--- a/src/cpu/x86/64bit/Makefile.mk
+++ b/src/cpu/x86/64bit/Makefile.mk
@@ -9,13 +9,15 @@
PAGETABLE_SRC := pt.S
endif
+all_x86-y += $(PAGETABLE_SRC)
+
# Add --defsym=_start=0 to suppress a linker warning.
$(objcbfs)/pt: $(dir)/$(PAGETABLE_SRC) $(obj)/config.h
$(CC_bootblock) $(CFLAGS_bootblock) $(CPPFLAGS_bootblock) -o $@.tmp $< -Wl,--section-start=.rodata=$(CONFIG_ARCH_X86_64_PGTBL_LOC),--defsym=_start=0
$(OBJCOPY_ramstage) -Obinary -j .rodata $@.tmp $@
rm $@.tmp
-cbfs-files-y += pagetables
+cbfs-files-$(CONFIG_PAGE_TABLES_IN_CBFS) += pagetables
pagetables-file := $(objcbfs)/pt
pagetables-type := raw
pagetables-compression := none
diff --git a/src/cpu/x86/64bit/entry64.inc b/src/cpu/x86/64bit/entry64.inc
index 878f310..52da603 100644
--- a/src/cpu/x86/64bit/entry64.inc
+++ b/src/cpu/x86/64bit/entry64.inc
@@ -11,9 +11,11 @@
#if ENV_X86_64
.code32
+#if CONFIG(PAGE_TABLES_IN_CBFS)
#if (CONFIG_ARCH_X86_64_PGTBL_LOC & 0xfff) > 0
#error pagetables must be 4KiB aligned!
#endif
+#endif
#include <cpu/x86/msr.h>
#if defined(__RAMSTAGE__)
diff --git a/src/cpu/x86/64bit/mode_switch.S b/src/cpu/x86/64bit/mode_switch.S
index 01fe003..9555cef 100644
--- a/src/cpu/x86/64bit/mode_switch.S
+++ b/src/cpu/x86/64bit/mode_switch.S
@@ -44,7 +44,7 @@
movl %eax, %ebx
/* Preserves ebx */
- setup_longmode $(CONFIG_ARCH_X86_64_PGTBL_LOC)
+ setup_longmode $PM4LE
/* Place return value in rax */
movl %ebx, %eax
diff --git a/src/cpu/x86/64bit/mode_switch2.S b/src/cpu/x86/64bit/mode_switch2.S
index 1807d2e..18c6425 100644
--- a/src/cpu/x86/64bit/mode_switch2.S
+++ b/src/cpu/x86/64bit/mode_switch2.S
@@ -21,7 +21,7 @@
mov %esp, %ebp
/* Enter long mode, preserves ebx */
- setup_longmode $(CONFIG_ARCH_X86_64_PGTBL_LOC)
+ setup_longmode $PM4LE
/* Align stack */
movabs $0xfffffffffffffff0, %rax
diff --git a/src/cpu/x86/64bit/pt.S b/src/cpu/x86/64bit/pt.S
index b105528..67e4b1b 100644
--- a/src/cpu/x86/64bit/pt.S
+++ b/src/cpu/x86/64bit/pt.S
@@ -18,7 +18,7 @@
#define _GEN_PAGE(a) (_PRES + _RW + _US + _PS + _A + _D + (a))
.global PM4LE
-.align 32
+.align 4096
PM4LE:
.quad _GEN_DIR(PDPE_table)
diff --git a/src/mainboard/emulation/qemu-i440fx/Kconfig b/src/mainboard/emulation/qemu-i440fx/Kconfig
index cec6f97..24dfa7a2 100644
--- a/src/mainboard/emulation/qemu-i440fx/Kconfig
+++ b/src/mainboard/emulation/qemu-i440fx/Kconfig
@@ -30,6 +30,11 @@
select GBB_FLAG_DISABLE_FWMP
if ARCH_BOOTBLOCK_X86_64
+
+config PAGE_TABLES_IN_CBFS
+ bool
+ default y
+
# Need to install page tables in DRAM as the virtual MMU has problems translating paging
# request when the page table resides in emulated ROM. This causes undefined behaviour
# when handling data requests, as well as fetching and decoding instructions
diff --git a/src/mainboard/emulation/qemu-q35/Kconfig b/src/mainboard/emulation/qemu-q35/Kconfig
index d68a546..11ea750 100644
--- a/src/mainboard/emulation/qemu-q35/Kconfig
+++ b/src/mainboard/emulation/qemu-q35/Kconfig
@@ -32,6 +32,11 @@
default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/vboot-rwab-16M.fmd" if VBOOT_SLOTS_RW_AB
if ARCH_BOOTBLOCK_X86_64
+
+config PAGE_TABLES_IN_CBFS
+ bool
+ default y
+
# Need to install page tables in DRAM as the virtual MMU has problems translating paging
# request when the page table resides in emulated ROM. This causes undefined behaviour
# when handling data requests, as well as fetching and decoding instructions
diff --git a/src/soc/amd/common/block/cpu/noncar/pre_c.S b/src/soc/amd/common/block/cpu/noncar/pre_c.S
index bb2203b..0e0be52 100644
--- a/src/soc/amd/common/block/cpu/noncar/pre_c.S
+++ b/src/soc/amd/common/block/cpu/noncar/pre_c.S
@@ -28,7 +28,7 @@
post_code(POSTCODE_BOOTBLOCK_PRE_C_ENTRY)
#if ENV_X86_64
- setup_longmode $(CONFIG_ARCH_X86_64_PGTBL_LOC)
+ setup_longmode $PM4LE
#endif
/* Clear .bss section */
diff --git a/src/soc/intel/common/block/cpu/car/cache_as_ram.S b/src/soc/intel/common/block/cpu/car/cache_as_ram.S
index c22e7d9..ba98f1b 100644
--- a/src/soc/intel/common/block/cpu/car/cache_as_ram.S
+++ b/src/soc/intel/common/block/cpu/car/cache_as_ram.S
@@ -280,7 +280,7 @@
andl $0xfffffff0, %esp
#if ENV_X86_64
- setup_longmode $(CONFIG_ARCH_X86_64_PGTBL_LOC)
+ setup_longmode $PM4LE
movd %mm2, %rdi
shlq $32, %rdi
--
To view, visit https://review.coreboot.org/c/coreboot/+/80337?usp=email
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: main
Gerrit-Change-Id: Ied54b66b930187cba5fbc578a81ed5859a616562
Gerrit-Change-Number: 80337
Gerrit-PatchSet: 22
Gerrit-Owner: Arthur Heymans <arthur(a)aheymans.xyz>
Gerrit-Reviewer: Felix Held <felix-coreboot(a)felixheld.de>
Gerrit-Reviewer: Fred Reitberger <reitbergerfred(a)gmail.com>
Gerrit-Reviewer: Jason Glenesk <jason.glenesk(a)gmail.com>
Gerrit-Reviewer: Jérémy Compostella <jeremy.compostella(a)intel.com>
Gerrit-Reviewer: Martin L Roth <gaumless(a)gmail.com>
Gerrit-Reviewer: Matt DeVillier <matt.devillier(a)amd.corp-partner.google.com>
Gerrit-Reviewer: Patrick Rudolph <patrick.rudolph(a)9elements.com>
Gerrit-Reviewer: Shuo Liu <shuo.liu(a)intel.com>
Gerrit-Reviewer: Subrata Banik <subratabanik(a)google.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply(a)coreboot.org>
Gerrit-CC: Lean Sheng Tan <sheng.tan(a)9elements.com>
Gerrit-MessageType: merged
Martin L Roth has submitted this change. ( https://review.coreboot.org/c/coreboot/+/80348?usp=email )
(
10 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: soc/amd/noncar: Increase bootblock size from 64K to 128K
......................................................................
soc/amd/noncar: Increase bootblock size from 64K to 128K
When linking in page tables more place is needed. Size the bootblock is
top aligned, this has no impact the final size for existing setups.
Signed-off-by: Arthur Heymans <arthur(a)aheymans.xyz>
Change-Id: I23f176d63d3c303b13331a77ad5ac6c7a19073d3
Reviewed-on: https://review.coreboot.org/c/coreboot/+/80348
Tested-by: build bot (Jenkins) <no-reply(a)coreboot.org>
Reviewed-by: Martin L Roth <gaumless(a)gmail.com>
---
M src/soc/amd/cezanne/Kconfig
M src/soc/amd/genoa_poc/Kconfig
M src/soc/amd/glinda/Kconfig
M src/soc/amd/mendocino/Kconfig
M src/soc/amd/phoenix/Kconfig
M src/soc/amd/picasso/Kconfig
6 files changed, 18 insertions(+), 18 deletions(-)
Approvals:
Martin L Roth: Looks good to me, approved
build bot (Jenkins): Verified
diff --git a/src/soc/amd/cezanne/Kconfig b/src/soc/amd/cezanne/Kconfig
index 2ebf6bc..abeaece 100644
--- a/src/soc/amd/cezanne/Kconfig
+++ b/src/soc/amd/cezanne/Kconfig
@@ -175,7 +175,7 @@
config C_ENV_BOOTBLOCK_SIZE
hex
- default 0x10000
+ default 0x20000
help
Sets the size of the bootblock stage that should be loaded in DRAM.
This variable controls the DRAM allocation size in linker script
@@ -183,13 +183,13 @@
config ROMSTAGE_ADDR
hex
- default 0x2040000
+ default 0x2050000
help
Sets the address in DRAM where romstage should be loaded.
config ROMSTAGE_SIZE
hex
- default 0x80000
+ default 0x70000
help
Sets the size of DRAM allocation for romstage in linker script.
diff --git a/src/soc/amd/genoa_poc/Kconfig b/src/soc/amd/genoa_poc/Kconfig
index 2460323..05590f5 100644
--- a/src/soc/amd/genoa_poc/Kconfig
+++ b/src/soc/amd/genoa_poc/Kconfig
@@ -98,7 +98,7 @@
config C_ENV_BOOTBLOCK_SIZE
hex
- default 0x10000
+ default 0x20000
help
Sets the size of the bootblock stage that should be loaded in DRAM.
This variable controls the DRAM allocation size in linker script
@@ -106,13 +106,13 @@
config ROMSTAGE_ADDR
hex
- default 0x7040000
+ default 0x7050000
help
Sets the address in DRAM where romstage should be loaded.
config ROMSTAGE_SIZE
hex
- default 0x80000
+ default 0x70000
help
Sets the size of DRAM allocation for romstage in linker script.
diff --git a/src/soc/amd/glinda/Kconfig b/src/soc/amd/glinda/Kconfig
index d529002..68a1b6f 100644
--- a/src/soc/amd/glinda/Kconfig
+++ b/src/soc/amd/glinda/Kconfig
@@ -162,7 +162,7 @@
config C_ENV_BOOTBLOCK_SIZE
hex
- default 0x10000
+ default 0x20000
help
Sets the size of the bootblock stage that should be loaded in DRAM.
This variable controls the DRAM allocation size in linker script
@@ -170,13 +170,13 @@
config ROMSTAGE_ADDR
hex
- default 0x2040000
+ default 0x2050000
help
Sets the address in DRAM where romstage should be loaded.
config ROMSTAGE_SIZE
hex
- default 0x80000
+ default 0x70000
help
Sets the size of DRAM allocation for romstage in linker script.
diff --git a/src/soc/amd/mendocino/Kconfig b/src/soc/amd/mendocino/Kconfig
index f6305ee..ee6c968 100644
--- a/src/soc/amd/mendocino/Kconfig
+++ b/src/soc/amd/mendocino/Kconfig
@@ -195,7 +195,7 @@
config C_ENV_BOOTBLOCK_SIZE
hex
- default 0x10000
+ default 0x20000
help
Sets the size of the bootblock stage that should be loaded in DRAM.
This variable controls the DRAM allocation size in linker script
@@ -203,13 +203,13 @@
config ROMSTAGE_ADDR
hex
- default 0x2040000
+ default 0x2050000
help
Sets the address in DRAM where romstage should be loaded.
config ROMSTAGE_SIZE
hex
- default 0x80000
+ default 0x70000
help
Sets the size of DRAM allocation for romstage in linker script.
diff --git a/src/soc/amd/phoenix/Kconfig b/src/soc/amd/phoenix/Kconfig
index 75777dc..9a2424e 100644
--- a/src/soc/amd/phoenix/Kconfig
+++ b/src/soc/amd/phoenix/Kconfig
@@ -175,7 +175,7 @@
config C_ENV_BOOTBLOCK_SIZE
hex
- default 0x10000
+ default 0x20000
help
Sets the size of the bootblock stage that should be loaded in DRAM.
This variable controls the DRAM allocation size in linker script
@@ -183,13 +183,13 @@
config ROMSTAGE_ADDR
hex
- default 0x2060000
+ default 0x2070000
help
Sets the address in DRAM where romstage should be loaded.
config ROMSTAGE_SIZE
hex
- default 0x80000
+ default 0x70000
help
Sets the size of DRAM allocation for romstage in linker script.
diff --git a/src/soc/amd/picasso/Kconfig b/src/soc/amd/picasso/Kconfig
index 0bb6f40..864643f 100644
--- a/src/soc/amd/picasso/Kconfig
+++ b/src/soc/amd/picasso/Kconfig
@@ -165,7 +165,7 @@
config C_ENV_BOOTBLOCK_SIZE
hex
- default 0x10000
+ default 0x20000
help
Sets the size of the bootblock stage that should be loaded in DRAM.
This variable controls the DRAM allocation size in linker script
@@ -173,13 +173,13 @@
config ROMSTAGE_ADDR
hex
- default 0x2040000
+ default 0x2050000
help
Sets the address in DRAM where romstage should be loaded.
config ROMSTAGE_SIZE
hex
- default 0x80000
+ default 0x70000
help
Sets the size of DRAM allocation for romstage in linker script.
--
To view, visit https://review.coreboot.org/c/coreboot/+/80348?usp=email
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: main
Gerrit-Change-Id: I23f176d63d3c303b13331a77ad5ac6c7a19073d3
Gerrit-Change-Number: 80348
Gerrit-PatchSet: 13
Gerrit-Owner: Arthur Heymans <arthur(a)aheymans.xyz>
Gerrit-Reviewer: Felix Held <felix-coreboot(a)felixheld.de>
Gerrit-Reviewer: Fred Reitberger <reitbergerfred(a)gmail.com>
Gerrit-Reviewer: Jason Glenesk <jason.glenesk(a)gmail.com>
Gerrit-Reviewer: Martin L Roth <gaumless(a)gmail.com>
Gerrit-Reviewer: Matt DeVillier <matt.devillier(a)amd.corp-partner.google.com>
Gerrit-Reviewer: Paul Menzel <paulepanter(a)mailbox.org>
Gerrit-Reviewer: build bot (Jenkins) <no-reply(a)coreboot.org>
Gerrit-MessageType: merged
Martin L Roth has submitted this change. ( https://review.coreboot.org/c/coreboot/+/81433?usp=email )
Change subject: soc/amd/non_car/memlayout_x86.ld: Top align the code
......................................................................
soc/amd/non_car/memlayout_x86.ld: Top align the code
This does the following:
- Top align the bootblock so that the only the memory needed gets used.
This might slightly reduce the time the PSP needs to decompress the
bootblock in memory
- Use a memory directive to assert that the 16bit code is inside the top
64K segment
- Use the program counter less. While the BDF linker is happy about
running the program counter backwards, LLD is not. There is no
downside to this.
- Use a symbol rather that the program counter for sections. LLD gets
confused when (.) is used along with '<': it places the section at the
start of the memory region, rather than at the program counter. Using
a variable name works around this.
- Use a 'last_byte' section to make sure the first instruction is at
0xfff0. Both the BDF and the LLD linkers seems to work well with this
code
TEST: Both BFD and LLD are able to link the bootblock
Change-Id: I18bdf262f9c358aa01795b11efcb863686edc79c
Signed-off-by: Arthur Heymans <arthur(a)aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/81433
Tested-by: build bot (Jenkins) <no-reply(a)coreboot.org>
Reviewed-by: Martin L Roth <gaumless(a)gmail.com>
---
M src/soc/amd/common/block/cpu/noncar/memlayout_x86.ld
1 file changed, 22 insertions(+), 12 deletions(-)
Approvals:
build bot (Jenkins): Verified
Martin L Roth: Looks good to me, approved
diff --git a/src/soc/amd/common/block/cpu/noncar/memlayout_x86.ld b/src/soc/amd/common/block/cpu/noncar/memlayout_x86.ld
index 9eb9d21..3c596f4 100644
--- a/src/soc/amd/common/block/cpu/noncar/memlayout_x86.ld
+++ b/src/soc/amd/common/block/cpu/noncar/memlayout_x86.ld
@@ -95,7 +95,6 @@
PSP_SHAREDMEM_DRAM_END(CONFIG_PSP_SHAREDMEM_BASE + CONFIG_PSP_SHAREDMEM_SIZE)
#endif
_ = ASSERT(BOOTBLOCK_END == ((BOOTBLOCK_END + 0xFFFF) & 0xFFFF0000), "Bootblock end must be 16 bit aligned");
- BOOTBLOCK(BOOTBLOCK_ADDR, CONFIG_C_ENV_BOOTBLOCK_SIZE)
ROMSTAGE(CONFIG_ROMSTAGE_ADDR, CONFIG_ROMSTAGE_SIZE)
#if CONFIG(PLATFORM_USES_FSP2_0)
@@ -124,19 +123,29 @@
gdtptr_offset = gdtptr & 0xffff;
nullidt_offset = nullidt & 0xffff;
+MEMORY
+{
+ /* Make sure all the 16bit code is in the same 64K segment as the reset vector */
+ resetsection (rwx) : ORIGIN = BOOTBLOCK_END - 64K, LENGTH = 64K
+}
+
SECTIONS {
- /* Trigger an error if I have an unusable start address */
- _TOO_LOW = _X86_RESET_VECTOR - 0xfff0;
- _bogus = ASSERT(_start16bit >= _TOO_LOW, "_start16bit too low. Please report.");
+ /* Page tables need to be at a 4K boundary so align the bootblock downwards */
+ . = (BOOTBLOCK_TOP - PROGRAM_SZ) & ~(4096 - 1);
+ _bootblock = .;
+
+ INCLUDE "bootblock/lib/program.ld"
+
+ PROGRAM_SZ = SIZEOF(.text) + SIZEOF(.bss) + SIZEOF(.data);
. = _X86_RESET_VECTOR - EARLYASM_SZ;
. = ALIGN(16);
BOOTBLOCK_TOP = .;
- .init (.) : {
+ .init BOOTBLOCK_TOP : {
*(.init._start);
*(.init);
*(.init.*);
- }
+ } >resetsection
/*
* Allocation reserves extra space here. Alignment requirements
@@ -145,13 +154,14 @@
*/
EARLYASM_SZ = SIZEOF(.init) + 16;
- . = BOOTBLOCK_END - 0x10;
- _X86_RESET_VECTOR = .;
+ _X86_RESET_VECTOR = BOOTBLOCK_END - 0x10;
_bogus = ASSERT((_X86_RESET_VECTOR & 0xffff) == 0xfff0, "IP needs to be 0xfff0");
- .reset . : {
+ .reset (_X86_RESET_VECTOR) : {
*(.reset);
- . = 15;
- BYTE(0x00);
- }
+ } >resetsection
+ .last_byte (BOOTBLOCK_END - 1) : {
+ BYTE(0xff);
+ } >resetsection
+ _ebootblock = BOOTBLOCK_END;
}
#endif /* ENV_BOOTBLOCK */
--
To view, visit https://review.coreboot.org/c/coreboot/+/81433?usp=email
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: main
Gerrit-Change-Id: I18bdf262f9c358aa01795b11efcb863686edc79c
Gerrit-Change-Number: 81433
Gerrit-PatchSet: 3
Gerrit-Owner: Arthur Heymans <arthur(a)aheymans.xyz>
Gerrit-Reviewer: Felix Held <felix-coreboot(a)felixheld.de>
Gerrit-Reviewer: Fred Reitberger <reitbergerfred(a)gmail.com>
Gerrit-Reviewer: Jason Glenesk <jason.glenesk(a)gmail.com>
Gerrit-Reviewer: Martin L Roth <gaumless(a)gmail.com>
Gerrit-Reviewer: Martin Roth <martin.roth(a)amd.corp-partner.google.com>
Gerrit-Reviewer: Matt DeVillier <matt.devillier(a)amd.corp-partner.google.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply(a)coreboot.org>
Gerrit-MessageType: merged
Attention is currently required from: Ashish Kumar Mishra, Shelley Chen.
Paul Menzel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/81556?usp=email )
Change subject: mb/google/brox: Enable SAGv
......................................................................
Patch Set 1:
(1 comment)
Commit Message:
https://review.coreboot.org/c/coreboot/+/81556/comment/1d2fb03b_2a03a769 :
PS1, Line 13: TEST=Boot brox with SAGv enabled
What changed? How do you check that enabling was successful?
--
To view, visit https://review.coreboot.org/c/coreboot/+/81556?usp=email
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: main
Gerrit-Change-Id: I80c44e7df1d75732c6982b27e44ecd6060b1b3f1
Gerrit-Change-Number: 81556
Gerrit-PatchSet: 1
Gerrit-Owner: Ashish Kumar Mishra <ashish.k.mishra(a)intel.com>
Gerrit-Reviewer: Shelley Chen <shchen(a)google.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply(a)coreboot.org>
Gerrit-CC: Paul Menzel <paulepanter(a)mailbox.org>
Gerrit-Attention: Shelley Chen <shchen(a)google.com>
Gerrit-Attention: Ashish Kumar Mishra <ashish.k.mishra(a)intel.com>
Gerrit-Comment-Date: Thu, 28 Mar 2024 15:20:15 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
Martin L Roth has submitted this change. ( https://review.coreboot.org/c/coreboot/+/69159?usp=email )
Change subject: security/tpm: make tis_probe() return tpm_family
......................................................................
security/tpm: make tis_probe() return tpm_family
Via an out parameter. This is needed to be able to dynamically pick TSS
implementation based on the information discovered on probing.
Change-Id: I5006e0cdfef76ff79ce9e1cf280fcd5515ae01b0
Ticket: https://ticket.coreboot.org/issues/433
Signed-off-by: Sergii Dmytruk <sergii.dmytruk(a)3mdeb.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/69159
Reviewed-by: Martin L Roth <gaumless(a)gmail.com>
Reviewed-by: Jérémy Compostella <jeremy.compostella(a)intel.com>
Reviewed-by: Julius Werner <jwerner(a)chromium.org>
Reviewed-by: Christian Walter <christian.walter(a)9elements.com>
Tested-by: build bot (Jenkins) <no-reply(a)coreboot.org>
---
M src/drivers/crb/tis.c
M src/drivers/i2c/tpm/cr50.c
M src/drivers/i2c/tpm/tis.c
M src/drivers/i2c/tpm/tis_atmel.c
M src/drivers/i2c/tpm/tpm.c
M src/drivers/i2c/tpm/tpm.h
M src/drivers/pc80/tpm/tis.c
M src/drivers/spi/tpm/tis.c
M src/security/tpm/tis.h
M src/security/tpm/tss/tcg-1.2/tss.c
M src/security/tpm/tss/tcg-2.0/tss.c
11 files changed, 99 insertions(+), 31 deletions(-)
Approvals:
build bot (Jenkins): Verified
Christian Walter: Looks good to me, approved
Julius Werner: Looks good to me, approved
Martin L Roth: Looks good to me, approved
Jérémy Compostella: Looks good to me, but someone else must approve
diff --git a/src/drivers/crb/tis.c b/src/drivers/crb/tis.c
index a5d7dcc..766ee25 100644
--- a/src/drivers/crb/tis.c
+++ b/src/drivers/crb/tis.c
@@ -46,7 +46,7 @@
return TPM_SUCCESS;
}
-tis_sendrecv_fn tis_probe(void)
+tis_sendrecv_fn tis_probe(enum tpm_family *family)
{
struct tpm2_info info;
@@ -54,6 +54,10 @@
if (tpm2_init())
return NULL;
+ /* CRB interface exists only in TPM2 */
+ if (family != NULL)
+ *family = TPM_2;
+
tpm2_get_info(&info);
printk(BIOS_INFO, "Initialized TPM device %s revision %d\n", tis_get_dev_name(&info),
diff --git a/src/drivers/i2c/tpm/cr50.c b/src/drivers/i2c/tpm/cr50.c
index 8462198..b58fbc8 100644
--- a/src/drivers/i2c/tpm/cr50.c
+++ b/src/drivers/i2c/tpm/cr50.c
@@ -424,8 +424,11 @@
chip->cancel = &cr50_i2c_tis_ready;
}
-tpm_result_t tpm_vendor_probe(unsigned int bus, uint32_t addr)
+tpm_result_t tpm_vendor_probe(unsigned int bus, uint32_t addr, enum tpm_family *family)
{
+ /* cr50 is TPM2 */
+ if (family != NULL)
+ *family = TPM_2;
return TPM_SUCCESS;
}
diff --git a/src/drivers/i2c/tpm/tis.c b/src/drivers/i2c/tpm/tis.c
index 6cb05f0..fd09240 100644
--- a/src/drivers/i2c/tpm/tis.c
+++ b/src/drivers/i2c/tpm/tis.c
@@ -118,9 +118,9 @@
return TPM_SUCCESS;
}
-tis_sendrecv_fn tis_probe(void)
+tis_sendrecv_fn tis_probe(enum tpm_family *family)
{
- if (tpm_vendor_probe(CONFIG_DRIVER_TPM_I2C_BUS, CONFIG_DRIVER_TPM_I2C_ADDR))
+ if (tpm_vendor_probe(CONFIG_DRIVER_TPM_I2C_BUS, CONFIG_DRIVER_TPM_I2C_ADDR, family))
return NULL;
if (tpm_vendor_init(&chip, CONFIG_DRIVER_TPM_I2C_BUS, CONFIG_DRIVER_TPM_I2C_ADDR))
diff --git a/src/drivers/i2c/tpm/tis_atmel.c b/src/drivers/i2c/tpm/tis_atmel.c
index 0a29049..a0bbf33 100644
--- a/src/drivers/i2c/tpm/tis_atmel.c
+++ b/src/drivers/i2c/tpm/tis_atmel.c
@@ -107,7 +107,19 @@
return TPM_SUCCESS;
}
-tis_sendrecv_fn tis_probe(void)
+tis_sendrecv_fn tis_probe(enum tpm_family *family)
{
+ /*
+ * Can't query version or really anything as the device doesn't support
+ * much through this interface (can't specify address on accesses).
+ *
+ * Hence the assumption is that whatever TPM version is enabled at
+ * compile-time defines what the device supports. The check is written
+ * in a way to give TPM 1 preference even if support for both versions
+ * is compiled in.
+ */
+ if (family != NULL)
+ *family = CONFIG(TPM1) ? TPM_1 : TPM_2;
+
return &i2c_tis_sendrecv;
}
diff --git a/src/drivers/i2c/tpm/tpm.c b/src/drivers/i2c/tpm/tpm.c
index 541eb3a..eb27984 100644
--- a/src/drivers/i2c/tpm/tpm.c
+++ b/src/drivers/i2c/tpm/tpm.c
@@ -451,13 +451,29 @@
/* Initialization of I2C TPM */
-tpm_result_t tpm_vendor_probe(unsigned int bus, uint32_t addr)
+tpm_result_t tpm_vendor_probe(unsigned int bus, uint32_t addr, enum tpm_family *family)
{
struct stopwatch sw;
uint8_t buf = 0;
int ret;
long sw_run_duration = SLEEP_DURATION_PROBE_MS;
+ /*
+ * Infineon "I2C Protocol Stack Specification v0.20" is supposedly a
+ * simple adoption of the LPC TIS Protocol to the I2C Bus, but looking
+ * at "TCG PC Client Specific TIS" doesn't confirm that and Infineon's
+ * specification isn't publicly available.
+ *
+ * Because it's unknown how to access information about TPM version of
+ * the device in this case, the assumption is that whatever TPM version
+ * is enabled at compile-time defines what the device supports. And
+ * since this driver doesn't appear to be used with TPM 2 devices, the
+ * check is written in a way to give TPM 1 preference even if support
+ * for both versions is compiled in.
+ */
+ if (family != NULL)
+ *family = CONFIG(TPM1) ? TPM_1 : TPM_2;
+
tpm_dev.chip_type = UNKNOWN;
tpm_dev.bus = bus;
tpm_dev.addr = addr;
diff --git a/src/drivers/i2c/tpm/tpm.h b/src/drivers/i2c/tpm/tpm.h
index 628ad4d..46935e24 100644
--- a/src/drivers/i2c/tpm/tpm.h
+++ b/src/drivers/i2c/tpm/tpm.h
@@ -12,6 +12,7 @@
#ifndef __DRIVERS_TPM_SLB9635_I2C_TPM_H__
#define __DRIVERS_TPM_SLB9635_I2C_TPM_H__
+#include <security/tpm/tis.h>
#include <security/tpm/tss_errors.h>
#include <stdint.h>
@@ -51,7 +52,7 @@
/* ---------- Interface for TPM vendor ------------ */
-tpm_result_t tpm_vendor_probe(unsigned int bus, uint32_t addr);
+tpm_result_t tpm_vendor_probe(unsigned int bus, uint32_t addr, enum tpm_family *family);
tpm_result_t tpm_vendor_init(struct tpm_chip *chip, unsigned int bus, uint32_t dev_addr);
diff --git a/src/drivers/pc80/tpm/tis.c b/src/drivers/pc80/tpm/tis.c
index 90fa32e..da443d3 100644
--- a/src/drivers/pc80/tpm/tis.c
+++ b/src/drivers/pc80/tpm/tis.c
@@ -78,12 +78,6 @@
/* 1 second is plenty for anything TPM does.*/
#define MAX_DELAY_US USECS_PER_SEC
-enum tpm_family {
- TPM_UNKNOWN = 0,
- TPM_1 = 1,
- TPM_2 = 2,
-};
-
/*
* Structures defined below allow creating descriptions of TPM vendor/device
* ID information for run time discovery.
@@ -380,8 +374,10 @@
* Returns TPM_SUCCESS on success (the device is found or was found during
* an earlier invocation) or TPM_CB_FAIL if the device is not found.
*/
-static tpm_result_t pc80_tis_probe(void)
+static tpm_result_t pc80_tis_probe(enum tpm_family *family)
{
+ static enum tpm_family tpm_family;
+
const char *device_name = NULL;
const char *vendor_name = NULL;
const struct device_name *dev;
@@ -389,11 +385,13 @@
u16 vid, did;
u8 locality = 0, intf_type;
int i;
- enum tpm_family family;
const char *family_str;
- if (vendor_dev_id)
+ if (vendor_dev_id) {
+ if (family != NULL)
+ *family = tpm_family;
return TPM_SUCCESS; /* Already probed. */
+ }
didvid = tpm_read_did_vid(0);
if (!didvid || (didvid == 0xffffffff)) {
@@ -409,10 +407,10 @@
switch (intf_version) {
case 0:
case 2:
- family = TPM_1;
+ tpm_family = TPM_1;
break;
case 3:
- family = TPM_2;
+ tpm_family = TPM_2;
break;
default:
printf("%s: Unexpected TPM interface version: %d\n", __func__,
@@ -420,7 +418,7 @@
return TPM_CB_PROBE_FAILURE;
}
} else if (intf_type == 0) {
- family = TPM_2;
+ tpm_family = TPM_2;
} else {
printf("%s: Unexpected TPM interface type: %d\n", __func__, intf_type);
return TPM_CB_PROBE_FAILURE;
@@ -439,7 +437,7 @@
}
dev = &vendor_names[i].dev_names[j];
while (dev->dev_id != 0xffff) {
- if (dev->dev_id == did && dev->family == family) {
+ if (dev->dev_id == did && dev->family == tpm_family) {
device_name = dev->dev_name;
break;
}
@@ -449,7 +447,7 @@
break;
}
- family_str = (family == TPM_1 ? "TPM 1.2" : "TPM 2.0");
+ family_str = (tpm_family == TPM_1 ? "TPM 1.2" : "TPM 2.0");
if (vendor_name == NULL) {
printk(BIOS_INFO, "Found %s 0x%04x by 0x%04x\n", family_str, did, vid);
} else if (device_name == NULL) {
@@ -460,6 +458,8 @@
device_name, did, vendor_name, vid);
}
+ if (family != NULL)
+ *family = tpm_family;
return TPM_SUCCESS;
}
@@ -720,12 +720,15 @@
/*
* tis_probe()
*
- * Probe for the TPM device and set it up for use within locality 0. Returns
- * pointer to send-receive function on success or NULL on failure.
+ * Probe for the TPM device and set it up for use within locality 0.
+ *
+ * @tpm_family - pointer to tpm_family which is set to TPM family of the device.
+ *
+ * Returns pointer to send-receive function on success or NULL on failure.
*/
-tis_sendrecv_fn tis_probe(void)
+tis_sendrecv_fn tis_probe(enum tpm_family *family)
{
- if (pc80_tis_probe())
+ if (pc80_tis_probe(family))
return NULL;
if (pc80_tis_open())
diff --git a/src/drivers/spi/tpm/tis.c b/src/drivers/spi/tpm/tis.c
index 90d7f59..89ea985 100644
--- a/src/drivers/spi/tpm/tis.c
+++ b/src/drivers/spi/tpm/tis.c
@@ -40,7 +40,7 @@
return TPM_SUCCESS;
}
-tis_sendrecv_fn tis_probe(void)
+tis_sendrecv_fn tis_probe(enum tpm_family *family)
{
struct spi_slave spi;
struct tpm2_info info;
@@ -56,6 +56,10 @@
return NULL;
}
+ /* tpm2_process_command() is used unconditionally in tpm_sendrecv() */
+ if (family != NULL)
+ *family = TPM_2;
+
tpm2_get_info(&info);
printk(BIOS_INFO, "Initialized TPM device %s revision %d\n",
diff --git a/src/security/tpm/tis.h b/src/security/tpm/tis.h
index ac07bfb..4a8dc14 100644
--- a/src/security/tpm/tis.h
+++ b/src/security/tpm/tis.h
@@ -32,6 +32,12 @@
TPM_STS_RESPONSE_RETRY = (1 << 1),
};
+enum tpm_family {
+ TPM_UNKNOWN = 0,
+ TPM_1 = 1,
+ TPM_2 = 2,
+};
+
/*
* tis_sendrecv()
*
@@ -50,13 +56,16 @@
/*
* tis_probe()
*
- * Probe for the TPM device and set it up for use within locality 0. Returns
- * pointer to send-receive function on success or NULL on failure.
+ * Probe for the TPM device and set it up for use within locality 0.
+ *
+ * @family - pointer which is set to TPM family of the device
+ *
+ * Returns pointer to send-receive function on success or NULL on failure.
*
* Do not call this explicitly, it's meant to be used exclusively by TSS
* implementation (tlcl_lib_init() function to be specific).
*/
-tis_sendrecv_fn tis_probe(void);
+tis_sendrecv_fn tis_probe(enum tpm_family *family);
/*
* tis_vendor_write()
diff --git a/src/security/tpm/tss/tcg-1.2/tss.c b/src/security/tpm/tss/tcg-1.2/tss.c
index f0d28df..913f79b 100644
--- a/src/security/tpm/tss/tcg-1.2/tss.c
+++ b/src/security/tpm/tss/tcg-1.2/tss.c
@@ -153,13 +153,20 @@
tpm_result_t tlcl_lib_init(void)
{
+ enum tpm_family family;
+
if (tis_sendrecv != NULL)
return TPM_SUCCESS;
- tis_sendrecv = tis_probe();
+ tis_sendrecv = tis_probe(&family);
if (tis_sendrecv == NULL)
return TPM_CB_NO_DEVICE;
+ if (family != TPM_1) {
+ tis_sendrecv = NULL;
+ return TPM_CB_INTERNAL_INCONSISTENCY;
+ }
+
return TPM_SUCCESS;
}
diff --git a/src/security/tpm/tss/tcg-2.0/tss.c b/src/security/tpm/tss/tcg-2.0/tss.c
index 135d296..27390a7 100644
--- a/src/security/tpm/tss/tcg-2.0/tss.c
+++ b/src/security/tpm/tss/tcg-2.0/tss.c
@@ -211,15 +211,24 @@
/* This function is called directly by vboot, uses vboot return types. */
tpm_result_t tlcl_lib_init(void)
{
+ enum tpm_family family;
+
if (tis_sendrecv != NULL)
return TPM_SUCCESS;
- tis_sendrecv = tis_probe();
+ tis_sendrecv = tis_probe(&family);
if (tis_sendrecv == NULL) {
printk(BIOS_ERR, "%s: tis_probe returned error\n", __func__);
return TPM_CB_NO_DEVICE;
}
+ if (family != TPM_2) {
+ tis_sendrecv = NULL;
+ printk(BIOS_ERR, "%s: tis_probe returned unsupported TPM family: %d\n",
+ __func__, family);
+ return TPM_CB_INTERNAL_INCONSISTENCY;
+ }
+
return TPM_SUCCESS;
}
--
To view, visit https://review.coreboot.org/c/coreboot/+/69159?usp=email
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: main
Gerrit-Change-Id: I5006e0cdfef76ff79ce9e1cf280fcd5515ae01b0
Gerrit-Change-Number: 69159
Gerrit-PatchSet: 27
Gerrit-Owner: Sergii Dmytruk <sergii.dmytruk(a)3mdeb.com>
Gerrit-Reviewer: Christian Walter <christian.walter(a)9elements.com>
Gerrit-Reviewer: Julius Werner <jwerner(a)chromium.org>
Gerrit-Reviewer: Jérémy Compostella <jeremy.compostella(a)intel.com>
Gerrit-Reviewer: Krystian Hebel <krystian.hebel(a)3mdeb.com>
Gerrit-Reviewer: Martin L Roth <gaumless(a)gmail.com>
Gerrit-Reviewer: Michał Żygowski <michal.zygowski(a)3mdeb.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply(a)coreboot.org>
Gerrit-MessageType: merged
Attention is currently required from: Arthur Heymans, Christian Walter, Jincheng Li, Johnny Lin, Jonathan Zhang, Lean Sheng Tan, Patrick Rudolph, Tim Chu.
Shuo Liu has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/81374?usp=email )
Change subject: soc/intel/xeon_sp/gnr: Add soc_pci_domain_fill_ssdt
......................................................................
Patch Set 16:
(1 comment)
File src/soc/intel/xeon_sp/gnr/soc_acpi.c:
https://review.coreboot.org/c/coreboot/+/81374/comment/5b2c4732_7a1cfc13 :
PS16, Line 85: acpigen_emit_eisaid("ACPI0016");
updated to ACPI0016 per CXL spec 3.1
9.18.2 CXL _OSC
According to ACPI Specification, _OSC (Operating System Capabilities) is a control
method that is used by OSs to communicate to the System Firmware the capabilities
supported by the OS and to negotiate ownership of specific capabilities.
The _OSC interface defined in this section applies only to “Host Bridge” ACPI devices
that originate CXL hierarchies. As specified in Section 9.12, these ACPI devices must
have an _HID of (or a _CID that includes) EISAID(“ACPI0016”). CXL _OSC is required
for a CXL VH. CXL _OSC is optional for an RCD. A CXL Host Bridge also originates a
PCIe hierarchy and will have a _CID of EISAID(“PNP0A08”). As such, a CXL Host Bridge
device may expose both CXL _OSC and PCIe _OSC.
The _OSC interface for a CXL Host Bridge is identified by the Universal Unique Identifier
(UUID) 68f2d50b-c469-4d8a-bd3d-941a103fd3fc.
--
To view, visit https://review.coreboot.org/c/coreboot/+/81374?usp=email
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: main
Gerrit-Change-Id: I28bfdf74d8044235f79f67d832860d8b4306670c
Gerrit-Change-Number: 81374
Gerrit-PatchSet: 16
Gerrit-Owner: Shuo Liu <shuo.liu(a)intel.com>
Gerrit-Reviewer: Arthur Heymans <arthur(a)aheymans.xyz>
Gerrit-Reviewer: Christian Walter <christian.walter(a)9elements.com>
Gerrit-Reviewer: Jincheng Li <jincheng.li(a)intel.com>
Gerrit-Reviewer: Johnny Lin <Johnny_Lin(a)wiwynn.com>
Gerrit-Reviewer: Jonathan Zhang <jon.zhixiong.zhang(a)gmail.com>
Gerrit-Reviewer: Lean Sheng Tan <sheng.tan(a)9elements.com>
Gerrit-Reviewer: Patrick Rudolph <patrick.rudolph(a)9elements.com>
Gerrit-Reviewer: Tim Chu <Tim.Chu(a)quantatw.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply(a)coreboot.org>
Gerrit-Attention: Patrick Rudolph <patrick.rudolph(a)9elements.com>
Gerrit-Attention: Jonathan Zhang <jon.zhixiong.zhang(a)gmail.com>
Gerrit-Attention: Johnny Lin <Johnny_Lin(a)wiwynn.com>
Gerrit-Attention: Christian Walter <christian.walter(a)9elements.com>
Gerrit-Attention: Arthur Heymans <arthur(a)aheymans.xyz>
Gerrit-Attention: Jincheng Li <jincheng.li(a)intel.com>
Gerrit-Attention: Lean Sheng Tan <sheng.tan(a)9elements.com>
Gerrit-Attention: Tim Chu <Tim.Chu(a)quantatw.com>
Gerrit-Comment-Date: Thu, 28 Mar 2024 15:02:39 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
Attention is currently required from: Dinesh Gehlot, Eran Mitrani, Felix Singer, Hung-Te Lin, Jason Nien, Kapil Porwal, Martin Roth, Nick Vaccaro, Subrata Banik, Tarun, Yidi Lin.
Elyes Haouas has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/81477?usp=email )
Change subject: mb/google: Remove blank lines before '}' and after '{'
......................................................................
Patch Set 2:
(1 comment)
Patchset:
PS1:
> Squash into CB:81463
Acknowledged
--
To view, visit https://review.coreboot.org/c/coreboot/+/81477?usp=email
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: main
Gerrit-Change-Id: If68303cd59b287c8a5c982063b2ab75fd74898d6
Gerrit-Change-Number: 81477
Gerrit-PatchSet: 2
Gerrit-Owner: Elyes Haouas <ehaouas(a)noos.fr>
Gerrit-Reviewer: Dinesh Gehlot <digehlot(a)google.com>
Gerrit-Reviewer: Eran Mitrani <mitrani(a)google.com>
Gerrit-Reviewer: Eric Lai <ericllai(a)google.com>
Gerrit-Reviewer: Hung-Te Lin <hungte(a)chromium.org>
Gerrit-Reviewer: Jakub Czapiga <czapiga(a)google.com>
Gerrit-Reviewer: Jason Nien <jason.nien(a)amd.corp-partner.google.com>
Gerrit-Reviewer: Kapil Porwal <kapilporwal(a)google.com>
Gerrit-Reviewer: Martin Roth <martin.roth(a)amd.corp-partner.google.com>
Gerrit-Reviewer: Nick Vaccaro <nvaccaro(a)chromium.org>
Gerrit-Reviewer: Subrata Banik <subratabanik(a)google.com>
Gerrit-Reviewer: Tarun <tstuli(a)gmail.com>
Gerrit-Reviewer: Yidi Lin <yidilin(a)google.com>
Gerrit-Reviewer: Yu-Ping Wu <yupingso(a)google.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply(a)coreboot.org>
Gerrit-CC: Felix Singer <service+coreboot-gerrit(a)felixsinger.de>
Gerrit-Attention: Felix Singer <service+coreboot-gerrit(a)felixsinger.de>
Gerrit-Attention: Hung-Te Lin <hungte(a)chromium.org>
Gerrit-Attention: Eran Mitrani <mitrani(a)google.com>
Gerrit-Attention: Jason Nien <jason.nien(a)amd.corp-partner.google.com>
Gerrit-Attention: Subrata Banik <subratabanik(a)google.com>
Gerrit-Attention: Dinesh Gehlot <digehlot(a)google.com>
Gerrit-Attention: Kapil Porwal <kapilporwal(a)google.com>
Gerrit-Attention: Nick Vaccaro <nvaccaro(a)chromium.org>
Gerrit-Attention: Martin Roth <martin.roth(a)amd.corp-partner.google.com>
Gerrit-Attention: Yidi Lin <yidilin(a)google.com>
Gerrit-Attention: Tarun <tstuli(a)gmail.com>
Gerrit-Comment-Date: Thu, 28 Mar 2024 14:51:07 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Felix Singer <service+coreboot-gerrit(a)felixsinger.de>
Gerrit-MessageType: comment