diff options
811 files changed, 42263 insertions, 6638 deletions
@@ -44,3 +44,4 @@ /r /e /xbmkpath/ +/xbmkwd/ diff --git a/config/coreboot/coreboot413/patches/0001-cbfstool-Make-use-of-spurious-null-termination.patch b/config/coreboot/coreboot413/patches/0001-cbfstool-Make-use-of-spurious-null-termination.patch deleted file mode 100644 index dfc684e1..00000000 --- a/config/coreboot/coreboot413/patches/0001-cbfstool-Make-use-of-spurious-null-termination.patch +++ /dev/null @@ -1,56 +0,0 @@ -From f22f408956bf02609a96b7d72fb3321da159bfc6 Mon Sep 17 00:00:00 2001 -From: Nico Huber <nico.huber@secunet.com> -Date: Tue, 22 Jun 2021 13:49:44 +0000 -Subject: [PATCH 1/1] cbfstool: Make use of spurious null-termination - -The null-termination of `filetypes` was added after the code was -written, obviously resulting in NULL dereferences. As some more -code has grown around the termination, it's hard to revert the -regression, so let's update the code that still used the array -length. - -This fixes commit 7f5f9331d1 (util/cbfstool: fix buffer over-read) -which actually did fix something, but only one path while it broke -two others. We should be careful with fixes, they can always break -something else. Especially when a dumb tool triggered the patching -it seems likely that fewer people looked into related code. - -Change-Id: If2ece1f5ad62952ed2e57769702e318ba5468f0c -Signed-off-by: Nico Huber <nico.huber@secunet.com> -Reviewed-on: https://review.coreboot.org/c/coreboot/+/55763 -Tested-by: build bot (Jenkins) <no-reply@coreboot.org> -Reviewed-by: Julius Werner <jwerner@chromium.org> ---- - util/cbfstool/common.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/util/cbfstool/common.c b/util/cbfstool/common.c -index e2ed38ffc4..539d0baccf 100644 ---- a/util/cbfstool/common.c -+++ b/util/cbfstool/common.c -@@ -168,10 +168,10 @@ void print_supported_architectures(void) - - void print_supported_filetypes(void) - { -- int i, number = ARRAY_SIZE(filetypes); -+ int i; - -- for (i=0; i<number; i++) { -- printf(" %s%c", filetypes[i].name, (i==(number-1))?'\n':','); -+ for (i=0; filetypes[i].name; i++) { -+ printf(" %s%c", filetypes[i].name, filetypes[i + 1].name ? ',' : '\n'); - if ((i%8) == 7) - printf("\n"); - } -@@ -180,7 +180,7 @@ void print_supported_filetypes(void) - uint64_t intfiletype(const char *name) - { - size_t i; -- for (i = 0; i < (sizeof(filetypes) / sizeof(struct typedesc_t)); i++) -+ for (i = 0; filetypes[i].name; i++) - if (strcmp(filetypes[i].name, name) == 0) - return filetypes[i].type; - return -1; --- -2.39.2 - diff --git a/config/coreboot/coreboot413/target.cfg b/config/coreboot/coreboot413/target.cfg deleted file mode 100644 index a0aae341..00000000 --- a/config/coreboot/coreboot413/target.cfg +++ /dev/null @@ -1,4 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -tree="coreboot413" -rev="5c186c6777c9438ff4681929c9c25c98dee28bef" diff --git a/config/coreboot/d510mo/config/libgfxinit_txtmode b/config/coreboot/d510mo/config/libgfxinit_txtmode index f3c3f17f..9c10d98d 100644 --- a/config/coreboot/d510mo/config/libgfxinit_txtmode +++ b/config/coreboot/d510mo/config/libgfxinit_txtmode @@ -213,6 +213,7 @@ CONFIG_BOARD_INTEL_D510MO=y # Ptlrvp # # CONFIG_BOARD_INTEL_PTLRVP is not set +# CONFIG_BOARD_INTEL_PTLRVP_CHROMEEC is not set # CONFIG_BOARD_INTEL_SKLSDLBRK is not set # CONFIG_BOARD_INTEL_SHADOWMOUNTAIN is not set # CONFIG_BOARD_INTEL_STRAGO is not set @@ -271,6 +272,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x80000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -317,7 +319,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -373,7 +374,6 @@ CONFIG_SUPERIO_WINBOND_W83627THG=y # Embedded Controllers # CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -450,6 +450,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/d510mo_16mb/config/libgfxinit_txtmode b/config/coreboot/d510mo_16mb/config/libgfxinit_txtmode index ab549bef..98148df2 100644 --- a/config/coreboot/d510mo_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/d510mo_16mb/config/libgfxinit_txtmode @@ -213,6 +213,7 @@ CONFIG_BOARD_INTEL_D510MO=y # Ptlrvp # # CONFIG_BOARD_INTEL_PTLRVP is not set +# CONFIG_BOARD_INTEL_PTLRVP_CHROMEEC is not set # CONFIG_BOARD_INTEL_SKLSDLBRK is not set # CONFIG_BOARD_INTEL_SHADOWMOUNTAIN is not set # CONFIG_BOARD_INTEL_STRAGO is not set @@ -271,6 +272,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x80000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -317,7 +319,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -373,7 +374,6 @@ CONFIG_SUPERIO_WINBOND_W83627THG=y # Embedded Controllers # CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -450,6 +450,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/d945gclf_512kb/config/libgfxinit_txtmode b/config/coreboot/d945gclf_512kb/config/libgfxinit_txtmode index 8d3e113d..8020fbc2 100644 --- a/config/coreboot/d945gclf_512kb/config/libgfxinit_txtmode +++ b/config/coreboot/d945gclf_512kb/config/libgfxinit_txtmode @@ -214,6 +214,7 @@ CONFIG_BOARD_INTEL_D945GCLF=y # Ptlrvp # # CONFIG_BOARD_INTEL_PTLRVP is not set +# CONFIG_BOARD_INTEL_PTLRVP_CHROMEEC is not set # CONFIG_BOARD_INTEL_SKLSDLBRK is not set # CONFIG_BOARD_INTEL_SHADOWMOUNTAIN is not set # CONFIG_BOARD_INTEL_STRAGO is not set @@ -270,6 +271,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -316,7 +318,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -372,7 +373,6 @@ CONFIG_SUPERIO_SMSC_LPC47M15X=y # Embedded Controllers # CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -445,6 +445,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/d945gclf_8mb/config/libgfxinit_txtmode b/config/coreboot/d945gclf_8mb/config/libgfxinit_txtmode index fe65123e..0e44adc4 100644 --- a/config/coreboot/d945gclf_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/d945gclf_8mb/config/libgfxinit_txtmode @@ -214,6 +214,7 @@ CONFIG_BOARD_INTEL_D945GCLF=y # Ptlrvp # # CONFIG_BOARD_INTEL_PTLRVP is not set +# CONFIG_BOARD_INTEL_PTLRVP_CHROMEEC is not set # CONFIG_BOARD_INTEL_SKLSDLBRK is not set # CONFIG_BOARD_INTEL_SHADOWMOUNTAIN is not set # CONFIG_BOARD_INTEL_STRAGO is not set @@ -270,6 +271,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -316,7 +318,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -372,7 +373,6 @@ CONFIG_SUPERIO_SMSC_LPC47M15X=y # Embedded Controllers # CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -445,6 +445,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/default/nuke.list b/config/coreboot/default/nuke.list new file mode 100644 index 00000000..e6c247d2 --- /dev/null +++ b/config/coreboot/default/nuke.list @@ -0,0 +1,18 @@ +3rdparty/fsp/EagleStreamFspBinPkg +3rdparty/fsp/MeteorLakeFspBinPkg +3rdparty/fsp/IceLakeFspBinPkg +3rdparty/fsp/AmberLakeFspBinPkg +3rdparty/fsp/DenvertonNSFspBinPkg +3rdparty/fsp/TigerLakeFspBinPkg +3rdparty/fsp/CedarIslandFspBinPkg +3rdparty/fsp/ElkhartLakeFspBinPkg +3rdparty/fsp/CometLakeFspBinPkg +3rdparty/fsp/WhitleyFspBinPkg +3rdparty/fsp/ArrowLakeFspBinPkg +3rdparty/fsp/IdavilleFspBinPkg +3rdparty/fsp/BraswellFspBinPkg +3rdparty/fsp/CoffeeLakeFspBinPkg +3rdparty/fsp/RaptorLakeFspBinPkg +3rdparty/fsp/ApolloLakeFspBinPkg +3rdparty/fsp/SkylakeFspBinPkg +3rdparty/vboot/tests diff --git a/config/coreboot/default/patches/0001-add-c3-and-clockgen-to-apple-macbook21.patch b/config/coreboot/default/patches/0001-add-c3-and-clockgen-to-apple-macbook21.patch index 31c1bb30..04e896d9 100644 --- a/config/coreboot/default/patches/0001-add-c3-and-clockgen-to-apple-macbook21.patch +++ b/config/coreboot/default/patches/0001-add-c3-and-clockgen-to-apple-macbook21.patch @@ -1,7 +1,7 @@ -From bd959c38f6ee21db1ff8f4fbb0675e38bfbe1147 Mon Sep 17 00:00:00 2001 +From 7436b357fbe12233f3fbc5d360f296e6e15d3c2d Mon Sep 17 00:00:00 2001 From: Vitali64 <5405891-vitali64yt@users.noreply.gitlab.com> Date: Wed, 27 Oct 2021 13:36:01 +0200 -Subject: [PATCH 01/37] add c3 and clockgen to apple/macbook21 +Subject: [PATCH 01/40] add c3 and clockgen to apple/macbook21 --- src/mainboard/apple/macbook21/Kconfig | 1 + @@ -64,5 +64,5 @@ index fd86e939b9..263fbabcd1 100644 end end -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0002-lenovo-t400-Enable-all-SATA-ports.patch b/config/coreboot/default/patches/0002-lenovo-t400-Enable-all-SATA-ports.patch index 0c2b080f..2040cbc2 100644 --- a/config/coreboot/default/patches/0002-lenovo-t400-Enable-all-SATA-ports.patch +++ b/config/coreboot/default/patches/0002-lenovo-t400-Enable-all-SATA-ports.patch @@ -1,7 +1,7 @@ -From e5eab4c8043b89a325b4a28bf7da456d68475144 Mon Sep 17 00:00:00 2001 +From 7d2e54028f5558f0ccea5ecd8f5f812e28597a47 Mon Sep 17 00:00:00 2001 From: persmule <persmule@gmail.com> Date: Sun, 31 Oct 2021 23:33:26 +0000 -Subject: [PATCH 02/37] lenovo/t400: Enable all SATA ports +Subject: [PATCH 02/40] lenovo/t400: Enable all SATA ports There are 2 SATA ports on the chassis of t400(s), but at least one dock for t400 contains a port for (P/S)ATA device, and t400s has a eSATA port on its @@ -15,7 +15,7 @@ This patch unmasked all SATA ports found within t400s with factory firmware. 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mainboard/lenovo/t400/devicetree.cb b/src/mainboard/lenovo/t400/devicetree.cb -index 259c3e1b21..3d007533a4 100644 +index 9e056772e9..9361f330d2 100644 --- a/src/mainboard/lenovo/t400/devicetree.cb +++ b/src/mainboard/lenovo/t400/devicetree.cb @@ -46,8 +46,8 @@ chip northbridge/intel/gm45 @@ -30,5 +30,5 @@ index 259c3e1b21..3d007533a4 100644 register "sata_traffic_monitor" = "0" -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0003-lenovo-x230-set-me_state-Disabled-in-cmos.default.patch b/config/coreboot/default/patches/0003-lenovo-x230-set-me_state-Disabled-in-cmos.default.patch index 4ccde9a6..89294d6f 100644 --- a/config/coreboot/default/patches/0003-lenovo-x230-set-me_state-Disabled-in-cmos.default.patch +++ b/config/coreboot/default/patches/0003-lenovo-x230-set-me_state-Disabled-in-cmos.default.patch @@ -1,7 +1,7 @@ -From fd398cc10600cccce3dd4931651a5294ffebde9a Mon Sep 17 00:00:00 2001 +From 61051fbf9f1da48932930b512527626d1cf5bfbd Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Mon, 3 Jan 2022 19:06:22 +0000 -Subject: [PATCH 03/37] lenovo/x230: set me_state=Disabled in cmos.default +Subject: [PATCH 03/40] lenovo/x230: set me_state=Disabled in cmos.default I only recently found out about this. It's possible to use me_cleaner to do the same thing, but some people might just flash coreboot and not do @@ -33,5 +33,5 @@ index 732e214b32..8454f0eac0 100644 -me_state=Normal +me_state=Disabled -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0004-set-me_state-Disabled-on-all-cmos.default-files.patch b/config/coreboot/default/patches/0004-set-me_state-Disabled-on-all-cmos.default-files.patch index 39319d58..7b2ceabd 100644 --- a/config/coreboot/default/patches/0004-set-me_state-Disabled-on-all-cmos.default-files.patch +++ b/config/coreboot/default/patches/0004-set-me_state-Disabled-on-all-cmos.default-files.patch @@ -1,7 +1,7 @@ -From 74230d8123cb7c31afd084658720084b1a5ac5d9 Mon Sep 17 00:00:00 2001 +From be0124d69fef77370eff57cfdfb2d6eae4b0cec3 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Wed, 2 Mar 2022 21:50:01 +0000 -Subject: [PATCH 04/37] set me_state=Disabled on all cmos.default files! +Subject: [PATCH 04/40] set me_state=Disabled on all cmos.default files! yeah. why the hell isn't this the default @@ -120,5 +120,5 @@ index d61046df6b..8c793fd1c3 100644 -me_state=Enable +me_state=Disabled -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0005-util-ifdtool-add-nuke-flag-all-0xFF-on-region.patch b/config/coreboot/default/patches/0005-util-ifdtool-add-nuke-flag-all-0xFF-on-region.patch index 9c00ab79..314c6932 100644 --- a/config/coreboot/default/patches/0005-util-ifdtool-add-nuke-flag-all-0xFF-on-region.patch +++ b/config/coreboot/default/patches/0005-util-ifdtool-add-nuke-flag-all-0xFF-on-region.patch @@ -1,7 +1,7 @@ -From f592ac32892d7f99fa2e68504bb147e5d06184ca Mon Sep 17 00:00:00 2001 +From d97018fc490daf106582b0b7885a497cc2daba5a Mon Sep 17 00:00:00 2001 From: Leah Rowe <info@minifree.org> Date: Sun, 19 Feb 2023 18:21:43 +0000 -Subject: [PATCH 05/37] util/ifdtool: add --nuke flag (all 0xFF on region) +Subject: [PATCH 05/40] util/ifdtool: add --nuke flag (all 0xFF on region) When this option is used, the region's contents are overwritten with all ones (0xFF). @@ -201,5 +201,5 @@ index b21a89c0e1..fc91d4c239 100644 struct fpsba *fpsba = find_fpsba(image, size); struct fmsba *fmsba = find_fmsba(image, size); -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0006-mb-dell-e6400-Enable-01.0-device-in-devicetree-for-d.patch b/config/coreboot/default/patches/0006-mb-dell-e6400-Enable-01.0-device-in-devicetree-for-d.patch index ee60c3c8..104df923 100644 --- a/config/coreboot/default/patches/0006-mb-dell-e6400-Enable-01.0-device-in-devicetree-for-d.patch +++ b/config/coreboot/default/patches/0006-mb-dell-e6400-Enable-01.0-device-in-devicetree-for-d.patch @@ -1,20 +1,20 @@ -From 18069af7c0c6beedfadb615cca9127e82a0d8007 Mon Sep 17 00:00:00 2001 +From 1acdf1d0ff0c7a7ab5f2a0d7e5b57e21bdfaa1ae Mon Sep 17 00:00:00 2001 From: Nicholas Chin <nic.c3.14@gmail.com> Date: Sat, 6 May 2023 15:53:41 -0600 -Subject: [PATCH 06/37] mb/dell/e6400: Enable 01.0 device in devicetree for +Subject: [PATCH 06/40] mb/dell/e6400: Enable 01.0 device in devicetree for dGPU models Change-Id: I9b8e5d3cd1e1f64dc87b682b1e045b6342924aed Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com> --- - src/mainboard/dell/e6400/devicetree.cb | 2 +- + src/mainboard/dell/gm45_latitude/devicetree.cb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/src/mainboard/dell/e6400/devicetree.cb b/src/mainboard/dell/e6400/devicetree.cb -index bb954cbd7b..e9f3915d17 100644 ---- a/src/mainboard/dell/e6400/devicetree.cb -+++ b/src/mainboard/dell/e6400/devicetree.cb -@@ -19,7 +19,7 @@ chip northbridge/intel/gm45 +diff --git a/src/mainboard/dell/gm45_latitude/devicetree.cb b/src/mainboard/dell/gm45_latitude/devicetree.cb +index 5919803be2..76dae87153 100644 +--- a/src/mainboard/dell/gm45_latitude/devicetree.cb ++++ b/src/mainboard/dell/gm45_latitude/devicetree.cb +@@ -18,7 +18,7 @@ chip northbridge/intel/gm45 ops gm45_pci_domain_ops device pci 00.0 on end # host bridge @@ -24,5 +24,5 @@ index bb954cbd7b..e9f3915d17 100644 device pci 02.1 on end # Display device pci 03.0 on end # ME -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0007-Remove-warning-for-coreboot-images-built-without-a-p.patch b/config/coreboot/default/patches/0007-Remove-warning-for-coreboot-images-built-without-a-p.patch index 525bd366..e8c0f449 100644 --- a/config/coreboot/default/patches/0007-Remove-warning-for-coreboot-images-built-without-a-p.patch +++ b/config/coreboot/default/patches/0007-Remove-warning-for-coreboot-images-built-without-a-p.patch @@ -1,7 +1,7 @@ -From 9563c107a4b40e66b610d7205a21590c7c181c78 Mon Sep 17 00:00:00 2001 +From aab9296997bd88a86bbb40079a9caf504db81cea Mon Sep 17 00:00:00 2001 From: Nicholas Chin <nic.c3.14@gmail.com> Date: Fri, 12 May 2023 19:55:15 -0600 -Subject: [PATCH 07/37] Remove warning for coreboot images built without a +Subject: [PATCH 07/40] Remove warning for coreboot images built without a payload I added this in upstream to prevent people from accidentally flashing @@ -35,5 +35,5 @@ index 5f988dac1b..516133880f 100644 -.PHONY: clean-payloads distclean-payloads print-repo-info-payloads warn_no_payload +.PHONY: clean-payloads distclean-payloads print-repo-info-payloads -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0008-HACK-Disable-coreboot-related-BL31-features.patch b/config/coreboot/default/patches/0008-HACK-Disable-coreboot-related-BL31-features.patch index bd2c56bd..66043dc3 100644 --- a/config/coreboot/default/patches/0008-HACK-Disable-coreboot-related-BL31-features.patch +++ b/config/coreboot/default/patches/0008-HACK-Disable-coreboot-related-BL31-features.patch @@ -1,7 +1,7 @@ -From 7f650a19d30fe6157b150c5248d6086007323d72 Mon Sep 17 00:00:00 2001 +From 319a77d9eeaaf1e344a380b1b449e6a56b3dc92c Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak <alpernebiyasak@gmail.com> Date: Thu, 22 Jun 2023 16:44:27 +0300 -Subject: [PATCH 08/37] HACK: Disable coreboot related BL31 features +Subject: [PATCH 08/40] HACK: Disable coreboot related BL31 features I don't know why, but removing this BL31 make argument lets gru-kevin power off properly when shut down from Linux. Needs investigation. @@ -24,5 +24,5 @@ index f54c6d22fc..b075abfd42 100644 BL31_MAKEARGS += BUILD_PLAT="$(BL31_BUILD)" -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0009-dell-e6430-use-ME-Soft-Temporary-Disable.patch b/config/coreboot/default/patches/0009-dell-e6430-use-ME-Soft-Temporary-Disable.patch index ca3b6264..5ffd4431 100644 --- a/config/coreboot/default/patches/0009-dell-e6430-use-ME-Soft-Temporary-Disable.patch +++ b/config/coreboot/default/patches/0009-dell-e6430-use-ME-Soft-Temporary-Disable.patch @@ -1,7 +1,7 @@ -From 3f6f65ed6a435fe49534c8a0b5cb98c3eac71150 Mon Sep 17 00:00:00 2001 +From d9066d7f51d5742ae8ed1c7ab096ee857358cc48 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sun, 5 Nov 2023 11:41:41 +0000 -Subject: [PATCH 09/37] dell/e6430: use ME Soft Temporary Disable +Subject: [PATCH 09/40] dell/e6430: use ME Soft Temporary Disable i overlooked this. it's set on other boards. @@ -26,5 +26,5 @@ index 2a5b30f2b7..279415dfd1 100644 -me_state=Normal +me_state=Disabled -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0010-mb-hp-Add-Compaq-Elite-8300-CMT-port.patch b/config/coreboot/default/patches/0010-mb-hp-Add-Compaq-Elite-8300-CMT-port.patch index 2a7d5c17..f093db5c 100644 --- a/config/coreboot/default/patches/0010-mb-hp-Add-Compaq-Elite-8300-CMT-port.patch +++ b/config/coreboot/default/patches/0010-mb-hp-Add-Compaq-Elite-8300-CMT-port.patch @@ -1,7 +1,7 @@ -From b4d48233a8d829d7285501f662d999aad898be21 Mon Sep 17 00:00:00 2001 +From 922357b7d5b0b5304b0d4296b2f03961a17288a6 Mon Sep 17 00:00:00 2001 From: Riku Viitanen <riku.viitanen@protonmail.com> Date: Sat, 23 Dec 2023 19:02:10 +0200 -Subject: [PATCH 10/37] mb/hp: Add Compaq Elite 8300 CMT port +Subject: [PATCH 10/40] mb/hp: Add Compaq Elite 8300 CMT port Based on autoport and Z220 SuperIO code. @@ -868,5 +868,5 @@ index 0000000000..8dbd95ef96 + .enable_dev = mainboard_enable, +}; -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0011-nb-intel-haswell-make-IOMMU-a-runtime-option.patch b/config/coreboot/default/patches/0011-nb-intel-haswell-make-IOMMU-a-runtime-option.patch index f8c56155..4c773248 100644 --- a/config/coreboot/default/patches/0011-nb-intel-haswell-make-IOMMU-a-runtime-option.patch +++ b/config/coreboot/default/patches/0011-nb-intel-haswell-make-IOMMU-a-runtime-option.patch @@ -1,7 +1,7 @@ -From a16ff494adb1f706d402a2e167d0d53c775d0897 Mon Sep 17 00:00:00 2001 +From 41256272a7637426c9e68fd633ceb1c108f183c9 Mon Sep 17 00:00:00 2001 From: Leah Rowe <info@minifree.org> Date: Sat, 2 Mar 2024 22:51:09 +0000 -Subject: [PATCH 11/37] nb/intel/haswell: make IOMMU a runtime option +Subject: [PATCH 11/40] nb/intel/haswell: make IOMMU a runtime option When I tested graphics cards on a coreboot port for Dell OptiPlex 9020 SFF, I could not use a graphics card unless @@ -288,5 +288,5 @@ index e47deb5da6..1a7e0b1076 100644 if (capid0_a & VTD_DISABLE) return; -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0012-dell-optiplex_9020-Disable-IOMMU-by-default.patch b/config/coreboot/default/patches/0012-dell-optiplex_9020-Disable-IOMMU-by-default.patch index e578d22a..24b769cd 100644 --- a/config/coreboot/default/patches/0012-dell-optiplex_9020-Disable-IOMMU-by-default.patch +++ b/config/coreboot/default/patches/0012-dell-optiplex_9020-Disable-IOMMU-by-default.patch @@ -1,7 +1,7 @@ -From 4b0536ce7cd55eedc52d13497bea59d91e8924d8 Mon Sep 17 00:00:00 2001 +From b243452bf1ed7c9aee1e6685091e98f52d7229c7 Mon Sep 17 00:00:00 2001 From: Leah Rowe <info@minifree.org> Date: Sat, 2 Mar 2024 23:00:09 +0000 -Subject: [PATCH 12/37] dell/optiplex_9020: Disable IOMMU by default +Subject: [PATCH 12/40] dell/optiplex_9020: Disable IOMMU by default Needed to make graphics cards work. Turning it on is recommended if only using iGPU, otherwise leave it off @@ -25,5 +25,5 @@ index 8000eea8c0..0700f971ee 100644 -iommu=Enable +iommu=Disable -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0013-nb-haswell-Fully-disable-iGPU-when-dGPU-is-used.patch b/config/coreboot/default/patches/0013-nb-haswell-Fully-disable-iGPU-when-dGPU-is-used.patch index 89584d95..447693aa 100644 --- a/config/coreboot/default/patches/0013-nb-haswell-Fully-disable-iGPU-when-dGPU-is-used.patch +++ b/config/coreboot/default/patches/0013-nb-haswell-Fully-disable-iGPU-when-dGPU-is-used.patch @@ -1,7 +1,7 @@ -From c8329f84b2d06581dcbeecedc38b7c4715a9cba7 Mon Sep 17 00:00:00 2001 +From 215661dbe631c21a2533cc93bdd1e9f82aa9601e Mon Sep 17 00:00:00 2001 From: Leah Rowe <info@minifree.org> Date: Sat, 6 Apr 2024 01:22:47 +0100 -Subject: [PATCH 13/37] nb/haswell: Fully disable iGPU when dGPU is used +Subject: [PATCH 13/40] nb/haswell: Fully disable iGPU when dGPU is used My earlier patch disabled decode *and* disabled the iGPU itself, but a subsequent revision disabled only VGA decode. Upon revisiting, I @@ -47,5 +47,5 @@ index f7fad3183d..1b188e92e1 100644 static struct device_operations gma_func0_ops = { -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0014-ec-dell-mec5035-Add-S3-suspend-SMI-handler.patch b/config/coreboot/default/patches/0014-ec-dell-mec5035-Add-S3-suspend-SMI-handler.patch index 70556090..bfbddae1 100644 --- a/config/coreboot/default/patches/0014-ec-dell-mec5035-Add-S3-suspend-SMI-handler.patch +++ b/config/coreboot/default/patches/0014-ec-dell-mec5035-Add-S3-suspend-SMI-handler.patch @@ -1,7 +1,7 @@ -From 73dbf291631fdbae2d8e8a761c147523c8d9e65c Mon Sep 17 00:00:00 2001 +From aadef041f002b9f0504fcc67df39654680d67bdd Mon Sep 17 00:00:00 2001 From: Nicholas Chin <nic.c3.14@gmail.com> Date: Fri, 3 May 2024 11:03:32 -0600 -Subject: [PATCH 14/37] ec/dell/mec5035: Add S3 suspend SMI handler +Subject: [PATCH 14/40] ec/dell/mec5035: Add S3 suspend SMI handler This is necessary for S3 resume to work on SNB and newer Dell Latitude laptops. If a command isn't sent, the EC cuts power to the DIMMs, @@ -143,5 +143,5 @@ index 0000000000..958733bf97 + } +} -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0015-nb-haswell-lock-policy-regs-when-disabling-IOMMU.patch b/config/coreboot/default/patches/0015-nb-haswell-lock-policy-regs-when-disabling-IOMMU.patch index 9525b8ce..c1ae05be 100644 --- a/config/coreboot/default/patches/0015-nb-haswell-lock-policy-regs-when-disabling-IOMMU.patch +++ b/config/coreboot/default/patches/0015-nb-haswell-lock-policy-regs-when-disabling-IOMMU.patch @@ -1,7 +1,7 @@ -From a507fe609a2e99c95218ec430916eaf4c3cb61d9 Mon Sep 17 00:00:00 2001 +From 4a24221fc735117e521cbd7e08d71b6e6a061517 Mon Sep 17 00:00:00 2001 From: Leah Rowe <info@minifree.org> Date: Sat, 4 May 2024 02:00:53 +0100 -Subject: [PATCH 15/37] nb/haswell: lock policy regs when disabling IOMMU +Subject: [PATCH 15/40] nb/haswell: lock policy regs when disabling IOMMU Angel Pons told me I should do it. See comments here: https://review.coreboot.org/c/coreboot/+/81016 @@ -51,5 +51,5 @@ index 1a7e0b1076..e9506ee830 100644 /* Set L3HIT2PEND_DIS, lock GFXVTBAR policy config registers */ u32 reg32; -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0016-nb-intel-gm45-Make-DDR2-raminit-work.patch b/config/coreboot/default/patches/0016-nb-intel-gm45-Make-DDR2-raminit-work.patch index 091a15c4..7537c1a6 100644 --- a/config/coreboot/default/patches/0016-nb-intel-gm45-Make-DDR2-raminit-work.patch +++ b/config/coreboot/default/patches/0016-nb-intel-gm45-Make-DDR2-raminit-work.patch @@ -1,7 +1,7 @@ -From 9e0a6aa376db81f9409eda92b6783a8262c1fedb Mon Sep 17 00:00:00 2001 +From 20921eb7165b23e7b78e4c4126ff5bab8725404b Mon Sep 17 00:00:00 2001 From: Angel Pons <th3fanbus@gmail.com> Date: Mon, 10 May 2021 22:40:59 +0200 -Subject: [PATCH 16/37] nb/intel/gm45: Make DDR2 raminit work +Subject: [PATCH 16/40] nb/intel/gm45: Make DDR2 raminit work List of changes: - Update some timing and ODT values @@ -219,5 +219,5 @@ index aef863f05a..b74765fd9c 100644 + mchbar_clrsetbits32(0x4d0, 0x3f << 20, magic_comp[1] << 20); } -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0017-nb-gm45-Fix-Angel-s-DDR2-RCOMP-fix-on-DDR3-boards.patch b/config/coreboot/default/patches/0017-nb-gm45-Fix-Angel-s-DDR2-RCOMP-fix-on-DDR3-boards.patch index 4ba74757..808d90d6 100644 --- a/config/coreboot/default/patches/0017-nb-gm45-Fix-Angel-s-DDR2-RCOMP-fix-on-DDR3-boards.patch +++ b/config/coreboot/default/patches/0017-nb-gm45-Fix-Angel-s-DDR2-RCOMP-fix-on-DDR3-boards.patch @@ -1,7 +1,7 @@ -From 6acc310c1d695d47c148296da9da189de21d58be Mon Sep 17 00:00:00 2001 +From b5fe5366a03f934df87c5537b12f006ccee0d695 Mon Sep 17 00:00:00 2001 From: Leah Rowe <info@minifree.org> Date: Tue, 6 Aug 2024 00:50:24 +0100 -Subject: [PATCH 17/37] nb/gm45: Fix Angel's DDR2 RCOMP fix on DDR3 boards +Subject: [PATCH 17/40] nb/gm45: Fix Angel's DDR2 RCOMP fix on DDR3 boards We add this patch: @@ -236,5 +236,5 @@ index b74765fd9c..5d4505e063 100644 + } } -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0018-mb-dell-e6400-Use-100-MHz-reference-clock-for-displa.patch b/config/coreboot/default/patches/0018-mb-dell-e6400-Use-100-MHz-reference-clock-for-displa.patch index 1cf7c0ac..b537346e 100644 --- a/config/coreboot/default/patches/0018-mb-dell-e6400-Use-100-MHz-reference-clock-for-displa.patch +++ b/config/coreboot/default/patches/0018-mb-dell-e6400-Use-100-MHz-reference-clock-for-displa.patch @@ -1,7 +1,7 @@ -From 7461210ecc7c8e41f3f941bd5ce7943e5f66c711 Mon Sep 17 00:00:00 2001 +From c075c12d5549cc6cfaa4fbb6bb3abd5e17503b04 Mon Sep 17 00:00:00 2001 From: Nicholas Chin <nic.c3.14@gmail.com> Date: Mon, 20 May 2024 10:24:16 -0600 -Subject: [PATCH 18/37] mb/dell/e6400: Use 100 MHz reference clock for display +Subject: [PATCH 18/40] mb/dell/e6400: Use 100 MHz reference clock for display The E6400 uses a 100 MHz reference clock for spread spectrum support on LVDS, whereas libgfxinit previously assumed a 96 MHz input clock. For @@ -14,24 +14,23 @@ display in the pre-OS graphics environment provided by libgfxinit. Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com> --- - src/mainboard/dell/e6400/Kconfig | 3 +++ - src/northbridge/intel/gm45/Kconfig | 4 ++++ - 2 files changed, 7 insertions(+) + src/mainboard/dell/gm45_latitude/Kconfig | 2 ++ + src/northbridge/intel/gm45/Kconfig | 4 ++++ + 2 files changed, 6 insertions(+) -diff --git a/src/mainboard/dell/e6400/Kconfig b/src/mainboard/dell/e6400/Kconfig -index 417d95fd5d..6fe1b1c456 100644 ---- a/src/mainboard/dell/e6400/Kconfig -+++ b/src/mainboard/dell/e6400/Kconfig -@@ -19,6 +19,9 @@ config BOARD_SPECIFIC_OPTIONS - select INTEL_GMA_HAVE_VBT - select EC_DELL_MEC5035 +diff --git a/src/mainboard/dell/gm45_latitude/Kconfig b/src/mainboard/dell/gm45_latitude/Kconfig +index 98ad18849c..4b026be2ba 100644 +--- a/src/mainboard/dell/gm45_latitude/Kconfig ++++ b/src/mainboard/dell/gm45_latitude/Kconfig +@@ -21,6 +21,8 @@ config BOARD_DELL_E6400 + select BOARD_DELL_GM45_LATITUDE_COMMON + if BOARD_DELL_GM45_LATITUDE_COMMON +config INTEL_GMA_DPLL_REF_FREQ + default 100000000 -+ - config MAINBOARD_DIR - default "dell/e6400" + config MAINBOARD_DIR + default "dell/gm45_latitude" diff --git a/src/northbridge/intel/gm45/Kconfig b/src/northbridge/intel/gm45/Kconfig index fef0d735b3..fc5df8b11a 100644 --- a/src/northbridge/intel/gm45/Kconfig @@ -48,5 +47,5 @@ index fef0d735b3..fc5df8b11a 100644 select VBOOT_STARTS_IN_BOOTBLOCK -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0019-nb-x4x-define-INTEL_GMA_DPLL_REF_FREQ.patch b/config/coreboot/default/patches/0019-nb-x4x-define-INTEL_GMA_DPLL_REF_FREQ.patch index 2edfaae3..cd1c919f 100644 --- a/config/coreboot/default/patches/0019-nb-x4x-define-INTEL_GMA_DPLL_REF_FREQ.patch +++ b/config/coreboot/default/patches/0019-nb-x4x-define-INTEL_GMA_DPLL_REF_FREQ.patch @@ -1,7 +1,7 @@ -From a683dffd774dbbe25cc77c0f7d3853232c17c2bf Mon Sep 17 00:00:00 2001 +From 5833266cabd5dd38596b20d3353eb7b105ffd235 Mon Sep 17 00:00:00 2001 From: Leah Rowe <info@minifree.org> Date: Mon, 12 Aug 2024 02:15:24 +0100 -Subject: [PATCH 19/37] nb/x4x: define INTEL_GMA_DPLL_REF_FREQ +Subject: [PATCH 19/40] nb/x4x: define INTEL_GMA_DPLL_REF_FREQ set it to 96MHz. fixes the following build error when building for x4x boards e.g. gigabyte ga-g41m-es2l: @@ -48,5 +48,5 @@ index 097e11126c..6430319f6a 100644 default 0x100000 if !SOUTHBRIDGE_INTEL_I82801GX -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0020-mb-dell-Convert-E6400-into-a-variant.patch b/config/coreboot/default/patches/0020-mb-dell-Convert-E6400-into-a-variant.patch deleted file mode 100644 index a0068142..00000000 --- a/config/coreboot/default/patches/0020-mb-dell-Convert-E6400-into-a-variant.patch +++ /dev/null @@ -1,243 +0,0 @@ -From a48ba23bb4a24730fa49b5a10b56c9de873dea8a Mon Sep 17 00:00:00 2001 -From: Nicholas Chin <nic.c3.14@gmail.com> -Date: Thu, 26 Sep 2024 19:48:26 -0600 -Subject: [PATCH 20/37] mb/dell: Convert E6400 into a variant - -All the GM45 Dell Latitudes should be nearly identical, so convert the -E6400 port into a variant so that future ports for the other systems can -share code with each other. - -Change-Id: I8094fce56eaaadb20aef173644cd3b2c0b008e95 -Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com> ---- - src/mainboard/dell/e6400/Makefile.mk | 10 -------- - .../dell/{e6400 => gm45_latitude}/Kconfig | 22 +++++++++++++----- - .../{e6400 => gm45_latitude}/Kconfig.name | 0 - src/mainboard/dell/gm45_latitude/Makefile.mk | 11 +++++++++ - .../dell/{e6400 => gm45_latitude}/acpi/ec.asl | 0 - .../acpi/ich9_pci_irqs.asl | 0 - .../{e6400 => gm45_latitude}/acpi/superio.asl | 0 - .../dell/{e6400 => gm45_latitude}/blc.c | 0 - .../{e6400 => gm45_latitude}/board_info.txt | 0 - .../dell/{e6400 => gm45_latitude}/bootblock.c | 0 - .../{e6400 => gm45_latitude}/cmos.default | 0 - .../dell/{e6400 => gm45_latitude}/cmos.layout | 0 - .../dell/{e6400 => gm45_latitude}/cstates.c | 0 - .../{e6400 => gm45_latitude}/devicetree.cb | 1 - - .../dell/{e6400 => gm45_latitude}/dsdt.asl | 0 - .../dell/{e6400 => gm45_latitude}/mainboard.c | 0 - .../dell/{e6400 => gm45_latitude}/romstage.c | 0 - .../variants}/e6400/data.vbt | Bin - .../variants}/e6400/gma-mainboard.ads | 0 - .../{ => gm45_latitude/variants}/e6400/gpio.c | 0 - .../variants}/e6400/hda_verb.c | 0 - .../variants/e6400/overridetree.cb | 7 ++++++ - 22 files changed, 34 insertions(+), 17 deletions(-) - delete mode 100644 src/mainboard/dell/e6400/Makefile.mk - rename src/mainboard/dell/{e6400 => gm45_latitude}/Kconfig (64%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/Kconfig.name (100%) - create mode 100644 src/mainboard/dell/gm45_latitude/Makefile.mk - rename src/mainboard/dell/{e6400 => gm45_latitude}/acpi/ec.asl (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/acpi/ich9_pci_irqs.asl (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/acpi/superio.asl (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/blc.c (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/board_info.txt (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/bootblock.c (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/cmos.default (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/cmos.layout (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/cstates.c (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/devicetree.cb (98%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/dsdt.asl (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/mainboard.c (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/romstage.c (100%) - rename src/mainboard/dell/{ => gm45_latitude/variants}/e6400/data.vbt (100%) - rename src/mainboard/dell/{ => gm45_latitude/variants}/e6400/gma-mainboard.ads (100%) - rename src/mainboard/dell/{ => gm45_latitude/variants}/e6400/gpio.c (100%) - rename src/mainboard/dell/{ => gm45_latitude/variants}/e6400/hda_verb.c (100%) - create mode 100644 src/mainboard/dell/gm45_latitude/variants/e6400/overridetree.cb - -diff --git a/src/mainboard/dell/e6400/Makefile.mk b/src/mainboard/dell/e6400/Makefile.mk -deleted file mode 100644 -index ca3a82db48..0000000000 ---- a/src/mainboard/dell/e6400/Makefile.mk -+++ /dev/null -@@ -1,10 +0,0 @@ --## SPDX-License-Identifier: GPL-2.0-only -- --bootblock-y += bootblock.c -- --romstage-y += gpio.c -- --ramstage-y += cstates.c --ramstage-y += blc.c -- --ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads -diff --git a/src/mainboard/dell/e6400/Kconfig b/src/mainboard/dell/gm45_latitude/Kconfig -similarity index 64% -rename from src/mainboard/dell/e6400/Kconfig -rename to src/mainboard/dell/gm45_latitude/Kconfig -index 6fe1b1c456..ba76fb6e8c 100644 ---- a/src/mainboard/dell/e6400/Kconfig -+++ b/src/mainboard/dell/gm45_latitude/Kconfig -@@ -1,9 +1,7 @@ - ## SPDX-License-Identifier: GPL-2.0-only - --if BOARD_DELL_E6400 -- --config BOARD_SPECIFIC_OPTIONS -- def_bool y -+config BOARD_DELL_GM45_LATITUDE_COMMON -+ def_bool n - select SYSTEM_TYPE_LAPTOP - select CPU_INTEL_SOCKET_P - select NORTHBRIDGE_INTEL_GM45 -@@ -19,19 +17,31 @@ config BOARD_SPECIFIC_OPTIONS - select INTEL_GMA_HAVE_VBT - select EC_DELL_MEC5035 - -+ -+config BOARD_DELL_E6400 -+ select BOARD_DELL_GM45_LATITUDE_COMMON -+ -+if BOARD_DELL_GM45_LATITUDE_COMMON -+ - config INTEL_GMA_DPLL_REF_FREQ - default 100000000 - - config MAINBOARD_DIR -- default "dell/e6400" -+ default "dell/gm45_latitude" - - config MAINBOARD_PART_NUMBER - default "Latitude E6400" if BOARD_DELL_E6400 - -+config OVERRIDE_DEVICETREE -+ default "variants/\$(CONFIG_VARIANT_DIR)/overridetree.cb" -+ -+config VARIANT_DIR -+ default "e6400" if BOARD_DELL_E6400 -+ - config USBDEBUG_HCD_INDEX - default 1 - - config CBFS_SIZE - default 0x1A0000 - --endif # BOARD_DELL_E6400 -+endif # BOARD_DELL_GM45_LATITUDE_COMMON -diff --git a/src/mainboard/dell/e6400/Kconfig.name b/src/mainboard/dell/gm45_latitude/Kconfig.name -similarity index 100% -rename from src/mainboard/dell/e6400/Kconfig.name -rename to src/mainboard/dell/gm45_latitude/Kconfig.name -diff --git a/src/mainboard/dell/gm45_latitude/Makefile.mk b/src/mainboard/dell/gm45_latitude/Makefile.mk -new file mode 100644 -index 0000000000..5295d5be22 ---- /dev/null -+++ b/src/mainboard/dell/gm45_latitude/Makefile.mk -@@ -0,0 +1,11 @@ -+## SPDX-License-Identifier: GPL-2.0-only -+ -+bootblock-y += bootblock.c -+ -+romstage-y += variants/$(VARIANT_DIR)/gpio.c -+ -+ramstage-y += cstates.c -+ramstage-y += blc.c -+ramstage-y += variants/$(VARIANT_DIR)/hda_verb.c -+ -+ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += variants/$(VARIANT_DIR)/gma-mainboard.ads -diff --git a/src/mainboard/dell/e6400/acpi/ec.asl b/src/mainboard/dell/gm45_latitude/acpi/ec.asl -similarity index 100% -rename from src/mainboard/dell/e6400/acpi/ec.asl -rename to src/mainboard/dell/gm45_latitude/acpi/ec.asl -diff --git a/src/mainboard/dell/e6400/acpi/ich9_pci_irqs.asl b/src/mainboard/dell/gm45_latitude/acpi/ich9_pci_irqs.asl -similarity index 100% -rename from src/mainboard/dell/e6400/acpi/ich9_pci_irqs.asl -rename to src/mainboard/dell/gm45_latitude/acpi/ich9_pci_irqs.asl -diff --git a/src/mainboard/dell/e6400/acpi/superio.asl b/src/mainboard/dell/gm45_latitude/acpi/superio.asl -similarity index 100% -rename from src/mainboard/dell/e6400/acpi/superio.asl -rename to src/mainboard/dell/gm45_latitude/acpi/superio.asl -diff --git a/src/mainboard/dell/e6400/blc.c b/src/mainboard/dell/gm45_latitude/blc.c -similarity index 100% -rename from src/mainboard/dell/e6400/blc.c -rename to src/mainboard/dell/gm45_latitude/blc.c -diff --git a/src/mainboard/dell/e6400/board_info.txt b/src/mainboard/dell/gm45_latitude/board_info.txt -similarity index 100% -rename from src/mainboard/dell/e6400/board_info.txt -rename to src/mainboard/dell/gm45_latitude/board_info.txt -diff --git a/src/mainboard/dell/e6400/bootblock.c b/src/mainboard/dell/gm45_latitude/bootblock.c -similarity index 100% -rename from src/mainboard/dell/e6400/bootblock.c -rename to src/mainboard/dell/gm45_latitude/bootblock.c -diff --git a/src/mainboard/dell/e6400/cmos.default b/src/mainboard/dell/gm45_latitude/cmos.default -similarity index 100% -rename from src/mainboard/dell/e6400/cmos.default -rename to src/mainboard/dell/gm45_latitude/cmos.default -diff --git a/src/mainboard/dell/e6400/cmos.layout b/src/mainboard/dell/gm45_latitude/cmos.layout -similarity index 100% -rename from src/mainboard/dell/e6400/cmos.layout -rename to src/mainboard/dell/gm45_latitude/cmos.layout -diff --git a/src/mainboard/dell/e6400/cstates.c b/src/mainboard/dell/gm45_latitude/cstates.c -similarity index 100% -rename from src/mainboard/dell/e6400/cstates.c -rename to src/mainboard/dell/gm45_latitude/cstates.c -diff --git a/src/mainboard/dell/e6400/devicetree.cb b/src/mainboard/dell/gm45_latitude/devicetree.cb -similarity index 98% -rename from src/mainboard/dell/e6400/devicetree.cb -rename to src/mainboard/dell/gm45_latitude/devicetree.cb -index e9f3915d17..76dae87153 100644 ---- a/src/mainboard/dell/e6400/devicetree.cb -+++ b/src/mainboard/dell/gm45_latitude/devicetree.cb -@@ -15,7 +15,6 @@ chip northbridge/intel/gm45 - register "pci_mmio_size" = "2048" - - device domain 0 on -- subsystemid 0x1028 0x0233 inherit - ops gm45_pci_domain_ops - - device pci 00.0 on end # host bridge -diff --git a/src/mainboard/dell/e6400/dsdt.asl b/src/mainboard/dell/gm45_latitude/dsdt.asl -similarity index 100% -rename from src/mainboard/dell/e6400/dsdt.asl -rename to src/mainboard/dell/gm45_latitude/dsdt.asl -diff --git a/src/mainboard/dell/e6400/mainboard.c b/src/mainboard/dell/gm45_latitude/mainboard.c -similarity index 100% -rename from src/mainboard/dell/e6400/mainboard.c -rename to src/mainboard/dell/gm45_latitude/mainboard.c -diff --git a/src/mainboard/dell/e6400/romstage.c b/src/mainboard/dell/gm45_latitude/romstage.c -similarity index 100% -rename from src/mainboard/dell/e6400/romstage.c -rename to src/mainboard/dell/gm45_latitude/romstage.c -diff --git a/src/mainboard/dell/e6400/data.vbt b/src/mainboard/dell/gm45_latitude/variants/e6400/data.vbt -similarity index 100% -rename from src/mainboard/dell/e6400/data.vbt -rename to src/mainboard/dell/gm45_latitude/variants/e6400/data.vbt -diff --git a/src/mainboard/dell/e6400/gma-mainboard.ads b/src/mainboard/dell/gm45_latitude/variants/e6400/gma-mainboard.ads -similarity index 100% -rename from src/mainboard/dell/e6400/gma-mainboard.ads -rename to src/mainboard/dell/gm45_latitude/variants/e6400/gma-mainboard.ads -diff --git a/src/mainboard/dell/e6400/gpio.c b/src/mainboard/dell/gm45_latitude/variants/e6400/gpio.c -similarity index 100% -rename from src/mainboard/dell/e6400/gpio.c -rename to src/mainboard/dell/gm45_latitude/variants/e6400/gpio.c -diff --git a/src/mainboard/dell/e6400/hda_verb.c b/src/mainboard/dell/gm45_latitude/variants/e6400/hda_verb.c -similarity index 100% -rename from src/mainboard/dell/e6400/hda_verb.c -rename to src/mainboard/dell/gm45_latitude/variants/e6400/hda_verb.c -diff --git a/src/mainboard/dell/gm45_latitude/variants/e6400/overridetree.cb b/src/mainboard/dell/gm45_latitude/variants/e6400/overridetree.cb -new file mode 100644 -index 0000000000..acc34a2252 ---- /dev/null -+++ b/src/mainboard/dell/gm45_latitude/variants/e6400/overridetree.cb -@@ -0,0 +1,7 @@ -+## SPDX-License-Identifier: GPL-2.0-or-later -+ -+chip northbridge/intel/gm45 -+ device domain 0 on -+ subsystemid 0x1028 0x0233 inherit -+ end -+end --- -2.39.5 - diff --git a/config/coreboot/default/patches/0021-mb-dell-gm45_latitudes-Add-E4300-variant.patch b/config/coreboot/default/patches/0020-mb-dell-gm45_latitudes-Add-E4300-variant.patch index af893982..3b2d59ce 100644 --- a/config/coreboot/default/patches/0021-mb-dell-gm45_latitudes-Add-E4300-variant.patch +++ b/config/coreboot/default/patches/0020-mb-dell-gm45_latitudes-Add-E4300-variant.patch @@ -1,7 +1,7 @@ -From b87e6774f0407ea48610c83ea54ab6a4b4a78a24 Mon Sep 17 00:00:00 2001 +From 75620139fe2bd6898d51dd7bd02e1031369feeec Mon Sep 17 00:00:00 2001 From: Nicholas Chin <nic.c3.14@gmail.com> Date: Thu, 26 Sep 2024 19:51:25 -0600 -Subject: [PATCH 21/37] mb/dell/gm45_latitudes: Add E4300 variant +Subject: [PATCH 20/40] mb/dell/gm45_latitudes: Add E4300 variant Change-Id: I0f2059501b11be103187e3ce1a7c04ab85ae63d2 Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com> @@ -21,10 +21,10 @@ Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com> create mode 100644 src/mainboard/dell/gm45_latitude/variants/e4300/overridetree.cb diff --git a/src/mainboard/dell/gm45_latitude/Kconfig b/src/mainboard/dell/gm45_latitude/Kconfig -index ba76fb6e8c..144f9bcdf0 100644 +index 4b026be2ba..9f0f56e304 100644 --- a/src/mainboard/dell/gm45_latitude/Kconfig +++ b/src/mainboard/dell/gm45_latitude/Kconfig -@@ -21,6 +21,9 @@ config BOARD_DELL_GM45_LATITUDE_COMMON +@@ -20,6 +20,9 @@ config BOARD_DELL_GM45_LATITUDE_COMMON config BOARD_DELL_E6400 select BOARD_DELL_GM45_LATITUDE_COMMON @@ -32,9 +32,9 @@ index ba76fb6e8c..144f9bcdf0 100644 + select BOARD_DELL_GM45_LATITUDE_COMMON + if BOARD_DELL_GM45_LATITUDE_COMMON - config INTEL_GMA_DPLL_REF_FREQ -@@ -31,12 +34,14 @@ config MAINBOARD_DIR + default 100000000 +@@ -29,12 +32,14 @@ config MAINBOARD_DIR config MAINBOARD_PART_NUMBER default "Latitude E6400" if BOARD_DELL_E6400 @@ -328,5 +328,5 @@ index 0000000000..20dfa245fb + end +end -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0022-mb-dell-Add-S3-SMI-handler-for-Dell-Latitudes.patch b/config/coreboot/default/patches/0021-mb-dell-Add-S3-SMI-handler-for-Dell-Latitudes.patch index bbdce358..dcd75bb6 100644 --- a/config/coreboot/default/patches/0022-mb-dell-Add-S3-SMI-handler-for-Dell-Latitudes.patch +++ b/config/coreboot/default/patches/0021-mb-dell-Add-S3-SMI-handler-for-Dell-Latitudes.patch @@ -1,7 +1,7 @@ -From 0bc9ca409793836dcdb386db97b7a9464d92a973 Mon Sep 17 00:00:00 2001 +From 26862554523e08ea1d1cd18cfd09e3434b12e2a3 Mon Sep 17 00:00:00 2001 From: Nicholas Chin <nic.c3.14@gmail.com> Date: Fri, 3 May 2024 16:31:12 -0600 -Subject: [PATCH 22/37] mb/dell: Add S3 SMI handler for Dell Latitudes +Subject: [PATCH 21/40] mb/dell: Add S3 SMI handler for Dell Latitudes Integrate the previously added mec5035_smi_sleep() function into mainboard code to fix S3 suspend on the SNB/IVB Latitudes and the E7240. @@ -12,19 +12,19 @@ the power LED while in S3. Without it, all LEDs turn off during S3. Change-Id: Ic0d887f75be13c3fb9f6df62153ac458895e0283 Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com> --- - src/mainboard/dell/e7240/smihandler.c | 9 +++++++++ src/mainboard/dell/gm45_latitude/smihandler.c | 9 +++++++++ + src/mainboard/dell/haswell_latitude/smihandler.c | 9 +++++++++ src/mainboard/dell/snb_ivb_latitude/smihandler.c | 9 +++++++++ 3 files changed, 27 insertions(+) - create mode 100644 src/mainboard/dell/e7240/smihandler.c create mode 100644 src/mainboard/dell/gm45_latitude/smihandler.c + create mode 100644 src/mainboard/dell/haswell_latitude/smihandler.c create mode 100644 src/mainboard/dell/snb_ivb_latitude/smihandler.c -diff --git a/src/mainboard/dell/e7240/smihandler.c b/src/mainboard/dell/e7240/smihandler.c +diff --git a/src/mainboard/dell/gm45_latitude/smihandler.c b/src/mainboard/dell/gm45_latitude/smihandler.c new file mode 100644 index 0000000000..00e55b51db --- /dev/null -+++ b/src/mainboard/dell/e7240/smihandler.c ++++ b/src/mainboard/dell/gm45_latitude/smihandler.c @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + @@ -35,11 +35,11 @@ index 0000000000..00e55b51db +{ + mec5035_smi_sleep(slp_typ); +} -diff --git a/src/mainboard/dell/gm45_latitude/smihandler.c b/src/mainboard/dell/gm45_latitude/smihandler.c +diff --git a/src/mainboard/dell/haswell_latitude/smihandler.c b/src/mainboard/dell/haswell_latitude/smihandler.c new file mode 100644 index 0000000000..00e55b51db --- /dev/null -+++ b/src/mainboard/dell/gm45_latitude/smihandler.c ++++ b/src/mainboard/dell/haswell_latitude/smihandler.c @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + @@ -66,5 +66,5 @@ index 0000000000..00e55b51db + mec5035_smi_sleep(slp_typ); +} -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0023-ec-dell-mec5035-Route-power-button-event-to-host.patch b/config/coreboot/default/patches/0022-ec-dell-mec5035-Route-power-button-event-to-host.patch index ab01c935..ab85a389 100644 --- a/config/coreboot/default/patches/0023-ec-dell-mec5035-Route-power-button-event-to-host.patch +++ b/config/coreboot/default/patches/0022-ec-dell-mec5035-Route-power-button-event-to-host.patch @@ -1,7 +1,7 @@ -From d91dc168d6b8eca5e78aef9e48571d6edb156d45 Mon Sep 17 00:00:00 2001 +From 849f0aba544d135e2028092862e5f030813c868e Mon Sep 17 00:00:00 2001 From: Nicholas Chin <nic.c3.14@gmail.com> Date: Tue, 18 Jun 2024 21:31:08 -0600 -Subject: [PATCH 23/37] ec/dell/mec5035: Route power button event to host +Subject: [PATCH 22/40] ec/dell/mec5035: Route power button event to host If command 0x3e with an argument of 1 isn't sent to the EC, pressing the power button results in the EC powering off the system without letting @@ -88,5 +88,5 @@ index 8d4fded28b..51422598c4 100644 void mec5035_sleep_enable(void); -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0024-Disable-compression-on-refcode-insertion.patch b/config/coreboot/default/patches/0023-Disable-compression-on-refcode-insertion.patch index c557e9d7..17e630e3 100644 --- a/config/coreboot/default/patches/0024-Disable-compression-on-refcode-insertion.patch +++ b/config/coreboot/default/patches/0023-Disable-compression-on-refcode-insertion.patch @@ -1,7 +1,7 @@ -From b6bd33b0430f72c2fce16a3b1e41927ef540923b Mon Sep 17 00:00:00 2001 +From 89ecd79ab46f56c65c0b5720d1c84b12698a02b4 Mon Sep 17 00:00:00 2001 From: Leah Rowe <info@minifree.org> Date: Tue, 31 Dec 2024 14:42:24 +0000 -Subject: [PATCH 24/37] Disable compression on refcode insertion +Subject: [PATCH 23/40] Disable compression on refcode insertion Compression is not reliably reproducible. In an lbmk release context, this means we cannot rely on vendorfile insertion. @@ -14,7 +14,7 @@ Signed-off-by: Leah Rowe <info@minifree.org> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.mk b/Makefile.mk -index 3969bfbd05..15346569f8 100644 +index 218e388bb5..a2163c4644 100644 --- a/Makefile.mk +++ b/Makefile.mk @@ -1392,7 +1392,7 @@ endif @@ -27,5 +27,5 @@ index 3969bfbd05..15346569f8 100644 cbfs-files-$(CONFIG_SEABIOS_VGA_COREBOOT) += vgaroms/seavgabios.bin vgaroms/seavgabios.bin-file := $(CONFIG_PAYLOAD_VGABIOS_FILE) -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0025-nb-intel-Disable-stack-overflow-debug-options.patch b/config/coreboot/default/patches/0024-nb-intel-Disable-stack-overflow-debug-options.patch index 696be518..cc9504e9 100644 --- a/config/coreboot/default/patches/0025-nb-intel-Disable-stack-overflow-debug-options.patch +++ b/config/coreboot/default/patches/0024-nb-intel-Disable-stack-overflow-debug-options.patch @@ -1,7 +1,7 @@ -From fc4c65f3bb807b9fc766745a70f92729b0b8d99e Mon Sep 17 00:00:00 2001 +From df60dac9dbaf0c71008dbead7dc1a8c8881c5e33 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Mon, 21 Apr 2025 02:58:47 +0100 -Subject: [PATCH 25/37] nb/intel/*: Disable stack overflow debug options +Subject: [PATCH 24/40] nb/intel/*: Disable stack overflow debug options Signed-off-by: Leah Rowe <leah@libreboot.org> --- @@ -183,5 +183,5 @@ index 6430319f6a..1803ef5733 100644 + endif -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0029-mb-dell-Add-Optiplex-780-MT-x4x-ICH10.patch b/config/coreboot/default/patches/0025-mb-dell-Add-Optiplex-780-MT-x4x-ICH10.patch index eb9263b9..70bb9ae9 100644 --- a/config/coreboot/default/patches/0029-mb-dell-Add-Optiplex-780-MT-x4x-ICH10.patch +++ b/config/coreboot/default/patches/0025-mb-dell-Add-Optiplex-780-MT-x4x-ICH10.patch @@ -1,7 +1,7 @@ -From 75cc0ea09234064318046624845b0afc5afb0ce5 Mon Sep 17 00:00:00 2001 +From c3af549f5b6431475f3d180eb3b3041d9bfc5d81 Mon Sep 17 00:00:00 2001 From: Nicholas Chin <nic.c3.14@gmail.com> Date: Mon, 30 Sep 2024 20:44:38 -0400 -Subject: [PATCH 29/37] mb/dell: Add Optiplex 780 MT (x4x/ICH10) +Subject: [PATCH 25/40] mb/dell: Add Optiplex 780 MT (x4x/ICH10) Change-Id: Idb45737ce95bfd26e978323c650de7d308b5079c Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com> @@ -704,5 +704,5 @@ index 0000000000..555b1c1f5c + end +end -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0030-mb-dell-optiplex_780-Add-USFF-variant.patch b/config/coreboot/default/patches/0026-mb-dell-optiplex_780-Add-USFF-variant.patch index 8ce7471b..231e303e 100644 --- a/config/coreboot/default/patches/0030-mb-dell-optiplex_780-Add-USFF-variant.patch +++ b/config/coreboot/default/patches/0026-mb-dell-optiplex_780-Add-USFF-variant.patch @@ -1,7 +1,7 @@ -From 6725ec0bb976c61cbe87e61bf0e8b02e38d14de9 Mon Sep 17 00:00:00 2001 +From bb14741af8e4a16d3d098d79fb8df0c3a45e6ccb Mon Sep 17 00:00:00 2001 From: Nicholas Chin <nic.c3.14@gmail.com> Date: Wed, 30 Oct 2024 20:55:25 -0600 -Subject: [PATCH 30/37] mb/dell/optiplex_780: Add USFF variant +Subject: [PATCH 26/40] mb/dell/optiplex_780: Add USFF variant Change-Id: I3aa21c743749f4a11a2501f4c121316bd2f1a103 Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com> @@ -322,5 +322,5 @@ index 0000000000..555b1c1f5c + end +end -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0027-soc-intel-skylake-Enable-4E-4F-PNP-I-O-ports-in-boot.patch b/config/coreboot/default/patches/0027-soc-intel-skylake-Enable-4E-4F-PNP-I-O-ports-in-boot.patch deleted file mode 100644 index 9d75cec6..00000000 --- a/config/coreboot/default/patches/0027-soc-intel-skylake-Enable-4E-4F-PNP-I-O-ports-in-boot.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 3bb65b7f2a02ecb93e15ae037da38ad8f812747b Mon Sep 17 00:00:00 2001 -From: Mate Kukri <km@mkukri.xyz> -Date: Fri, 22 Nov 2024 21:26:48 +0000 -Subject: [PATCH 27/37] soc/intel/skylake: Enable 4E/4F PNP I/O ports in - bootblock - -Change-Id: I57c9d8a9513a268e2ca6a0abd1306cd038598173 -Signed-off-by: Mate Kukri <km@mkukri.xyz> ---- - src/soc/intel/skylake/bootblock/pch.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/soc/intel/skylake/bootblock/pch.c b/src/soc/intel/skylake/bootblock/pch.c -index df00bb85a9..beaece960b 100644 ---- a/src/soc/intel/skylake/bootblock/pch.c -+++ b/src/soc/intel/skylake/bootblock/pch.c -@@ -100,8 +100,8 @@ static void soc_config_pwrmbase(void) - - void pch_early_iorange_init(void) - { -- uint16_t io_enables = LPC_IOE_SUPERIO_2E_2F | LPC_IOE_KBC_60_64 | -- LPC_IOE_EC_62_66; -+ uint16_t io_enables = LPC_IOE_EC_4E_4F | LPC_IOE_SUPERIO_2E_2F | -+ LPC_IOE_KBC_60_64 | LPC_IOE_EC_62_66; - - const config_t *config = config_of_soc(); - --- -2.39.5 - diff --git a/config/coreboot/default/patches/0036-src-intel-x4x-Disable-stack-overflow-debug.patch b/config/coreboot/default/patches/0027-src-intel-x4x-Disable-stack-overflow-debug.patch index 2e06ad79..94186a30 100644 --- a/config/coreboot/default/patches/0036-src-intel-x4x-Disable-stack-overflow-debug.patch +++ b/config/coreboot/default/patches/0027-src-intel-x4x-Disable-stack-overflow-debug.patch @@ -1,7 +1,7 @@ -From 8dcd86c34d92b9b17bcfe4c7c61793042dc97268 Mon Sep 17 00:00:00 2001 +From 1685de1beee49456e9f6f578ca6e37219fe7dfff Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Mon, 6 Jan 2025 01:53:53 +0000 -Subject: [PATCH 36/37] src/intel/x4x: Disable stack overflow debug +Subject: [PATCH 27/40] src/intel/x4x: Disable stack overflow debug Signed-off-by: Leah Rowe <leah@libreboot.org> --- @@ -29,5 +29,5 @@ index 1803ef5733..7129aabf72 100644 config DOMAIN_RESOURCE_32BIT_LIMIT default 0xfec00000 -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0039-hp-8300cmt-remove-xhci_overcurrent_mapping.patch b/config/coreboot/default/patches/0028-hp-8300cmt-remove-xhci_overcurrent_mapping.patch index c80f3341..c42b3cf0 100644 --- a/config/coreboot/default/patches/0039-hp-8300cmt-remove-xhci_overcurrent_mapping.patch +++ b/config/coreboot/default/patches/0028-hp-8300cmt-remove-xhci_overcurrent_mapping.patch @@ -1,7 +1,7 @@ -From b313c1d4bae17fc6eb3a8217c503187d1cd5453d Mon Sep 17 00:00:00 2001 +From 6f54ed4b0622c7772561760ea4b435bd236ac834 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Tue, 22 Apr 2025 10:21:59 +0100 -Subject: [PATCH 1/1] hp/8300cmt: remove xhci_overcurrent_mapping +Subject: [PATCH 28/40] hp/8300cmt: remove xhci_overcurrent_mapping No longer needed, as per the following commit: @@ -38,5 +38,5 @@ index 3d21739b72..3a0b6d5c59 100644 register "usb_port_config" = "{ { 1, 0, 0 }, -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0028-mb-lenovo-Add-ThinkPad-T480-and-ThinkPad-T480s.patch b/config/coreboot/default/patches/0028-mb-lenovo-Add-ThinkPad-T480-and-ThinkPad-T480s.patch deleted file mode 100644 index df71dc47..00000000 --- a/config/coreboot/default/patches/0028-mb-lenovo-Add-ThinkPad-T480-and-ThinkPad-T480s.patch +++ /dev/null @@ -1,2232 +0,0 @@ -From b515ba5b0cd02dc1771f27eaa716582b0827a638 Mon Sep 17 00:00:00 2001 -From: Mate Kukri <km@mkukri.xyz> -Date: Tue, 31 Dec 2024 22:49:15 +0000 -Subject: [PATCH 28/37] mb/lenovo: Add ThinkPad T480 and ThinkPad T480s - -These machine have BootGuard fused and requires deguard to -boot coreboot. - -Known issues: -- Alpine Ridge Thunderbolt 3 controller does not work -- Some Fn+F{1-12} keys aren't handled correctly -- Nvidia dGPU is finicky - - Needs option ROM - - Power enable code is buggy - - Nouveau only works on linux 6.8-6.9 -- Headphone jack isn't detected as plugged in despite correct verbs - -Thanks to Leah Rowe for helping with the T480s. - -Signed-off-by: Mate Kukri <km@mkukri.xyz> -Change-Id: I19d421412c771c1f242f6ff39453f824fa866163 ---- - src/device/pci_rom.c | 4 +- - src/ec/lenovo/h8/acpi/ec.asl | 2 +- - src/ec/lenovo/h8/bluetooth.c | 6 +- - src/ec/lenovo/h8/wwan.c | 6 +- - src/mainboard/lenovo/sklkbl_thinkpad/Kconfig | 57 +++++ - .../lenovo/sklkbl_thinkpad/Kconfig.name | 7 + - .../lenovo/sklkbl_thinkpad/Makefile.mk | 73 +++++++ - .../lenovo/sklkbl_thinkpad/acpi/ec.asl | 12 ++ - .../lenovo/sklkbl_thinkpad/acpi/superio.asl | 3 + - .../lenovo/sklkbl_thinkpad/bootblock.c | 60 ++++++ - .../lenovo/sklkbl_thinkpad/devicetree.cb | 71 ++++++ - src/mainboard/lenovo/sklkbl_thinkpad/dsdt.asl | 33 +++ - src/mainboard/lenovo/sklkbl_thinkpad/ec.c | 153 +++++++++++++ - src/mainboard/lenovo/sklkbl_thinkpad/ec.h | 99 +++++++++ - src/mainboard/lenovo/sklkbl_thinkpad/gpio.h | 8 + - .../lenovo/sklkbl_thinkpad/ramstage.c | 105 +++++++++ - .../sklkbl_thinkpad/variants/t480/data.vbt | Bin 0 -> 4106 bytes - .../variants/t480/gma-mainboard.ads | 19 ++ - .../sklkbl_thinkpad/variants/t480/gpio.c | 203 ++++++++++++++++++ - .../sklkbl_thinkpad/variants/t480/hda_verb.c | 90 ++++++++ - .../variants/t480/memory_init_params.c | 20 ++ - .../variants/t480/overridetree.cb | 103 +++++++++ - .../sklkbl_thinkpad/variants/t480s/data.vbt | Bin 0 -> 4106 bytes - .../variants/t480s/gma-mainboard.ads | 19 ++ - .../sklkbl_thinkpad/variants/t480s/gpio.c | 199 +++++++++++++++++ - .../sklkbl_thinkpad/variants/t480s/hda_verb.c | 90 ++++++++ - .../variants/t480s/memory_init_params.c | 44 ++++ - .../variants/t480s/overridetree.cb | 103 +++++++++ - .../variants/t480s/spd/spd_0.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_1.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_10.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_11.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_12.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_13.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_14.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_15.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_16.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_17.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_18.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_19.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_2.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_20.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_3.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_4.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_5.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_6.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_7.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_8.bin | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_9.bin | Bin 0 -> 512 bytes - 49 files changed, 1583 insertions(+), 6 deletions(-) - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/Kconfig - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/Kconfig.name - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/Makefile.mk - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/acpi/ec.asl - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/acpi/superio.asl - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/bootblock.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/devicetree.cb - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/dsdt.asl - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/ec.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/ec.h - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/gpio.h - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/ramstage.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/data.vbt - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gma-mainboard.ads - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/hda_verb.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/memory_init_params.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/overridetree.cb - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/data.vbt - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gma-mainboard.ads - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gpio.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/hda_verb.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/memory_init_params.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/overridetree.cb - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_0.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_1.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_10.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_11.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_12.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_13.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_14.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_15.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_16.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_17.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_18.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_19.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_2.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_20.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_3.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_4.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_5.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_6.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_7.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_8.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_9.bin - -diff --git a/src/device/pci_rom.c b/src/device/pci_rom.c -index dc41ef14ce..bba98d9dea 100644 ---- a/src/device/pci_rom.c -+++ b/src/device/pci_rom.c -@@ -396,14 +396,16 @@ void pci_rom_ssdt(const struct device *device) - rom = cbrom; - } - -+#if 0 - const char *scope = acpi_device_path(device); - if (!scope) { - printk(BIOS_ERR, "%s: Missing ACPI scope\n", dev_path(device)); - return; - } -+#endif - - /* write _ROM method */ -- acpigen_write_scope(scope); -+ acpigen_write_scope("\\_SB.PCI0.RP01.PEGP"); - acpigen_write_rom((void *)rom, rom->size * 512); - acpigen_pop_len(); /* pop scope */ - } -diff --git a/src/ec/lenovo/h8/acpi/ec.asl b/src/ec/lenovo/h8/acpi/ec.asl -index bc54d3b422..8f4a8e1986 100644 ---- a/src/ec/lenovo/h8/acpi/ec.asl -+++ b/src/ec/lenovo/h8/acpi/ec.asl -@@ -331,7 +331,7 @@ Device(EC) - #include "sleepbutton.asl" - #include "lid.asl" - #include "beep.asl" --#include "thermal.asl" -+//#include "thermal.asl" - #include "systemstatus.asl" - #include "thinkpad.asl" - } -diff --git a/src/ec/lenovo/h8/bluetooth.c b/src/ec/lenovo/h8/bluetooth.c -index 16fc8dce39..be71a24ced 100644 ---- a/src/ec/lenovo/h8/bluetooth.c -+++ b/src/ec/lenovo/h8/bluetooth.c -@@ -1,6 +1,6 @@ - /* SPDX-License-Identifier: GPL-2.0-only */ - --#include <southbridge/intel/common/gpio.h> -+// #include <southbridge/intel/common/gpio.h> - #include <console/console.h> - #include <device/device.h> - #include <ec/acpi/ec.h> -@@ -28,16 +28,18 @@ bool h8_has_bdc(const struct device *dev) - { - struct ec_lenovo_h8_config *conf = dev->chip_info; - -- if (!conf->has_bdc_detection) { -+ if (1 || !conf->has_bdc_detection) { - printk(BIOS_INFO, "H8: BDC detection not implemented. " - "Assuming BDC installed\n"); - return true; - } - -+#if 0 - if (get_gpio(conf->bdc_gpio_num) == conf->bdc_gpio_lvl) { - printk(BIOS_INFO, "H8: BDC installed\n"); - return true; - } -+#endif - - printk(BIOS_INFO, "H8: BDC not installed\n"); - return false; -diff --git a/src/ec/lenovo/h8/wwan.c b/src/ec/lenovo/h8/wwan.c -index 685886fcce..5cdcf77406 100644 ---- a/src/ec/lenovo/h8/wwan.c -+++ b/src/ec/lenovo/h8/wwan.c -@@ -1,6 +1,6 @@ - /* SPDX-License-Identifier: GPL-2.0-only */ - --#include <southbridge/intel/common/gpio.h> -+// #include <southbridge/intel/common/gpio.h> - #include <console/console.h> - #include <device/device.h> - #include <ec/acpi/ec.h> -@@ -26,16 +26,18 @@ bool h8_has_wwan(const struct device *dev) - { - struct ec_lenovo_h8_config *conf = dev->chip_info; - -- if (!conf->has_wwan_detection) { -+ if (1 || !conf->has_wwan_detection) { - printk(BIOS_INFO, "H8: WWAN detection not implemented. " - "Assuming WWAN installed\n"); - return true; - } - -+#if 0 - if (get_gpio(conf->wwan_gpio_num) == conf->wwan_gpio_lvl) { - printk(BIOS_INFO, "H8: WWAN installed\n"); - return true; - } -+#endif - - printk(BIOS_INFO, "H8: WWAN not installed\n"); - return false; -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig b/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig -new file mode 100644 -index 0000000000..4998672943 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig -@@ -0,0 +1,57 @@ -+# SPDX-License-Identifier: GPL-2.0-only -+ -+config BOARD_LENOVO_SKLKBL_THINKPAD_COMMON -+ bool -+ select BOARD_ROMSIZE_KB_16384 -+ select EC_LENOVO_H8 -+ select EC_LENOVO_PMH7 -+ select H8_HAS_BAT_THRESHOLDS_IMPL -+ select H8_HAS_LEDLOGO -+ select H8_HAS_PRIMARY_FN_KEYS -+ select HAVE_ACPI_RESUME -+ select HAVE_ACPI_TABLES -+ select INTEL_GMA_HAVE_VBT -+ select INTEL_INT15 -+ select MAINBOARD_HAS_LIBGFXINIT -+ select MAINBOARD_HAS_TPM2 -+ select MAINBOARD_USES_IFD_GBE_REGION -+ select MEMORY_MAPPED_TPM -+ select SOC_INTEL_COMMON_BLOCK_HDA_VERB -+ select SOC_INTEL_KABYLAKE -+ select SPD_READ_BY_WORD -+ select SYSTEM_TYPE_LAPTOP -+ -+config BOARD_LENOVO_T480 -+ bool -+ select BOARD_LENOVO_SKLKBL_THINKPAD_COMMON -+ -+config BOARD_LENOVO_T480S -+ bool -+ select BOARD_LENOVO_SKLKBL_THINKPAD_COMMON -+ -+if BOARD_LENOVO_SKLKBL_THINKPAD_COMMON -+ -+config MAINBOARD_DIR -+ default "lenovo/sklkbl_thinkpad" -+ -+config VARIANT_DIR -+ default "t480" if BOARD_LENOVO_T480 -+ default "t480s" if BOARD_LENOVO_T480S -+ -+config OVERRIDE_DEVICETREE -+ default "variants/\$(CONFIG_VARIANT_DIR)/overridetree.cb" -+ -+config MAINBOARD_PART_NUMBER -+ default "T480" if BOARD_LENOVO_T480 -+ default "T480s" if BOARD_LENOVO_T480S -+ -+config CBFS_SIZE -+ default 0x900000 -+ -+config DIMM_MAX -+ default 2 -+ -+config DIMM_SPD_SIZE -+ default 512 # DDR4 -+ -+endif -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig.name b/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig.name -new file mode 100644 -index 0000000000..abc273f387 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig.name -@@ -0,0 +1,7 @@ -+# SPDX-License-Identifier: GPL-2.0-only -+ -+config BOARD_LENOVO_T480 -+ bool "ThinkPad T480" -+ -+config BOARD_LENOVO_T480S -+ bool "ThinkPad T480s" -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/Makefile.mk b/src/mainboard/lenovo/sklkbl_thinkpad/Makefile.mk -new file mode 100644 -index 0000000000..c308239177 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/Makefile.mk -@@ -0,0 +1,73 @@ -+## SPDX-License-Identifier: GPL-2.0-only -+ -+bootblock-y += bootblock.c ec.c -+ -+romstage-y += variants/$(VARIANT_DIR)/memory_init_params.c -+ -+ramstage-y += ramstage.c ec.c -+ramstage-y += variants/$(VARIANT_DIR)/gpio.c variants/$(VARIANT_DIR)/hda_verb.c -+ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += variants/$(VARIANT_DIR)/gma-mainboard.ads -+ -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_0.bin -+spd_0.bin-file := variants/$(VARIANT_DIR)/spd/spd_0.bin -+spd_0.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_1.bin -+spd_1.bin-file := variants/$(VARIANT_DIR)/spd/spd_1.bin -+spd_1.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_2.bin -+spd_2.bin-file := variants/$(VARIANT_DIR)/spd/spd_2.bin -+spd_2.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_3.bin -+spd_3.bin-file := variants/$(VARIANT_DIR)/spd/spd_3.bin -+spd_3.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_4.bin -+spd_4.bin-file := variants/$(VARIANT_DIR)/spd/spd_4.bin -+spd_4.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_5.bin -+spd_5.bin-file := variants/$(VARIANT_DIR)/spd/spd_5.bin -+spd_5.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_6.bin -+spd_6.bin-file := variants/$(VARIANT_DIR)/spd/spd_6.bin -+spd_6.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_7.bin -+spd_7.bin-file := variants/$(VARIANT_DIR)/spd/spd_7.bin -+spd_7.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_8.bin -+spd_8.bin-file := variants/$(VARIANT_DIR)/spd/spd_8.bin -+spd_8.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_9.bin -+spd_9.bin-file := variants/$(VARIANT_DIR)/spd/spd_9.bin -+spd_9.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_10.bin -+spd_10.bin-file := variants/$(VARIANT_DIR)/spd/spd_10.bin -+spd_10.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_11.bin -+spd_11.bin-file := variants/$(VARIANT_DIR)/spd/spd_11.bin -+spd_11.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_12.bin -+spd_12.bin-file := variants/$(VARIANT_DIR)/spd/spd_12.bin -+spd_12.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_13.bin -+spd_13.bin-file := variants/$(VARIANT_DIR)/spd/spd_13.bin -+spd_13.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_14.bin -+spd_14.bin-file := variants/$(VARIANT_DIR)/spd/spd_14.bin -+spd_14.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_15.bin -+spd_15.bin-file := variants/$(VARIANT_DIR)/spd/spd_15.bin -+spd_15.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_16.bin -+spd_16.bin-file := variants/$(VARIANT_DIR)/spd/spd_16.bin -+spd_16.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_17.bin -+spd_17.bin-file := variants/$(VARIANT_DIR)/spd/spd_17.bin -+spd_17.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_18.bin -+spd_18.bin-file := variants/$(VARIANT_DIR)/spd/spd_18.bin -+spd_18.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_19.bin -+spd_19.bin-file := variants/$(VARIANT_DIR)/spd/spd_19.bin -+spd_19.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_20.bin -+spd_20.bin-file := variants/$(VARIANT_DIR)/spd/spd_20.bin -+spd_20.bin-type := raw -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/acpi/ec.asl b/src/mainboard/lenovo/sklkbl_thinkpad/acpi/ec.asl -new file mode 100644 -index 0000000000..3a949a2fca ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/acpi/ec.asl -@@ -0,0 +1,12 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#define BRIGHTNESS_UP \_SB.PCI0.GFX0.INCB -+#define BRIGHTNESS_DOWN \_SB.PCI0.GFX0.DECB -+#define THINKPAD_EC_GPE 22 -+ -+Name(\TCRT, 100) -+Name(\TPSV, 90) -+Name(\FLVL, 0) -+ -+#include <ec/lenovo/h8/acpi/ec.asl> -+#include <ec/lenovo/h8/acpi/thinkpad_bat_thresholds_b0.asl> -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/acpi/superio.asl b/src/mainboard/lenovo/sklkbl_thinkpad/acpi/superio.asl -new file mode 100644 -index 0000000000..55b1db5b11 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/acpi/superio.asl -@@ -0,0 +1,3 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <drivers/pc80/pc/ps2_controller.asl> -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/bootblock.c b/src/mainboard/lenovo/sklkbl_thinkpad/bootblock.c -new file mode 100644 -index 0000000000..fb660dbdfa ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/bootblock.c -@@ -0,0 +1,60 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <arch/io.h> -+#include <bootblock_common.h> -+#include <device/pci.h> -+#include <soc/pci_devs.h> -+#include "ec.h" -+ -+static void configure_uart(uint16_t port, uint16_t iobase, uint8_t irqno) -+{ -+ microchip_pnp_enter_conf_state(port); -+ -+ // Select LPC I/F LDN -+ pnp_write(port, PNP_LDN_SELECT, LDN_LPCIF); -+ // Write UART BAR -+ pnp_write_le32(port, LPCIF_BAR_UART, (uint32_t) iobase << 16 | 0x8707); -+ // Set SIRQ4 to UART -+ pnp_write(port, LPCIF_SIRQ(irqno), LDN_UART); -+ -+ // Configure UART LDN -+ pnp_write(port, PNP_LDN_SELECT, LDN_UART); -+ pnp_write(port, UART_ACTIVATE, 0x01); -+ pnp_write(port, UART_CONFIG_SELECT, 0x00); -+ -+ microchip_pnp_exit_conf_state(port); -+ -+#ifdef CONFIG_BOARD_LENOVO_T480 -+ // Supply debug unlock key -+ debug_write_key(DEBUG_RW_KEY_IDX, debug_rw_key); -+ -+ // Use debug writes to set UART_TX and UART_RX GPIOs -+ debug_write_dword(0xf0c400 + 0x110, 0x00001000); -+ debug_write_dword(0xf0c400 + 0x114, 0x00001000); -+#endif -+} -+ -+ -+#define UART_PORT 0x3f8 -+#define UART_IRQ 4 -+ -+void bootblock_mainboard_early_init(void) -+{ -+ // Tell EC via BIOS Debug Port 1 that the world isn't on fire -+ -+ // Let the EC know that BIOS code is running -+ outb(0x11, 0x86); -+ outb(0x6e, 0x86); -+ -+ // Enable accesses to EC1 interface -+ ec0_write(0, ec0_read(0) | 0x20); -+ -+ // Reset LEDs to power on state -+ // (Without this warm reboot leaves LEDs off) -+ ec0_write(0x0c, 0x80); -+ ec0_write(0x0c, 0x07); -+ ec0_write(0x0c, 0x8a); -+ -+ // Setup debug UART -+ configure_uart(EC_CFG_PORT, UART_PORT, UART_IRQ); -+} -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/devicetree.cb b/src/mainboard/lenovo/sklkbl_thinkpad/devicetree.cb -new file mode 100644 -index 0000000000..c07d4d53ca ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/devicetree.cb -@@ -0,0 +1,71 @@ -+# SPDX-License-Identifier: GPL-2.0-only -+ -+chip soc/intel/skylake -+ # IGD Displays -+ register "gfx" = "GMA_STATIC_DISPLAYS(0)" -+ -+ register "panel_cfg" = "{ -+ .up_delay_ms = 200, -+ .down_delay_ms = 50, -+ .cycle_delay_ms = 600, -+ .backlight_on_delay_ms = 1, -+ .backlight_off_delay_ms = 200, -+ .backlight_pwm_hz = 200, -+ }" -+ -+ # Power -+ register "PmConfigSlpS3MinAssert" = "2" # 50ms -+ register "PmConfigSlpS4MinAssert" = "1" # 1s -+ register "PmConfigSlpSusMinAssert" = "3" # 500ms -+ register "PmConfigSlpAMinAssert" = "3" # 2s -+ -+ device domain 0 on -+ device ref igpu on end -+ device ref sa_thermal on end -+ device ref thermal on end -+ device ref south_xhci on end -+ device ref lpc_espi on -+ register "serirq_mode" = "SERIRQ_CONTINUOUS" -+ -+ register "gen1_dec" = "0x007c1601" -+ register "gen2_dec" = "0x000c15e1" -+ -+ chip ec/lenovo/pmh7 -+ register "backlight_enable" = "true" -+ register "dock_event_enable" = "true" -+ device pnp ff.1 on end # dummy -+ end -+ -+ chip ec/lenovo/h8 -+ register "beepmask0" = "0x00" -+ register "beepmask1" = "0x86" -+ register "config0" = "0xa6" -+ register "config1" = "0x0d" -+ register "config2" = "0xa8" -+ register "config3" = "0xc4" -+ register "has_keyboard_backlight" = "1" -+ register "event2_enable" = "0xff" -+ register "event3_enable" = "0xff" -+ register "event4_enable" = "0xd0" -+ register "event5_enable" = "0x3c" -+ register "event7_enable" = "0x01" -+ register "event8_enable" = "0x7b" -+ register "event9_enable" = "0xff" -+ register "eventc_enable" = "0xff" -+ register "eventd_enable" = "0xff" -+ register "evente_enable" = "0x9d" -+ device pnp ff.2 on # dummy -+ io 0x60 = 0x62 -+ io 0x62 = 0x66 -+ io 0x64 = 0x1600 -+ io 0x66 = 0x1604 -+ end -+ end -+ -+ chip drivers/pc80/tpm -+ device pnp 0c31.0 on end -+ end -+ end -+ device ref hda on end -+ end -+end -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/dsdt.asl b/src/mainboard/lenovo/sklkbl_thinkpad/dsdt.asl -new file mode 100644 -index 0000000000..aa4d4de2a6 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/dsdt.asl -@@ -0,0 +1,33 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <acpi/acpi.h> -+DefinitionBlock( -+ "dsdt.aml", -+ "DSDT", -+ ACPI_DSDT_REV_2, -+ OEM_ID, -+ ACPI_TABLE_CREATOR, -+ 0x20110725 -+) -+{ -+ #include <acpi/dsdt_top.asl> -+ #include <soc/intel/common/block/acpi/acpi/globalnvs.asl> -+ #include <cpu/intel/common/acpi/cpu.asl> -+ -+ Device (\_SB.PCI0) -+ { -+ #include <soc/intel/skylake/acpi/systemagent.asl> -+ #include <soc/intel/skylake/acpi/pch.asl> -+ #include <drivers/intel/gma/acpi/default_brightness_levels.asl> -+ } -+ -+ Scope (\_SB.PCI0.RP01) -+ { -+ Device (PEGP) -+ { -+ Name (_ADR, Zero) -+ } -+ } -+ -+ #include <southbridge/intel/common/acpi/sleepstates.asl> -+} -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/ec.c b/src/mainboard/lenovo/sklkbl_thinkpad/ec.c -new file mode 100644 -index 0000000000..adb6a60324 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/ec.c -@@ -0,0 +1,153 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <arch/io.h> -+#include "ec.h" -+ -+#define MICROCHIP_CONFIGURATION_ENTRY_KEY 0x55 -+#define MICROCHIP_CONFIGURATION_EXIT_KEY 0xaa -+ -+void microchip_pnp_enter_conf_state(uint16_t port) -+{ -+ outb(MICROCHIP_CONFIGURATION_ENTRY_KEY, port); -+} -+ -+void microchip_pnp_exit_conf_state(uint16_t port) -+{ -+ outb(MICROCHIP_CONFIGURATION_EXIT_KEY, port); -+} -+ -+uint8_t pnp_read(uint16_t port, uint8_t index) -+{ -+ outb(index, port); -+ return inb(port + 1); -+} -+ -+uint32_t pnp_read_le32(uint16_t port, uint8_t index) -+{ -+ return (uint32_t) pnp_read(port, index) | -+ (uint32_t) pnp_read(port, index + 1) << 8 | -+ (uint32_t) pnp_read(port, index + 2) << 16 | -+ (uint32_t) pnp_read(port, index + 3) << 24; -+} -+ -+void pnp_write(uint16_t port, uint8_t index, uint8_t value) -+{ -+ outb(index, port); -+ outb(value, port + 1); -+} -+ -+void pnp_write_le32(uint16_t port, uint8_t index, uint32_t value) -+{ -+ pnp_write(port, index, value & 0xff); -+ pnp_write(port, index + 1, value >> 8 & 0xff); -+ pnp_write(port, index + 2, value >> 16 & 0xff); -+ pnp_write(port, index + 3, value >> 24 & 0xff); -+} -+ -+static void ecN_clear_out_queue(uint16_t cmd_port, uint16_t data_port) -+{ -+ while (inb(cmd_port) & EC_OBF) -+ inb(data_port); -+} -+ -+static void ecN_wait_to_send(uint16_t cmd_port, uint16_t data_port) -+{ -+ while (inb(cmd_port) & EC_IBF) -+ ; -+} -+ -+static void ecN_wait_to_recv(uint16_t cmd_port, uint16_t data_port) -+{ -+ while (!(inb(cmd_port) & EC_OBF)) -+ ; -+} -+ -+uint8_t ecN_read(uint16_t cmd_port, uint16_t data_port, uint8_t addr) -+{ -+ ecN_clear_out_queue(cmd_port, data_port); -+ ecN_wait_to_send(cmd_port, data_port); -+ outb(EC_READ, cmd_port); -+ ecN_wait_to_send(cmd_port, data_port); -+ outb(addr, data_port); -+ ecN_wait_to_recv(cmd_port, data_port); -+ return inb(data_port); -+} -+ -+void ecN_write(uint16_t cmd_port, uint16_t data_port, uint8_t addr, uint8_t val) -+{ -+ ecN_clear_out_queue(cmd_port, data_port); -+ ecN_wait_to_send(cmd_port, data_port); -+ outb(EC_WRITE, cmd_port); -+ ecN_wait_to_send(cmd_port, data_port); -+ outb(addr, data_port); -+ ecN_wait_to_send(cmd_port, data_port); -+ outb(val, data_port); -+} -+ -+uint8_t eeprom_read(uint16_t addr) -+{ -+ ecN_clear_out_queue(EC2_CMD, EC2_DATA); -+ ecN_wait_to_send(EC2_CMD, EC2_DATA); -+ outl(1, EC2_CMD); -+ ecN_wait_to_send(EC2_CMD, EC2_DATA); -+ outl(addr, EC2_DATA); -+ ecN_wait_to_recv(EC2_CMD, EC2_DATA); -+ return inl(EC2_DATA); -+} -+ -+void eeprom_write(uint16_t addr, uint8_t val) -+{ -+ ecN_clear_out_queue(EC2_CMD, EC2_DATA); -+ ecN_wait_to_send(EC2_CMD, EC2_DATA); -+ outl(2, EC2_CMD); -+ ecN_wait_to_send(EC2_CMD, EC2_DATA); -+ outl((uint32_t) addr | (uint32_t) val << 16, EC2_DATA); -+ ecN_wait_to_recv(EC2_CMD, EC2_DATA); -+ inl(EC2_DATA); -+} -+ -+uint16_t debug_loaded_keys(void) -+{ -+ return (uint16_t) ec0_read(0x87) << 8 | (uint16_t) ec0_read(0x86); -+} -+ -+static void debug_cmd(uint8_t cmd) -+{ -+ ec0_write(EC_DEBUG_CMD, cmd); -+ while (ec0_read(EC_DEBUG_CMD) & 0x80) -+ ; -+} -+ -+void debug_read_key(uint8_t i, uint8_t *key) -+{ -+ debug_cmd(0x80 | (i & 0xf)); -+ for (int j = 0; j < 8; ++j) -+ key[j] = ec0_read(0x3e + j); -+} -+ -+void debug_write_key(uint8_t i, const uint8_t *key) -+{ -+ for (int j = 0; j < 8; ++j) -+ ec0_write(0x3e + j, key[j]); -+ debug_cmd(0xc0 | (i & 0xf)); -+} -+ -+uint32_t debug_read_dword(uint32_t addr) -+{ -+ ecN_clear_out_queue(EC3_CMD, EC3_DATA); -+ ecN_wait_to_send(EC3_CMD, EC3_DATA); -+ outl(addr << 8 | 0xE2, EC3_DATA); -+ ecN_wait_to_recv(EC3_CMD, EC3_DATA); -+ return inl(EC3_DATA); -+} -+ -+void debug_write_dword(uint32_t addr, uint32_t val) -+{ -+ ecN_clear_out_queue(EC3_CMD, EC3_DATA); -+ ecN_wait_to_send(EC3_CMD, EC3_DATA); -+ outl(addr << 8 | 0xEA, EC3_DATA); -+ ecN_wait_to_send(EC3_CMD, EC3_DATA); -+ outl(val, EC3_DATA); -+} -+ -+const uint8_t debug_rw_key[8] = { 0x7a, 0x41, 0xb1, 0x49, 0xfe, 0x21, 0x01, 0xcf }; -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/ec.h b/src/mainboard/lenovo/sklkbl_thinkpad/ec.h -new file mode 100644 -index 0000000000..d2963c8962 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/ec.h -@@ -0,0 +1,99 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#ifndef SKLKBL_THINKPAD_EC_H -+#define SKLKBL_THINKPAD_EC_H -+ -+// EC configuration base address -+#define EC_CFG_PORT 0x4e -+ -+// Chip global registers -+#define PNP_LDN_SELECT 0x07 -+# define LDN_UART 0x07 -+# define LDN_LPCIF 0x0c -+#define EC_DEVICE_ID 0x20 -+#define EC_DEVICE_REV 0x21 -+ -+// LPC I/F registers -+#define LPCIF_SIRQ(i) (0x40 + (i)) -+ -+#define LPCIF_BAR_CFG 0x60 -+#define LPCIF_BAR_MAILBOX 0x64 -+#define LPCIF_BAR_8042 0x68 -+#define LPCIF_BAR_ACPI_EC0 0x6c -+#define LPCIF_BAR_ACPI_EC1 0x70 -+#define LPCIF_BAR_ACPI_EC2 0x74 -+#define LPCIF_BAR_ACPI_EC3 0x78 -+#define LPCIF_BAR_ACPI_PM0 0x7c -+#define LPCIF_BAR_UART 0x80 -+#define LPCIF_BAR_FAST_KYBD 0x84 -+#define LPCIF_BAR_EMBED_FLASH 0x88 -+#define LPCIF_BAR_GP_SPI 0x8c -+#define LPCIF_BAR_EMI 0x90 -+#define LPCIF_BAR_PMH7 0x94 -+#define LPCIF_BAR_PORT80_DBG0 0x98 -+#define LPCIF_BAR_PORT80_DBG1 0x9c -+#define LPCIF_BAR_RTC 0xa0 -+ -+// UART registers -+#define UART_ACTIVATE 0x30 -+#define UART_CONFIG_SELECT 0xf0 -+ -+void microchip_pnp_enter_conf_state(uint16_t port); -+void microchip_pnp_exit_conf_state(uint16_t port); -+uint8_t pnp_read(uint16_t port, uint8_t index); -+uint32_t pnp_read_le32(uint16_t port, uint8_t index); -+void pnp_write(uint16_t port, uint8_t index, uint8_t value); -+void pnp_write_le32(uint16_t port, uint8_t index, uint32_t value); -+ -+#define EC0_CMD 0x0066 -+#define EC0_DATA 0x0062 -+#define EC1_CMD 0x1604 -+#define EC1_DATA 0x1600 -+#define EC2_CMD 0x1634 -+#define EC2_DATA 0x1630 -+#define EC3_CMD 0x161c -+#define EC3_DATA 0x1618 -+ -+#define EC_OBF (1 << 0) -+#define EC_IBF (1 << 1) -+ -+#define EC_READ 0x80 -+#define EC_WRITE 0x81 -+ -+uint8_t ecN_read(uint16_t cmd_port, uint16_t data_port, uint8_t addr); -+ -+void ecN_write(uint16_t cmd_port, uint16_t data_port, uint8_t addr, uint8_t val); -+ -+// EC0 and EC1 mostly are useful with the READ/WRITE commands -+#define ec0_read(addr) ecN_read(EC0_CMD, EC0_DATA, addr) -+#define ec0_write(addr, val) ecN_write(EC0_CMD, EC0_DATA, addr, val) -+#define ec1_read(addr) ecN_read(EC1_CMD, EC1_DATA, addr) -+#define ec1_write(addr, val) ecN_write(EC1_CMD, EC1_DATA, addr, val) -+ -+// Read from the emulated EEPROM -+uint8_t eeprom_read(uint16_t addr); -+ -+// Write to the emulated EEPROM -+void eeprom_write(uint16_t addr, uint8_t val); -+ -+// Read loaded debug key mask -+uint16_t debug_loaded_keys(void); -+ -+// The following location (via either EC0 or EC1) can be used to interact with the debug interface -+#define EC_DEBUG_CMD 0x3d -+ -+void debug_read_key(uint8_t i, uint8_t *key); -+ -+void debug_write_key(uint8_t i, const uint8_t *key); -+ -+uint32_t debug_read_dword(uint32_t addr); -+ -+void debug_write_dword(uint32_t addr, uint32_t val); -+ -+// RW unlock key index -+#define DEBUG_RW_KEY_IDX 1 -+ -+// RW unlock key for EC version N24HT37W -+extern const uint8_t debug_rw_key[8]; -+ -+#endif -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/gpio.h b/src/mainboard/lenovo/sklkbl_thinkpad/gpio.h -new file mode 100644 -index 0000000000..d89ed712d4 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/gpio.h -@@ -0,0 +1,8 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#ifndef GPIO_H -+#define GPIO_H -+ -+void variant_config_gpios(void); -+ -+#endif -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/ramstage.c b/src/mainboard/lenovo/sklkbl_thinkpad/ramstage.c -new file mode 100644 -index 0000000000..44c8578852 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/ramstage.c -@@ -0,0 +1,105 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <arch/io.h> -+#include <device/device.h> -+#include <drivers/intel/gma/int15.h> -+#include <option.h> -+#include <soc/ramstage.h> -+#include "ec.h" -+#include "gpio.h" -+ -+#define GPIO_GPU_RST GPP_E22 // active low -+#define GPIO_1R8VIDEO_AON_ON GPP_E23 -+ -+#define GPIO_DGFX_PWRGD GPP_F3 -+ -+#define GPIO_DISCRETE_PRESENCE GPP_D9 // active low -+#define GPIO_DGFX_VRAM_ID0 GPP_D11 -+#define GPIO_DGFX_VRAM_ID1 GPP_D12 -+ -+void mainboard_silicon_init_params(FSP_SIL_UPD *params) -+{ -+ static const char * const dgfx_vram_id_str[] = { "1GB", "2GB", "4GB", "N/A" }; -+ -+ int dgfx_vram_id; -+ -+ // Setup GPIOs -+ variant_config_gpios(); -+ -+ // Detect and enable dGPU -+ if (gpio_get(GPIO_DISCRETE_PRESENCE) == 0) { // active low -+ dgfx_vram_id = gpio_get(GPIO_DGFX_VRAM_ID0) | gpio_get(GPIO_DGFX_VRAM_ID1) << 1; -+ printk(BIOS_DEBUG, "Discrete GPU present with %s VRAM\n", dgfx_vram_id_str[dgfx_vram_id]); -+ -+ // NOTE: i pulled this GPU enable sequence from thin air -+ // it sometimes works but is buggy and the GPU disappears in some cases so disabling it by default. -+ // also unrelated to this enable sequence the nouveau driver only works on 6.8-6.9 kernels -+ if (get_uint_option("dgpu_enable", 0)) { -+ printk(BIOS_DEBUG, "Enabling discrete GPU\n"); -+ gpio_set(GPIO_1R8VIDEO_AON_ON, 1); // Enable GPU power rail -+ while (!gpio_get(GPIO_DGFX_PWRGD)) // Wait for power good signal from GPU -+ ; -+ gpio_set(GPIO_GPU_RST, 1); // Release GPU from reset -+ } else { -+ printk(BIOS_DEBUG, "Discrete GPU will remain disabled\n"); -+ } -+ -+ } else { -+ printk(BIOS_DEBUG, "Discrete GPU not present\n"); -+ } -+} -+ -+static void dump_ec_cfg(uint16_t port) -+{ -+ microchip_pnp_enter_conf_state(port); -+ -+ // Device info -+ printk(BIOS_DEBUG, "Device id %02x\n", pnp_read(port, EC_DEVICE_ID)); -+ printk(BIOS_DEBUG, "Device rev %02x\n", pnp_read(port, EC_DEVICE_REV)); -+ -+ // Switch to LPCIF LDN -+ pnp_write(port, PNP_LDN_SELECT, LDN_LPCIF); -+ -+ // Dump SIRQs -+ for (int i = 0; i <= 15; i += 1) -+ printk(BIOS_DEBUG, "SIRQ%d = %02x\n", i, pnp_read(port, LPCIF_SIRQ(i))); -+ -+ // Dump BARs -+ printk(BIOS_DEBUG, "BAR CFG = %08x\n", pnp_read_le32(port, LPCIF_BAR_CFG)); -+ printk(BIOS_DEBUG, "BAR MAILBOX = %08x\n", pnp_read_le32(port, LPCIF_BAR_MAILBOX)); -+ printk(BIOS_DEBUG, "BAR 8042 = %08x\n", pnp_read_le32(port, LPCIF_BAR_8042)); -+ printk(BIOS_DEBUG, "BAR ACPI_EC0 = %08x\n", pnp_read_le32(port, LPCIF_BAR_ACPI_EC0)); -+ printk(BIOS_DEBUG, "BAR ACPI_EC1 = %08x\n", pnp_read_le32(port, LPCIF_BAR_ACPI_EC1)); -+ printk(BIOS_DEBUG, "BAR ACPI_EC2 = %08x\n", pnp_read_le32(port, LPCIF_BAR_ACPI_EC2)); -+ printk(BIOS_DEBUG, "BAR ACPI_EC3 = %08x\n", pnp_read_le32(port, LPCIF_BAR_ACPI_EC3)); -+ printk(BIOS_DEBUG, "BAR ACPI_PM0 = %08x\n", pnp_read_le32(port, LPCIF_BAR_ACPI_PM0)); -+ printk(BIOS_DEBUG, "BAR UART = %08x\n", pnp_read_le32(port, LPCIF_BAR_UART)); -+ printk(BIOS_DEBUG, "BAR FAST_KYBD = %08x\n", pnp_read_le32(port, LPCIF_BAR_FAST_KYBD)); -+ printk(BIOS_DEBUG, "BAR EMBED_FLASH = %08x\n", pnp_read_le32(port, LPCIF_BAR_EMBED_FLASH)); -+ printk(BIOS_DEBUG, "BAR GP_SPI = %08x\n", pnp_read_le32(port, LPCIF_BAR_GP_SPI)); -+ printk(BIOS_DEBUG, "BAR EMI = %08x\n", pnp_read_le32(port, LPCIF_BAR_EMI)); -+ printk(BIOS_DEBUG, "BAR PMH7 = %08x\n", pnp_read_le32(port, LPCIF_BAR_PMH7)); -+ printk(BIOS_DEBUG, "BAR PORT80_DBG0 = %08x\n", pnp_read_le32(port, LPCIF_BAR_PORT80_DBG0)); -+ printk(BIOS_DEBUG, "BAR PORT80_DBG1 = %08x\n", pnp_read_le32(port, LPCIF_BAR_PORT80_DBG1)); -+ printk(BIOS_DEBUG, "BAR RTC = %08x\n", pnp_read_le32(port, LPCIF_BAR_RTC)); -+ -+ microchip_pnp_exit_conf_state(port); -+} -+ -+static void mainboard_enable(struct device *dev) -+{ -+ if (CONFIG(VGA_ROM_RUN)) -+ install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_EDP, -+ GMA_INT15_PANEL_FIT_DEFAULT, -+ GMA_INT15_BOOT_DISPLAY_DEFAULT, 0); -+} -+ -+static void mainboard_init(void *chip_info) -+{ -+ dump_ec_cfg(EC_CFG_PORT); -+} -+ -+struct chip_operations mainboard_ops = { -+ .enable_dev = mainboard_enable, -+ .init = mainboard_init, -+}; -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/data.vbt b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/data.vbt -new file mode 100644 -index 0000000000000000000000000000000000000000..4db4202961d0be67b75f52b28f2111d5655595c3 -GIT binary patch -literal 4106 -zcmeHJU2GIp6h5=FKeKmc=rAo()>4l^U|XP_ZDGYy!|YE>mu}hZ4|PdQy1<TF-O}0? -zDF)LeX(GlTYoZ2xkUp4bc(Fbi;|s>bV0gipVB&+pHzmFpc`=IXxii}qiqH*)7}PU+ -z?woV)x!<09?wNbfhQa6n_IK}3M!Gw&OgS)sY2Q$LJ4F+z{-JneATkt9refXr6+8sr -zR{e1eASVcGl#mf_O&p%I^1;3af=xDeN0ZnydT=;zHOH-q=O;(UFda)^<j^52Z;c<A -zv~t)#xI2OzS7p&7!}%QUJu-688gD}mM%EbG*3`NU(Fiq%!p$v4=y8%;+qQ?>LXW8| -z-Vsanq!Y==Kq9plQ+*gu^hf&pJ9?tY{h01cbtR&SfsVM!_*!D4W5>papLuo?gRur| -zF$`lX;f2t48Dpd4V@(*z=dq95OkkfiVU53N<(gE+=U)KHEdU4}@R=aMjTTTOcb8-a -zC9IXSxZB*|#u~SlHnpsY25L#Sxy6ljl16gI)H0f>for?qaszCX;ESpG=pqROFWR~Z -zTqQzcH(berra`9K(R~0OJ_eeA<Ovbd&vdN3&y}qtJ`q3y6wpP2V}*{Dbi8b357>=> -z&R-)LYP^U3@%6h}+0)7m-mEOhOM92<j^WbYrTU_kNXz~GCDNT`I|IC3AsFzURKM6k -zQdYbOof5*Zq``6G)5LxcgKFZn#G8mi#5;*Qh*QM-i4PHv5FaHzLHru=Tg2yx{aFHb -z(R2S=c8RBfL#5J#E-BTphw@OA+GpyZ;G1*r11OzSMVJD%l2Wuxx^l~w*1QYefHUN4 -zpSM~1{wGHQJOdv7$#vPs;Ii+!aI*SVDadZ``zyQq-N$35E%P{WT}(AcpKmkH*)gyF -z|NhTLpsow9_zOk6x>l32>zpvu-&@ZkPf<>~Bsv&Oy1O(`pbLUf3vt*0HIRk0U3EzI -zIeSaIE9*jps%6qP7$EQo8=K#f^K_mFpy5prkNNSOU;oI@KK0}Ge*G6eyWz+6OyADf -zE`}D<k1}?G;rmSggt5;V{>b#-81u-uS=OJB*=`v}WPMs@ugdtLtbZo6OEUf}>!QL` -z1zQ!pLt!Zek0|;p3VTDrj}`q(g?+8yuZk|KY?X>TRlP@LPpbH`s-ITbSygS+Jq6cQ -zp|Em=T_#B53Y|R}mtw!K3mUyWRhytxx_wi^(}HurDkx@L%OlKIA%rq@7%bE{p{Wl~ -zJJ%lV6&>fxBjnbA8G(&P?a8o%P#c~Wo$7|%1UE-$r;6jwt1uejOfMLwF-BDgC-Q+N -za!Hx;1S&$9!rlNCTsI*IMZ0#Y5aEO7sjIz#jb`S|q7OpRYx`h&=PK}_YnN#poNF=7 -z3yTO|pc0N&G3cozl21Q6c)l0vjm~0uFL)%2_T5RYR1$~dO~u)4px!jFycZNnchPVA -z!0+Vc_afL{m>rv2PY8{Cma`W{yG~JNJu?;L!#fSLmwRW{8R@gD7Z5~{xvZGpN)U`j -z^I~=;XVmtVzgSv@Na@HC?lC8A1l2+CU<IqV7J%6_t~L}S#%I}a5R3FZk`D#n4m*-O -z$?u%iuC_w$3p=)&nXQX^AwrdnK*hRu`Mqc`AzOgztfsBxvm77j5G7KQo#~<Ufx}jQ -z?|~8PU!d?s-JLd{0Ph}c6J*Zsxd^=dPINEGPS4+NOQoUG&E#4_TUNoTPI5CrmHR%r -VymGKbcpH8Yo8|ycF3<xZ{s}94r0@U$ - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gma-mainboard.ads b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gma-mainboard.ads -new file mode 100644 -index 0000000000..fcfbd75a92 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gma-mainboard.ads -@@ -0,0 +1,19 @@ -+-- SPDX-License-Identifier: GPL-2.0-or-later -+ -+with HW.GFX.GMA; -+with HW.GFX.GMA.Display_Probing; -+ -+use HW.GFX.GMA; -+use HW.GFX.GMA.Display_Probing; -+ -+private package GMA.Mainboard is -+ -+ ports : constant Port_List := -+ (eDP, -+ DP1, -+ DP2, -+ HDMI1, -+ HDMI2, -+ others => Disabled); -+ -+end GMA.Mainboard; -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c -new file mode 100644 -index 0000000000..f7c29e1f39 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c -@@ -0,0 +1,203 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <soc/gpio.h> -+#include "../../gpio.h" -+ -+/* FIXME: There are multiple GPIOs here that should be locked to prevent "TPM GPIO fail" style -+ * attacks. Unfortunately SKL/KBL GPIO locking *does not* work currently. */ -+ -+static const struct pad_config gpio_table[] = { -+ -+ /* ------- GPIO Community 0 ------- */ -+ -+ /* ------- GPIO Group GPP_A ------- */ -+ PAD_CFG_NF(GPP_A0, NONE, DEEP, NF1), /* -KBRC */ -+ PAD_CFG_NF(GPP_A1, NATIVE, DEEP, NF1), /* LPC_AD0 */ -+ PAD_CFG_NF(GPP_A2, NATIVE, DEEP, NF1), /* LPC_AD1 */ -+ PAD_CFG_NF(GPP_A3, NATIVE, DEEP, NF1), /* LPC_AD2 */ -+ PAD_CFG_NF(GPP_A4, NATIVE, DEEP, NF1), /* LPC_AD3 */ -+ PAD_CFG_NF(GPP_A5, NONE, DEEP, NF1), /* -LPC_FRAME */ -+ PAD_CFG_NF(GPP_A6, NONE, DEEP, NF1), /* IRQSER */ -+ PAD_CFG_NF(GPP_A7, NONE, DEEP, NF1), /* -TPM_IRQ */ -+ PAD_CFG_NF(GPP_A8, NONE, DEEP, NF1), /* -CLKRUN */ -+ PAD_CFG_NF(GPP_A9, NATIVE, DEEP, NF1), /* LPCCLK_EC_24M */ -+ PAD_CFG_NF(GPP_A10, NATIVE, DEEP, NF1), /* LPCCLK_DEBUG_24M */ -+ PAD_NC(GPP_A11, NONE), -+ PAD_NC(GPP_A12, NONE), -+ PAD_CFG_NF(GPP_A13, NATIVE, DEEP, NF1), /* -SUSWARN */ -+ PAD_CFG_NF(GPP_A14, NATIVE, DEEP, NF1), /* -SUS_STAT */ -+ PAD_CFG_NF(GPP_A15, NATIVE, DEEP, NF1), /* -SUSWARN */ -+ PAD_NC(GPP_A16, NONE), -+ PAD_NC(GPP_A17, NONE), -+ PAD_NC(GPP_A18, NONE), -+ PAD_NC(GPP_A19, NONE), -+ PAD_NC(GPP_A20, NONE), -+ PAD_NC(GPP_A21, NONE), -+ PAD_NC(GPP_A22, NONE), -+ PAD_NC(GPP_A23, NONE), -+ -+ /* ------- GPIO Group GPP_B ------- */ -+ PAD_NC(GPP_B0, NONE), -+ PAD_NC(GPP_B1, NONE), -+ PAD_NC(GPP_B2, NONE), -+ PAD_NC(GPP_B3, NONE), -+ PAD_CFG_GPI_SCI(GPP_B4, NONE, DEEP, EDGE_SINGLE, INVERT), /* -TBT_PLUG_EVENT */ -+ PAD_CFG_NF(GPP_B5, NONE, DEEP, NF1), /* -CLKREQ_PCIE0 */ -+ PAD_CFG_NF(GPP_B6, NONE, DEEP, NF1), /* -CLKREQ_PCIE4 */ -+ PAD_CFG_NF(GPP_B7, NONE, DEEP, NF1), /* -CLKREQ_PCIE5 */ -+ PAD_CFG_NF(GPP_B8, NONE, DEEP, NF1), /* -CLKREQ_PCIE6 */ -+ PAD_CFG_NF(GPP_B9, NONE, DEEP, NF1), /* -CLKREQ_PCIE8 */ -+ PAD_CFG_NF(GPP_B10, NONE, DEEP, NF1), /* -CLKREQ_PCIE10 */ -+ PAD_NC(GPP_B11, NONE), -+ PAD_CFG_NF(GPP_B12, NONE, DEEP, NF1), /* -PCH_SLP_S0 */ -+ PAD_CFG_NF(GPP_B13, NONE, DEEP, NF1), /* -PLTRST */ -+ PAD_CFG_NF(GPP_B14, NATIVE, DEEP, NF1), /* PCH_SPKR */ -+ PAD_CFG_GPO(GPP_B15, 1, DEEP), /* NFC_DLREQ */ -+ PAD_NC(GPP_B16, NONE), -+ PAD_NC(GPP_B17, NONE), -+ PAD_NC(GPP_B18, NONE), -+ PAD_NC(GPP_B19, NONE), -+ PAD_NC(GPP_B20, NONE), -+ PAD_NC(GPP_B21, NONE), -+ PAD_NC(GPP_B22, NONE), -+ PAD_NC(GPP_B23, NONE), -+ -+ /* ------- GPIO Community 1 ------- */ -+ -+ /* ------- GPIO Group GPP_C ------- */ -+ PAD_CFG_NF(GPP_C0, NONE, DEEP, NF1), /* SMB_CLK */ -+ PAD_CFG_NF(GPP_C1, NONE, DEEP, NF1), /* SMB_DATA */ -+ PAD_NC(GPP_C2, NONE), -+ PAD_CFG_NF(GPP_C3, NONE, DEEP, NF1), /* SML0_CLK */ -+ PAD_CFG_NF(GPP_C4, NONE, DEEP, NF1), /* SML0_DATA */ -+ PAD_NC(GPP_C5, NONE), -+ PAD_CFG_NF(GPP_C6, NONE, DEEP, NF1), /* EC_SCL2 */ -+ PAD_CFG_NF(GPP_C7, NONE, DEEP, NF1), /* EC_SDA2 */ -+ PAD_NC(GPP_C8, NONE), -+ PAD_NC(GPP_C9, NONE), -+ PAD_NC(GPP_C10, NONE), -+ PAD_NC(GPP_C11, NONE), -+ PAD_NC(GPP_C12, NONE), -+ PAD_NC(GPP_C13, NONE), -+ PAD_NC(GPP_C14, NONE), -+ PAD_NC(GPP_C15, NONE), -+ PAD_CFG_NF(GPP_C16, NONE, DEEP, NF1), /* I2C0_DATA */ -+ PAD_CFG_NF(GPP_C17, NONE, DEEP, NF1), /* I2C0_CLK */ -+ PAD_NC(GPP_C18, NONE), -+ PAD_NC(GPP_C19, NONE), -+ PAD_CFG_GPO(GPP_C20, 0, DEEP), /* EPRIVACY_ON */ -+ PAD_CFG_GPO(GPP_C21, 0, DEEP), /* TBT_FORCE_PWR */ -+ PAD_CFG_GPI_SCI(GPP_C22, NONE, DEEP, EDGE_SINGLE, INVERT), /* -EC_SCI */ -+ PAD_CFG_GPI_SCI(GPP_C23, NONE, DEEP, EDGE_SINGLE, INVERT), /* -EC_WAKE */ -+ -+ /* ------- GPIO Group GPP_D ------- */ -+ PAD_NC(GPP_D0, NONE), -+ PAD_NC(GPP_D1, NONE), -+ PAD_NC(GPP_D2, NONE), -+ PAD_NC(GPP_D3, NONE), -+ PAD_NC(GPP_D4, NONE), -+ PAD_NC(GPP_D5, NONE), -+ PAD_NC(GPP_D6, NONE), -+ PAD_NC(GPP_D7, NONE), -+ PAD_NC(GPP_D8, NONE), -+ PAD_CFG_GPI_TRIG_OWN(GPP_D9, UP_20K, DEEP, OFF, ACPI), /* -DISCRETE_PRESENCE */ -+ PAD_NC(GPP_D10, NONE), -+ PAD_CFG_GPI_TRIG_OWN(GPP_D11, UP_20K, DEEP, OFF, ACPI), /* DGFX_VRAM_ID0 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_D12, UP_20K, DEEP, OFF, ACPI), /* DGFX_VRAM_ID1 */ -+ PAD_NC(GPP_D13, NONE), -+ PAD_NC(GPP_D14, NONE), -+ PAD_NC(GPP_D15, NONE), -+ PAD_NC(GPP_D16, NONE), -+ PAD_CFG_GPO(GPP_D17, 0, DEEP), /* DDI_PRIORITY1 */ -+ PAD_NC(GPP_D18, NONE), -+ PAD_NC(GPP_D19, NONE), -+ PAD_NC(GPP_D20, NONE), -+ PAD_NC(GPP_D21, NONE), -+ PAD_CFG_GPI_TRIG_OWN(GPP_D22, UP_20K, DEEP, OFF, ACPI), /* -NFC_DTCT */ -+ PAD_NC(GPP_D23, NONE), -+ -+ /* ------- GPIO Group GPP_E ------- */ -+ PAD_NC(GPP_E0, NONE), -+ PAD_CFG_NF(GPP_E1, NONE, DEEP, NF1), /* -WWAN_SATA_DTCT (always HIGH) */ -+ PAD_CFG_NF(GPP_E2, NONE, DEEP, NF1), /* -PE_DTCT */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_E3, NONE, DEEP, EDGE_SINGLE, ACPI), /* -TBT_PLUG_EVENT */ -+ PAD_CFG_GPO(GPP_E4, 1, DEEP), /* NFC_ON */ -+ PAD_NC(GPP_E5, NONE), -+ PAD_CFG_NF(GPP_E6, NONE, RSMRST, NF1), /* SATA2_DEVSLP */ -+ PAD_NC(GPP_E7, NONE), -+ PAD_NC(GPP_E8, NONE), -+ PAD_CFG_NF(GPP_E9, NONE, DEEP, NF1), /* -USB_PORT0_OC0 (AON port) */ -+ PAD_CFG_NF(GPP_E10, NONE, DEEP, NF1), /* -USB_PORT1_OC1 (regular port) */ -+ PAD_NC(GPP_E11, NONE), -+ PAD_CFG_GPI_APIC_HIGH(GPP_E12, NONE, DEEP), /* NFC_INT */ -+ PAD_CFG_NF(GPP_E13, NONE, DEEP, NF1), /* DDIP1_HPD */ -+ PAD_CFG_NF(GPP_E14, NONE, DEEP, NF1), /* DDIP2_HPD */ -+ PAD_NC(GPP_E15, NONE), -+ PAD_NC(GPP_E16, NONE), -+ PAD_CFG_NF(GPP_E17, NONE, DEEP, NF1), /* EDP_HPD */ -+ PAD_NC(GPP_E18, NONE), -+ PAD_NC(GPP_E19, NONE), -+ PAD_CFG_NF(GPP_E20, NONE, DEEP, NF1), /* DDIP2_CTRLCLK */ -+ PAD_CFG_NF(GPP_E21, NONE, DEEP, NF1), /* DDIP2_CTRLDATA */ -+ PAD_CFG_TERM_GPO(GPP_E22, 0, UP_20K, RSMRST), /* -GPU_RST */ -+ PAD_CFG_TERM_GPO(GPP_E23, 0, UP_20K, RSMRST), /* 1R8VIDEO_AON_ON */ -+ -+ /* ------- GPIO Community 2 ------- */ -+ -+ /* -------- GPIO Group GPD -------- */ -+ PAD_CFG_NF(GPD0, NONE, PWROK, NF1), /* -BATLOW */ -+ PAD_CFG_NF(GPD1, NATIVE, PWROK, NF1), /* AC_PRESENT */ -+ PAD_CFG_NF(GPD2, NATIVE, PWROK, NF1), /* -LANWAKE */ -+ PAD_CFG_NF(GPD3, UP_20K, PWROK, NF1), /* -PWRSW_EC */ -+ PAD_CFG_NF(GPD4, NONE, PWROK, NF1), /* -PCH_SLP_S3 */ -+ PAD_CFG_NF(GPD5, NONE, PWROK, NF1), /* -PCH_SLP_S4 */ -+ PAD_CFG_NF(GPD6, NONE, PWROK, NF1), /* -PCH_SLP_M */ -+ PAD_NC(GPD7, NONE), -+ PAD_CFG_NF(GPD8, NONE, PWROK, NF1), /* SUSCLK_32K */ -+ PAD_CFG_NF(GPD9, NONE, PWROK, NF1), /* -PCH_SLP_WLAN */ -+ PAD_CFG_NF(GPD10, NONE, PWROK, NF1), /* -PCH_SLP_S5 */ -+ PAD_CFG_NF(GPD11, NONE, PWROK, NF1), /* LANPHYPC */ -+ -+ /* ------- GPIO Community 3 ------- */ -+ -+ /* ------- GPIO Group GPP_F ------- */ -+ PAD_NC(GPP_F0, NONE), -+ PAD_CFG_GPI_TRIG_OWN(GPP_F1, NONE, DEEP, OFF, ACPI), /* GC6_FB_EN */ -+ PAD_CFG_GPO(GPP_F2, 1, DEEP), /* -GPU_EVENT */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F3, NONE, DEEP, OFF, ACPI), /* DGFX_PWRGD */ -+ PAD_CFG_GPO(GPP_F4, 1, DEEP), /* -WWAN_RESET */ -+ PAD_NC(GPP_F5, NONE), -+ PAD_CFG_GPI_TRIG_OWN(GPP_F6, UP_20K, DEEP, OFF, ACPI), /* -MIC_HW_EN (R961 to GND) */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F7, UP_20K, DEEP, OFF, ACPI), /* -INT_MIC_DTCT */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F8, UP_20K, DEEP, OFF, ACPI), /* WWAN_CFG0 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F9, UP_20K, DEEP, OFF, ACPI), /* WWAN_CFG1 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F10, UP_20K, DEEP, OFF, ACPI), /* WWAN_CFG2 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F11, UP_20K, DEEP, OFF, ACPI), /* WWAN_CFG3 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F12, UP_20K, DEEP, OFF, ACPI), /* PLANARID0 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F13, UP_20K, DEEP, OFF, ACPI), /* PLANARID1 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F14, UP_20K, DEEP, OFF, ACPI), /* PLANARID2 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F15, UP_20K, DEEP, OFF, ACPI), /* PLANARID3 */ -+ PAD_NC(GPP_F16, NONE), -+ PAD_NC(GPP_F17, NONE), -+ PAD_NC(GPP_F18, NONE), -+ PAD_NC(GPP_F19, NONE), -+ PAD_NC(GPP_F20, NONE), -+ PAD_NC(GPP_F21, NONE), -+ PAD_CFG_GPI_TRIG_OWN(GPP_F22, UP_20K, DEEP, OFF, ACPI), /* -INTRUDER_PCH */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F23, UP_20K, DEEP, OFF, ACPI), /* -SC_DTCT */ -+ -+ /* ------- GPIO Group GPP_G ------- */ -+ PAD_NC(GPP_G0, NONE), -+ PAD_NC(GPP_G1, NONE), -+ PAD_NC(GPP_G2, NONE), -+ PAD_NC(GPP_G3, NONE), -+ PAD_CFG_GPO(GPP_G4, 0, DEEP), /* TBT_RTD3_PWR_EN */ -+ PAD_CFG_GPO(GPP_G5, 0, DEEP), /* TBT_FORCE_USB_PWR */ -+ PAD_CFG_GPO(GPP_G6, 0, DEEP), /* -TBT_PERST */ -+ PAD_CFG_GPI_SCI(GPP_G7, NONE, DEEP, LEVEL, INVERT), /* -TBT_PCIE_WAKE */ -+}; -+ -+void variant_config_gpios(void) -+{ -+ gpio_configure_pads(gpio_table, ARRAY_SIZE(gpio_table)); -+} -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/hda_verb.c b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/hda_verb.c -new file mode 100644 -index 0000000000..3a951ce0da ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/hda_verb.c -@@ -0,0 +1,90 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <device/azalia_device.h> -+ -+const u32 cim_verb_data[] = { -+ 0x10ec0257, // Vendor/Device ID: Realtek ALC257 -+ 0x17aa225d, // Subsystem ID -+ 11, -+ AZALIA_SUBVENDOR(0, 0x17aa225d), -+ -+ AZALIA_PIN_CFG(0, 0x12, AZALIA_PIN_DESC( -+ AZALIA_INTEGRATED, -+ AZALIA_INTERNAL, -+ AZALIA_MIC_IN, -+ AZALIA_OTHER_DIGITAL, -+ AZALIA_COLOR_UNKNOWN, -+ AZALIA_NO_JACK_PRESENCE_DETECT, -+ 2, 0 -+ )), -+ AZALIA_PIN_CFG(0, 0x13, 0x40000000), // does not describe a jack or internal device -+ AZALIA_PIN_CFG(0, 0x14, AZALIA_PIN_DESC( -+ AZALIA_INTEGRATED, -+ AZALIA_INTERNAL, -+ AZALIA_SPEAKER, -+ AZALIA_OTHER_ANALOG, -+ AZALIA_COLOR_UNKNOWN, -+ AZALIA_NO_JACK_PRESENCE_DETECT, -+ 1, 0 -+ )), -+ AZALIA_PIN_CFG(0, 0x18, AZALIA_PIN_CFG_NC(0)), -+ AZALIA_PIN_CFG(0, 0x19, AZALIA_PIN_DESC( -+ AZALIA_JACK, -+ AZALIA_EXTERNAL_PRIMARY_CHASSIS | AZALIA_RIGHT, -+ AZALIA_MIC_IN, -+ AZALIA_STEREO_MONO_1_8, -+ AZALIA_BLACK, -+ AZALIA_JACK_PRESENCE_DETECT, -+ 3, 0 -+ )), -+ AZALIA_PIN_CFG(0, 0x1a, AZALIA_PIN_CFG_NC(0)), -+ AZALIA_PIN_CFG(0, 0x1b, AZALIA_PIN_CFG_NC(0)), -+ AZALIA_PIN_CFG(0, 0x1d, 0x40661b45), // does not describe a jack or internal device -+ AZALIA_PIN_CFG(0, 0x1e, AZALIA_PIN_CFG_NC(0)), -+ AZALIA_PIN_CFG(0, 0x21, AZALIA_PIN_DESC( -+ AZALIA_JACK, -+ AZALIA_EXTERNAL_PRIMARY_CHASSIS | AZALIA_RIGHT, -+ AZALIA_HP_OUT, -+ AZALIA_STEREO_MONO_1_8, -+ AZALIA_BLACK, -+ AZALIA_JACK_PRESENCE_DETECT, -+ 1, 15 -+ )), -+ -+ 0x8086280b, // Vendor/Device ID: Intel Kabylake HDMI -+ 0x80860101, // Subsystem ID -+ 4, -+ AZALIA_SUBVENDOR(2, 0x80860101), -+ -+ AZALIA_PIN_CFG(2, 0x05, AZALIA_PIN_DESC( -+ AZALIA_JACK, -+ AZALIA_DIGITAL_DISPLAY, -+ AZALIA_DIGITAL_OTHER_OUT, -+ AZALIA_OTHER_DIGITAL, -+ AZALIA_COLOR_UNKNOWN, -+ AZALIA_JACK_PRESENCE_DETECT, -+ 1, 0 -+ )), -+ AZALIA_PIN_CFG(2, 0x06, AZALIA_PIN_DESC( -+ AZALIA_JACK, -+ AZALIA_DIGITAL_DISPLAY, -+ AZALIA_DIGITAL_OTHER_OUT, -+ AZALIA_OTHER_DIGITAL, -+ AZALIA_COLOR_UNKNOWN, -+ AZALIA_JACK_PRESENCE_DETECT, -+ 2, 0 -+ )), -+ AZALIA_PIN_CFG(2, 0x07, AZALIA_PIN_DESC( -+ AZALIA_JACK, -+ AZALIA_DIGITAL_DISPLAY, -+ AZALIA_DIGITAL_OTHER_OUT, -+ AZALIA_OTHER_DIGITAL, -+ AZALIA_COLOR_UNKNOWN, -+ AZALIA_JACK_PRESENCE_DETECT, -+ 3, 0 -+ )), -+}; -+ -+const u32 pc_beep_verbs[] = {}; -+ -+AZALIA_ARRAY_SIZES; -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/memory_init_params.c b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/memory_init_params.c -new file mode 100644 -index 0000000000..5252a402f9 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/memory_init_params.c -@@ -0,0 +1,20 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <soc/romstage.h> -+#include <spd_bin.h> -+ -+void mainboard_memory_init_params(FSPM_UPD *mupd) -+{ -+ FSP_M_CONFIG *mem_cfg = &mupd->FspmConfig; -+ mem_cfg->DqPinsInterleaved = true; /* DDR_DQ in interleave mode */ -+ mem_cfg->CaVrefConfig = 2; /* VREF_CA to CH_A and VREF_DQ_B to CH_B */ -+ mem_cfg->MemorySpdDataLen = CONFIG_DIMM_SPD_SIZE; -+ -+ /* Get SPD for memory slots */ -+ struct spd_block blk = { .addr_map = { 0x50, 0x51, } }; -+ get_spd_smbus(&blk); -+ dump_spd_info(&blk); -+ -+ mem_cfg->MemorySpdPtr00 = (uintptr_t)blk.spd_array[0]; -+ mem_cfg->MemorySpdPtr10 = (uintptr_t)blk.spd_array[1]; -+} -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/overridetree.cb b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/overridetree.cb -new file mode 100644 -index 0000000000..bf66bd3a69 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/overridetree.cb -@@ -0,0 +1,103 @@ -+# SPDX-License-Identifier: GPL-2.0-only -+ -+chip soc/intel/skylake -+ device domain 0 on -+ device ref south_xhci on -+ register "usb2_ports" = "{ -+ [0] = USB2_PORT_MID(OC1), // USB-A -+ [1] = USB2_PORT_MID(OC0), // USB-A (always on) -+ [2] = USB2_PORT_MID(OC_SKIP), // JSC-1 (smartcard slot) -+ [3] = USB2_PORT_MID(OC_SKIP), // USB-C (charging port) -+ [4] = USB2_PORT_MID(OC_SKIP), // JCAM1 (IR camera) -+ [5] = USB2_PORT_MID(OC_SKIP), // JWWAN1 (M.2 WWAN USB) -+ [6] = USB2_PORT_MID(OC_SKIP), // JWLAN1 (M.2 WLAN USB) -+ [7] = USB2_PORT_MID(OC_SKIP), // JCAM1 (webcam) -+ [8] = USB2_PORT_MID(OC_SKIP), // JFPR1 (fingerprint reader) -+ [9] = USB2_PORT_MID(OC_SKIP), // JLCD1 (touch panel) -+ }" -+ register "usb3_ports" = "{ -+ [0] = USB3_PORT_DEFAULT(OC1), // USB-A -+ [1] = USB3_PORT_DEFAULT(OC0), // USB-A (always on) -+ [2] = USB3_PORT_DEFAULT(OC_SKIP), // RTS5344S (SD card reader) -+ [3] = USB3_PORT_DEFAULT(OC_SKIP), // USB-C (charging port) -+ }" -+ end -+ -+ device ref sata on -+ # SATA_2 - JHDD1 SATA SSD -+ register "SataPortsEnable[2]" = "1" -+ register "SataPortsDevSlp[2]" = "1" -+ end -+ -+ # PCIe controller 1 - 1x4 -+ # PCIE 1-4 - RP1 - dGPU - CLKOUT0 - CLKREQ0 -+ # -+ # PCIe controller 2 - 2x1+1x2 (lane reversal) -+ # PCIE 5 - GBE - GBE - CLKOUT1 - CLKREQ1 (clobbers RP8) -+ # PCIE 6 - RP7 - WLAN - CLKOUT2 - CLKREQ2 -+ # PCIE 7-8 - RP5 - WWAN - CLKOUT3 - CLKREQ3 -+ # -+ # PCIe controller 3 - 2x2 -+ # PCIE 9-10 - RP9 - TB3 - CLKOUT4 - CLKREQ4 -+ # PCIE 11-12 - RP11 - SSD - CLKOUT5 - CLKREQ5 -+ -+ # dGPU - x4 -+ device ref pcie_rp1 on -+ register "PcieRpEnable[0]" = "1" -+ register "PcieRpClkReqSupport[0]" = "1" -+ register "PcieRpClkReqNumber[0]" = "0" -+ register "PcieRpClkSrcNumber[0]" = "0" -+ register "PcieRpAdvancedErrorReporting[0]" = "1" -+ register "PcieRpLtrEnable[0]" = "1" -+ end -+ -+ # Ethernet (clobbers RP8) -+ device ref gbe on -+ register "LanClkReqSupported" = "1" -+ register "LanClkReqNumber" = "1" -+ register "EnableLanLtr" = "1" -+ register "EnableLanK1Off" = "1" -+ end -+ -+ # M.2 WLAN - x1 -+ device ref pcie_rp7 on -+ register "PcieRpEnable[6]" = "1" -+ register "PcieRpClkReqSupport[6]" = "1" -+ register "PcieRpClkReqNumber[6]" = "2" -+ register "PcieRpClkSrcNumber[6]" = "2" -+ register "PcieRpAdvancedErrorReporting[6]" = "1" -+ register "PcieRpLtrEnable[6]" = "1" -+ end -+ -+ # M.2 WWAN - x2 -+ device ref pcie_rp5 on -+ register "PcieRpEnable[4]" = "1" -+ register "PcieRpClkReqSupport[4]" = "1" -+ register "PcieRpClkReqNumber[4]" = "3" -+ register "PcieRpClkSrcNumber[4]" = "3" -+ register "PcieRpAdvancedErrorReporting[4]" = "1" -+ register "PcieRpLtrEnable[4]" = "1" -+ end -+ -+ # TB3 (Alpine Ridge LP) - x2 -+ device ref pcie_rp9 on -+ register "PcieRpEnable[8]" = "1" -+ register "PcieRpClkReqSupport[8]" = "1" -+ register "PcieRpClkReqNumber[8]" = "4" -+ register "PcieRpClkSrcNumber[8]" = "4" -+ register "PcieRpAdvancedErrorReporting[8]" = "1" -+ register "PcieRpLtrEnable[8]" = "1" -+ register "PcieRpHotPlug[8]" = "1" -+ end -+ -+ # M.2 2280 caddy - x2 -+ device ref pcie_rp11 on -+ register "PcieRpEnable[10]" = "1" -+ register "PcieRpClkReqSupport[10]" = "1" -+ register "PcieRpClkReqNumber[10]" = "5" -+ register "PcieRpClkSrcNumber[10]" = "5" -+ register "PcieRpAdvancedErrorReporting[10]" = "1" -+ register "PcieRpLtrEnable[10]" = "1" -+ end -+ end -+end -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/data.vbt b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/data.vbt -new file mode 100644 -index 0000000000000000000000000000000000000000..47732e37d5b2bad4e674fd10eafa605d26f97840 -GIT binary patch -literal 4106 -zcmeHJUu+a*5TCu>yW9JAmoD2P<t%lC2CfC#y%tU^HSGOq>9tqx`iFWXCLD09R<E?S -zMT)`nNScT-%9*GEA8a2?G`v`!jPV6yVlcd5OnC6Y;F}U&jJz1db9VRID@E)DLk#NN -z&9^i2&Hiq_`R2ZF8ipf7IM{nI5$^585@kULrrx0OPKv~ngNI__q41$dA{p()ui+v1 -zw(9rm09lUPAP4nOTm0CRnF|aw5^SQSH<G}<u_Gfnvn6IuK0h@!j;UxI!$*&rIdkIh -zl$piB;eBDWa1|CgK9bAg{^O%Z%!ziiz{neeJDb~fBI?1GV5p^44?a$ETl=n1d+;%Z -z#X6(OzEnIB9*QUTV{!mv@xk!mU}s+>aS&4j$?kY0KGYdgn6;MZ*!anbk!PNr!a%eU -zTXkLEL3ly5L&oUX#CS7?b2%Kad?s<goHQq1G_%bLv);c5qQC)gZtxnw!L3%1MWI_X -z0wUImYD_R11gsI%l%Zw})KN_c#&!YgM3v;Up{7+s1=lXlB>-#@;mhg8>>>#S&)d2I -zmP&-g0$k02szSQj(Y*j}YYtQnDH0;2ui<!ko-28Y){6ilAcrmz951v4RTWQ_ye!or -z4xOJya#Sr7{o)%XFUfJCndM%KM(c^ol_hzlb*1h&uC%Vy%U(P!_qUfwcb4r;SmPQ_ -zhxf($vVo)we+jxogb`7NQ^aS9eQpNT#2bmX5(kO*5O)$Mi4PJVB_1U{L42C{HR894 -z=ZJk70(Q~o{*COiRR#_fix0XaS3?igAuo2!)<NF8ARGWF&M7=h16xZaS|UxpZA)w3 -z1CQUC@^&oxtbG2HGk&WA9=_qa;$?8fdy_j;eY+H3ciR5U?|$2?oT;mPoV=Dx&CwUf -zv~zYWs{cR#vl*!ChO54O0k3UT#mpur4fXeCdE_aoNtZ|mgF!ck3Nmy<0BRuy4NwCa -zNZDP7XrHsU<-0NyB2=wXwgEqZPukelExAY+hyWVj0{)~A=X~17KK7XpzxQcB``9fX -zZf4pp#`ZEanRbG)(+odg+NX?t!SF|>{mPhI!flfFgv9nqI4Wr~5_?s`k0kALiCvcP -zCrRUFrpVYPYn?Jn%6MGXUXj_GGJYa!U&-tn8Gn&ANnz_0+@olH3VTw)mlf@-!p<v7 -zljhF5u5tObYwR{boRI14NxNkGd6QG=>8{!e#p0ct5}M(h16D>p?OGjSz6v3juERjS -z#z{?mXvVqrXs_rvUmYR40gNzg(QD6y9E94?4DWO|6eb83LI-smcVC6x1n2reH}rAp -zLM);f=tWDCr``UF5T>!;PYu^H1g>EBP8A}2*fM>s-@nC3pDV|}6+CtfhG(II7`pcw -z`jLfJ!?;*R@Bp=Nw2EPOC7FEs(cugIP_K6tN_$~tvS8nx6iOv|IMrO3&-m*N9ZP#b -znG^~>I|l1cUVSeD9r^k3h0TP}WWD9=MZxY<<azgO1@-W5<NTHW*-d)t{Q4yX9_+?a -zHawLe=uO6@%xqS#?JxafX%#$`BhkIqq>Z3B2yU!k71#YRpThOJtVheMDA50rV#s@U -z+nKbA{O(olYR}icuzQD*-cjBQ9;%!eMDVP>7mWsF@=%>o)wSgq=n%DHNOYwRr4Ao6 -zbNdgEn*RdDS>Rud+fIY0N8JkP3q6;>8o%R(CE2n3?Xg%qP+U%~6|{XFyxv7Y#;J2Z -XK$lk*wsY^m4}9|iz?mg_AjCfat$CyH - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gma-mainboard.ads b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gma-mainboard.ads -new file mode 100644 -index 0000000000..fcfbd75a92 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gma-mainboard.ads -@@ -0,0 +1,19 @@ -+-- SPDX-License-Identifier: GPL-2.0-or-later -+ -+with HW.GFX.GMA; -+with HW.GFX.GMA.Display_Probing; -+ -+use HW.GFX.GMA; -+use HW.GFX.GMA.Display_Probing; -+ -+private package GMA.Mainboard is -+ -+ ports : constant Port_List := -+ (eDP, -+ DP1, -+ DP2, -+ HDMI1, -+ HDMI2, -+ others => Disabled); -+ -+end GMA.Mainboard; -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gpio.c b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gpio.c -new file mode 100644 -index 0000000000..a98dd2bc4e ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gpio.c -@@ -0,0 +1,199 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <soc/gpio.h> -+#include "../../gpio.h" -+ -+static const struct pad_config gpio_table[] = { -+ /* ------- GPIO Community 0 ------- */ -+ -+ /* ------- GPIO Group GPP_A ------- */ -+ PAD_CFG_NF(GPP_A0, NONE, DEEP, NF1), /* -KBRC */ -+ PAD_CFG_NF(GPP_A1, NATIVE, DEEP, NF1), /* LPC_AD0 */ -+ PAD_CFG_NF(GPP_A2, NATIVE, DEEP, NF1), /* LPC_AD1 */ -+ PAD_CFG_NF(GPP_A3, NATIVE, DEEP, NF1), /* LPC_AD2 */ -+ PAD_CFG_NF(GPP_A4, NATIVE, DEEP, NF1), /* LPC_AD3 */ -+ PAD_CFG_NF(GPP_A5, NONE, DEEP, NF1), /* -LPC_FRAME */ -+ PAD_CFG_NF(GPP_A6, NONE, DEEP, NF1), /* IRQSER */ -+ PAD_CFG_NF(GPP_A7, NONE, DEEP, NF1), /* -TPM_IRQ */ -+ PAD_CFG_NF(GPP_A8, NONE, DEEP, NF1), /* -CLKRUN */ -+ PAD_CFG_NF(GPP_A9, DN_20K, DEEP, NF1), /* LPCCLK_EC_24M */ -+ PAD_CFG_NF(GPP_A10, DN_20K, DEEP, NF1), /* LPCCLK_DEBUG_24M */ -+ PAD_NC(GPP_A11, NONE), -+ PAD_NC(GPP_A12, NONE), -+ PAD_CFG_NF(GPP_A13, NONE, DEEP, NF1), /* -SUSWARN */ -+ PAD_CFG_NF(GPP_A14, NONE, DEEP, NF1), /* -SUS_STAT */ -+ PAD_CFG_NF(GPP_A15, UP_20K, DEEP, NF1), /* -SUSWARN */ -+ PAD_NC(GPP_A16, NONE), -+ PAD_NC(GPP_A17, NONE), -+ PAD_NC(GPP_A18, NONE), -+ PAD_NC(GPP_A19, NONE), -+ PAD_NC(GPP_A20, NONE), -+ PAD_NC(GPP_A21, NONE), -+ PAD_NC(GPP_A22, NONE), -+ PAD_NC(GPP_A23, NONE), -+ -+ /* ------- GPIO Group GPP_B ------- */ -+ PAD_CFG_NF(GPP_B0, NONE, DEEP, NF1), -+ PAD_CFG_NF(GPP_B1, NONE, DEEP, NF1), -+ PAD_NC(GPP_B2, NONE), -+ PAD_NC(GPP_B3, NONE), -+ PAD_CFG_GPI_SCI(GPP_B4, NONE, DEEP, EDGE_SINGLE, INVERT), /* -TBT_PLUG_EVENT */ -+ PAD_CFG_NF(GPP_B5, NONE, DEEP, NF1), /* -CLKREQ_PCIE0 (dGPU) */ -+ PAD_CFG_NF(GPP_B6, NONE, DEEP, NF1), /* -CLKREQ_PCIE3 (WWAN) */ -+ PAD_CFG_NF(GPP_B7, NONE, DEEP, NF1), /* -CLKREQ_PCIE4 (GBE) */ -+ PAD_CFG_NF(GPP_B8, NONE, DEEP, NF1), /* -CLKREQ_PCIE5 (WLAN) */ -+ PAD_CFG_NF(GPP_B9, NONE, DEEP, NF1), /* -CLKREQ_PCIE6 (TB3) */ -+ PAD_CFG_NF(GPP_B10, NONE, DEEP, NF1), /* -CLKREQ_PCIE8 (SSD) */ -+ PAD_NC(GPP_B11, NONE), -+ PAD_CFG_NF(GPP_B12, NONE, DEEP, NF1), /* -PCH_SLP_S0 */ -+ PAD_CFG_NF(GPP_B13, NONE, DEEP, NF1), /* -PLTRST */ -+ PAD_CFG_NF(GPP_B14, NONE, DEEP, NF1), /* PCH_SPKR */ -+ PAD_CFG_GPO(GPP_B15, 0, DEEP), /* NFC_DLREQ */ -+ PAD_NC(GPP_B16, NONE), -+ PAD_NC(GPP_B17, NONE), -+ PAD_NC(GPP_B18, NONE), -+ PAD_NC(GPP_B19, NONE), -+ PAD_NC(GPP_B20, NONE), -+ PAD_NC(GPP_B21, NONE), -+ PAD_NC(GPP_B22, NONE), -+ PAD_NC(GPP_B23, NONE), -+ -+ /* ------- GPIO Community 1 ------- */ -+ -+ /* ------- GPIO Group GPP_C ------- */ -+ PAD_CFG_NF(GPP_C0, NONE, DEEP, NF1), /* SMB_CLK */ -+ PAD_CFG_NF(GPP_C1, NONE, DEEP, NF1), /* SMB_DATA */ -+ PAD_CFG_GPO(GPP_C2, 1, DEEP), -+ PAD_CFG_NF(GPP_C3, NONE, DEEP, NF1), /* SML0_CLK */ -+ PAD_CFG_NF(GPP_C4, NONE, DEEP, NF1), /* SML0_DATA */ -+ PAD_NC(GPP_C5, NONE), -+ PAD_CFG_NF(GPP_C6, NONE, DEEP, NF1), /* EC_SCL2 */ -+ PAD_CFG_NF(GPP_C7, NONE, DEEP, NF1), /* EC_SDA2 */ -+ PAD_NC(GPP_C8, NONE), -+ PAD_NC(GPP_C9, NONE), -+ PAD_NC(GPP_C10, NONE), -+ PAD_NC(GPP_C11, NONE), -+ PAD_NC(GPP_C12, NONE), -+ PAD_NC(GPP_C13, NONE), -+ PAD_NC(GPP_C14, NONE), -+ PAD_NC(GPP_C15, NONE), -+ PAD_CFG_NF(GPP_C16, NONE, DEEP, NF1), /* I2C0_DATA */ -+ PAD_CFG_NF(GPP_C17, NONE, DEEP, NF1), /* I2C0_CLK */ -+ PAD_NC(GPP_C18, NONE), -+ PAD_NC(GPP_C19, NONE), -+ PAD_CFG_GPO(GPP_C20, 0, DEEP), /* EPRIVACY_ON */ -+ PAD_CFG_GPO(GPP_C21, 0, DEEP), /* TBT_FORCE_PWR */ -+ PAD_CFG_GPI_SCI(GPP_C22, NONE, DEEP, EDGE_SINGLE, INVERT), /* -EC_SCI */ -+ PAD_CFG_GPI_SCI(GPP_C23, NONE, DEEP, EDGE_SINGLE, INVERT), /* -EC_WAKE */ -+ -+ /* ------- GPIO Group GPP_D ------- */ -+ PAD_NC(GPP_D0, NONE), -+ PAD_NC(GPP_D1, NONE), -+ PAD_NC(GPP_D2, NONE), -+ PAD_NC(GPP_D3, NONE), -+ PAD_NC(GPP_D4, NONE), -+ PAD_NC(GPP_D5, NONE), -+ PAD_NC(GPP_D6, NONE), -+ PAD_NC(GPP_D7, NONE), -+ PAD_NC(GPP_D8, NONE), -+ PAD_CFG_GPI_TRIG_OWN(GPP_D9, UP_20K, DEEP, OFF, ACPI), /* -DISCRETE_PRESENCE */ -+ PAD_NC(GPP_D10, NONE), -+ PAD_CFG_GPI_TRIG_OWN(GPP_D11, UP_20K, DEEP, OFF, ACPI), /* DGFX_VRAM_ID0 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_D12, UP_20K, DEEP, OFF, ACPI), /* DGFX_VRAM_ID1 */ -+ PAD_NC(GPP_D13, NONE), -+ PAD_NC(GPP_D14, NONE), -+ PAD_NC(GPP_D15, NONE), -+ PAD_NC(GPP_D16, NONE), -+ PAD_CFG_GPO(GPP_D17, 0, DEEP), /* DDI_PRIORITY */ -+ PAD_NC(GPP_D18, NONE), -+ PAD_NC(GPP_D19, NONE), -+ PAD_NC(GPP_D20, NONE), -+ PAD_NC(GPP_D21, NONE), -+ PAD_CFG_GPI_TRIG_OWN(GPP_D22, UP_20K, DEEP, OFF, ACPI), /* -NFC_DTCT */ -+ PAD_NC(GPP_D23, NONE), -+ -+ /* ------- GPIO Group GPP_E ------- */ -+ PAD_CFG_GPO(GPP_E0, 1, DEEP), /* BDC_ON */ -+ PAD_NC(GPP_E1, NONE), -+ PAD_CFG_NF(GPP_E2, NONE, DEEP, NF1), /* -SATA2_DTCT */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_E3, NONE, DEEP, EDGE_SINGLE, ACPI), /* -TBT_PLUG_EVENT */ -+ PAD_CFG_GPO(GPP_E4, 1, DEEP), /* NFC_ON */ -+ PAD_NC(GPP_E5, NONE), -+ PAD_CFG_NF(GPP_E6, NONE, RSMRST, NF1), /* SATA2_DEVSLP */ -+ PAD_NC(GPP_E7, NONE), -+ PAD_NC(GPP_E8, NONE), -+ PAD_CFG_NF(GPP_E9, NONE, DEEP, NF1), /* -USB_PORT0_OC0 */ -+ PAD_CFG_NF(GPP_E10, NONE, DEEP, NF1), /* -USB_PORT1_OC1 */ -+ PAD_NC(GPP_E11, NONE), -+ PAD_CFG_GPI_APIC_HIGH(GPP_E12, NONE, DEEP), /* NFC_INT */ -+ PAD_CFG_NF(GPP_E13, NONE, DEEP, NF1), /* DDIP1_HPD */ -+ PAD_CFG_NF(GPP_E14, NONE, DEEP, NF1), /* DDIP2_HPD */ -+ PAD_NC(GPP_E15, NONE), -+ PAD_NC(GPP_E16, NONE), -+ PAD_CFG_NF(GPP_E17, NONE, DEEP, NF1), /* EDP_HPD */ -+ PAD_NC(GPP_E18, NONE), -+ PAD_CFG_GPO(GPP_E19, 0, DEEP), -+ PAD_CFG_NF(GPP_E20, NONE, DEEP, NF1), /* DDIP2_CTRLCLK */ -+ PAD_CFG_NF(GPP_E21, NONE, DEEP, NF1), /* DDIP2_CTRLDATA */ -+ PAD_CFG_TERM_GPO(GPP_E22, 0, UP_20K, RSMRST), /* -GPU_RST */ -+ PAD_CFG_TERM_GPO(GPP_E23, 0, UP_20K, RSMRST), /* 1R8VIDEO_AON_ON */ -+ -+ /* ------- GPIO Community 2 ------- */ -+ -+ /* -------- GPIO Group GPD -------- */ -+ PAD_CFG_NF(GPD0, NONE, PWROK, NF1), /* -BATLOW */ -+ PAD_CFG_NF(GPD1, NATIVE, PWROK, NF1), /* AC_PRESENT */ -+ PAD_CFG_NF(GPD2, NATIVE, PWROK, NF1), /* -LANWAKE */ -+ PAD_CFG_NF(GPD3, UP_20K, PWROK, NF1), /* -PWRSW_EC */ -+ PAD_CFG_NF(GPD4, NONE, PWROK, NF1), /* -PCH_SLP_S3 */ -+ PAD_CFG_NF(GPD5, NONE, PWROK, NF1), /* -PCH_SLP_S4 */ -+ PAD_CFG_NF(GPD6, NONE, PWROK, NF1), /* -PCH_SLP_M */ -+ PAD_NC(GPD7, NONE), -+ PAD_CFG_NF(GPD8, NONE, PWROK, NF1), /* SUSCLK_32K */ -+ PAD_CFG_NF(GPD9, NONE, PWROK, NF1), /* -PCH_SLP_WLAN */ -+ PAD_CFG_NF(GPD10, NONE, PWROK, NF1), /* -PCH_SLP_S5 */ -+ PAD_CFG_NF(GPD11, NONE, PWROK, NF1), /* LANPHYPC */ -+ -+ /* ------- GPIO Community 3 ------- */ -+ -+ /* ------- GPIO Group GPP_F ------- */ -+ PAD_CFG_GPO(GPP_F0, 0, DEEP), -+ PAD_CFG_GPI_TRIG_OWN(GPP_F1, NONE, DEEP, OFF, ACPI), /* GC6_FB_EN */ -+ PAD_CFG_GPO(GPP_F2, 1, DEEP), /* -GPU_EVENT */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F3, NONE, PLTRST, OFF, ACPI), /* DGFX_PWRGD */ -+ PAD_NC(GPP_F4, NONE), /* -WWAN_RESET */ -+ PAD_NC(GPP_F5, NONE), -+ PAD_CFG_GPI_TRIG_OWN(GPP_F6, UP_20K, DEEP, OFF, ACPI), /* -MIC_HW_EN (R37 to GND) */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F7, UP_20K, DEEP, OFF, ACPI), /* -INT_MIC_DTCT */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F8, UP_20K, DEEP, OFF, ACPI), /* WWAN_CFG0 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F9, UP_20K, DEEP, OFF, ACPI), /* WWAN_CFG1 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F10, UP_20K, DEEP, OFF, ACPI), /* WWAN_CFG2 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F11, UP_20K, DEEP, OFF, ACPI), /* WWAN_CFG3 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F12, UP_20K, DEEP, OFF, ACPI), /* PLANARID0 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F13, UP_20K, DEEP, OFF, ACPI), /* PLANARID1 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F14, UP_20K, DEEP, OFF, ACPI), /* PLANARID2 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F15, UP_20K, DEEP, OFF, ACPI), /* PLANARID3 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F16, UP_20K, DEEP, OFF, ACPI), /* MEMORYID0 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F17, UP_20K, DEEP, OFF, ACPI), /* MEMORYID1 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F18, UP_20K, DEEP, OFF, ACPI), /* MEMORYID2 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F19, UP_20K, DEEP, OFF, ACPI), /* MEMORYID3 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F20, UP_20K, DEEP, OFF, ACPI), /* MEMORYID4 */ -+ PAD_NC(GPP_F21, NONE), -+ PAD_CFG_GPI_TRIG_OWN(GPP_F22, UP_20K, DEEP, OFF, ACPI), /* -TAMPER_SW_DTCT */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F23, UP_20K, DEEP, OFF, ACPI), /* -SC_DTCT */ -+ -+ /* ------- GPIO Group GPP_G ------- */ -+ PAD_NC(GPP_G0, NONE), -+ PAD_NC(GPP_G1, NONE), -+ PAD_NC(GPP_G2, NONE), -+ PAD_NC(GPP_G3, NONE), -+ PAD_CFG_GPO(GPP_G4, 0, DEEP), /* TBT_RTD3_PWR_EN */ -+ PAD_CFG_GPO(GPP_G5, 0, DEEP), /* TBT_FORCE_USB_PWR */ -+ PAD_CFG_GPO(GPP_G6, 0, DEEP), /* -TBT_PERST */ -+ PAD_CFG_GPI_SCI(GPP_G7, NONE, DEEP, LEVEL, INVERT), /* -TBT_PCIE_WAKE */ -+}; -+ -+void variant_config_gpios(void) -+{ -+ gpio_configure_pads(gpio_table, ARRAY_SIZE(gpio_table)); -+} -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/hda_verb.c b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/hda_verb.c -new file mode 100644 -index 0000000000..b1d96c5a76 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/hda_verb.c -@@ -0,0 +1,90 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <device/azalia_device.h> -+ -+const u32 cim_verb_data[] = { -+ 0x10ec0257, // Vendor/Device ID: Realtek ALC257 -+ 0x17aa2258, // Subsystem ID -+ 11, -+ AZALIA_SUBVENDOR(0, 0x17aa2258), -+ -+ AZALIA_PIN_CFG(0, 0x12, AZALIA_PIN_DESC( -+ AZALIA_INTEGRATED, -+ AZALIA_INTERNAL, -+ AZALIA_MIC_IN, -+ AZALIA_OTHER_DIGITAL, -+ AZALIA_COLOR_UNKNOWN, -+ AZALIA_NO_JACK_PRESENCE_DETECT, -+ 2, 0 -+ )), -+ AZALIA_PIN_CFG(0, 0x13, 0x40000000), // does not describe a jack or internal device -+ AZALIA_PIN_CFG(0, 0x14, AZALIA_PIN_DESC( -+ AZALIA_INTEGRATED, -+ AZALIA_INTERNAL, -+ AZALIA_SPEAKER, -+ AZALIA_OTHER_ANALOG, -+ AZALIA_COLOR_UNKNOWN, -+ AZALIA_NO_JACK_PRESENCE_DETECT, -+ 1, 0 -+ )), -+ AZALIA_PIN_CFG(0, 0x18, AZALIA_PIN_CFG_NC(0)), -+ AZALIA_PIN_CFG(0, 0x19, AZALIA_PIN_DESC( -+ AZALIA_JACK, -+ AZALIA_EXTERNAL_PRIMARY_CHASSIS | AZALIA_RIGHT, -+ AZALIA_MIC_IN, -+ AZALIA_STEREO_MONO_1_8, -+ AZALIA_BLACK, -+ AZALIA_JACK_PRESENCE_DETECT, -+ 3, 0 -+ )), -+ AZALIA_PIN_CFG(0, 0x1a, AZALIA_PIN_CFG_NC(0)), -+ AZALIA_PIN_CFG(0, 0x1b, AZALIA_PIN_CFG_NC(0)), -+ AZALIA_PIN_CFG(0, 0x1d, 0x40661b45), // does not describe a jack or internal device -+ AZALIA_PIN_CFG(0, 0x1e, AZALIA_PIN_CFG_NC(0)), -+ AZALIA_PIN_CFG(0, 0x21, AZALIA_PIN_DESC( -+ AZALIA_JACK, -+ AZALIA_EXTERNAL_PRIMARY_CHASSIS | AZALIA_RIGHT, -+ AZALIA_HP_OUT, -+ AZALIA_STEREO_MONO_1_8, -+ AZALIA_BLACK, -+ AZALIA_JACK_PRESENCE_DETECT, -+ 1, 15 -+ )), -+ -+ 0x8086280b, // Vendor/Device ID: Intel Kabylake HDMI -+ 0x80860101, // Subsystem ID -+ 4, -+ AZALIA_SUBVENDOR(2, 0x80860101), -+ -+ AZALIA_PIN_CFG(2, 0x05, AZALIA_PIN_DESC( -+ AZALIA_JACK, -+ AZALIA_DIGITAL_DISPLAY, -+ AZALIA_DIGITAL_OTHER_OUT, -+ AZALIA_OTHER_DIGITAL, -+ AZALIA_COLOR_UNKNOWN, -+ AZALIA_JACK_PRESENCE_DETECT, -+ 1, 0 -+ )), -+ AZALIA_PIN_CFG(2, 0x06, AZALIA_PIN_DESC( -+ AZALIA_JACK, -+ AZALIA_DIGITAL_DISPLAY, -+ AZALIA_DIGITAL_OTHER_OUT, -+ AZALIA_OTHER_DIGITAL, -+ AZALIA_COLOR_UNKNOWN, -+ AZALIA_JACK_PRESENCE_DETECT, -+ 1, 0 -+ )), -+ AZALIA_PIN_CFG(2, 0x07, AZALIA_PIN_DESC( -+ AZALIA_JACK, -+ AZALIA_DIGITAL_DISPLAY, -+ AZALIA_DIGITAL_OTHER_OUT, -+ AZALIA_OTHER_DIGITAL, -+ AZALIA_COLOR_UNKNOWN, -+ AZALIA_JACK_PRESENCE_DETECT, -+ 1, 0 -+ )), -+}; -+ -+const u32 pc_beep_verbs[] = {}; -+ -+AZALIA_ARRAY_SIZES; -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/memory_init_params.c b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/memory_init_params.c -new file mode 100644 -index 0000000000..001e934b3a ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/memory_init_params.c -@@ -0,0 +1,44 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <cbfs.h> -+#include <gpio.h> -+#include <soc/gpio.h> -+#include <soc/romstage.h> -+#include <spd_bin.h> -+#include <stdio.h> -+ -+static const struct pad_config memory_id_gpio_table[] = { -+ PAD_CFG_GPI_TRIG_OWN(GPP_F16, UP_20K, DEEP, OFF, ACPI), /* MEMORYID0 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F17, UP_20K, DEEP, OFF, ACPI), /* MEMORYID1 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F18, UP_20K, DEEP, OFF, ACPI), /* MEMORYID2 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F19, UP_20K, DEEP, OFF, ACPI), /* MEMORYID3 */ -+ PAD_CFG_GPI_TRIG_OWN(GPP_F20, UP_20K, DEEP, OFF, ACPI), /* MEMORYID4 */ -+}; -+ -+void mainboard_memory_init_params(FSPM_UPD *mupd) -+{ -+ int spd_idx; -+ char spd_name[20]; -+ size_t spd_size; -+ -+ FSP_M_CONFIG *mem_cfg = &mupd->FspmConfig; -+ mem_cfg->DqPinsInterleaved = true; /* DDR_DQ in interleave mode */ -+ mem_cfg->CaVrefConfig = 2; /* VREF_CA to CH_A and VREF_DQ_B to CH_B */ -+ mem_cfg->MemorySpdDataLen = CONFIG_DIMM_SPD_SIZE; -+ -+ /* Get SPD for soldered RAM SPD (CH A) */ -+ gpio_configure_pads(memory_id_gpio_table, ARRAY_SIZE(memory_id_gpio_table)); -+ -+ spd_idx = gpio_get(GPP_F16) | gpio_get(GPP_F17) << 1 | gpio_get(GPP_F18) << 2 | -+ gpio_get(GPP_F19) << 3 | gpio_get(GPP_F20) << 4; -+ printk(BIOS_DEBUG, "Detected MEMORY_ID = %d\n", spd_idx); -+ snprintf(spd_name, sizeof(spd_name), "spd_%d.bin", spd_idx); -+ mem_cfg->MemorySpdPtr00 = (uintptr_t)cbfs_map(spd_name, &spd_size); -+ -+ /* Get SPD for memory slot (CH B) */ -+ struct spd_block blk = { .addr_map = { [1] = 0x51, } }; -+ get_spd_smbus(&blk); -+ dump_spd_info(&blk); -+ -+ mem_cfg->MemorySpdPtr10 = (uintptr_t)blk.spd_array[1]; -+} -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/overridetree.cb b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/overridetree.cb -new file mode 100644 -index 0000000000..d4afca20c4 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/overridetree.cb -@@ -0,0 +1,103 @@ -+# SPDX-License-Identifier: GPL-2.0-only -+ -+chip soc/intel/skylake -+ device domain 0 on -+ device ref south_xhci on -+ register "usb2_ports" = "{ -+ [0] = USB2_PORT_MID(OC0), // JUSB1 (USB-A always on) -+ [1] = USB2_PORT_MID(OC1), // JUSB2 (USB-A) -+ [2] = USB2_PORT_MID(OC_SKIP), // JFPR (smartcard slot) -+ [3] = USB2_PORT_MID(OC_SKIP), // JUSBC (USB-C) -+ [4] = USB2_PORT_MID(OC_SKIP), // JCAM (IR camera) -+ [5] = USB2_PORT_MID(OC_SKIP), // JWWAN (M.2 WWAN USB) -+ [6] = USB2_PORT_MID(OC_SKIP), // JWLAN (M.2 WLAN USB) -+ [7] = USB2_PORT_MID(OC_SKIP), // JCAM (webcam) -+ [8] = USB2_PORT_MID(OC_SKIP), // JFPR (fingerprint reader) -+ [9] = USB2_PORT_MID(OC_SKIP), // JLCD (touch panel) -+ }" -+ register "usb3_ports" = "{ -+ [0] = USB3_PORT_DEFAULT(OC0), // JUSB1 (USB-A always on) -+ [1] = USB3_PORT_DEFAULT(OC1), // JUSB2 (USB-A) -+ [2] = USB3_PORT_DEFAULT(OC_SKIP), // JSD (SD card reader) -+ [3] = USB3_PORT_DEFAULT(OC_SKIP), // JUSBC (USB-C) -+ }" -+ end -+ -+ device ref sata on -+ # SATA_2 - Main M.2 SATA SSD -+ register "SataPortsEnable[2]" = "1" -+ register "SataPortsDevSlp[2]" = "1" -+ end -+ -+ # PCIe controller 1 - 1x2+2x1 -+ # PCIE 1-2 - RP1 - dGPU - CLKOUT0 - CLKREQ0 -+ # PCIE 4 - RP4 - WWAN - CLKOUT1 - CLKREQ1 -+ # -+ # PCIe controller 2 - 2x1+1x2 (lane reversal) -+ # PCIE 5 - GBE - GBE - CLKOUT2 - CLKREQ2 (clobbers RP8) -+ # PCIE 6 - RP7 - WLAN - CLKOUT3 - CLKREQ3 -+ # PCIE 7-8 - RP5 - TB3 - CLKOUT4 - CLKREQ4 -+ # -+ # PCIe controller 3 - 1x4 (lane reversal) -+ # PCIE 9-12 - RP9 - SSD - CLKOUT5 - CLKREQ5 -+ -+ # dGPU - x2 -+ device ref pcie_rp1 on -+ register "PcieRpEnable[0]" = "1" -+ register "PcieRpClkReqSupport[0]" = "1" -+ register "PcieRpClkReqNumber[0]" = "0" -+ register "PcieRpClkSrcNumber[0]" = "0" -+ register "PcieRpAdvancedErrorReporting[0]" = "1" -+ register "PcieRpLtrEnable[0]" = "1" -+ end -+ -+ # M.2 WWAN - x1 -+ device ref pcie_rp4 on -+ register "PcieRpEnable[3]" = "1" -+ register "PcieRpClkReqSupport[3]" = "1" -+ register "PcieRpClkReqNumber[3]" = "1" -+ register "PcieRpClkSrcNumber[3]" = "1" -+ register "PcieRpAdvancedErrorReporting[3]" = "1" -+ register "PcieRpLtrEnable[3]" = "1" -+ end -+ -+ # Ethernet (clobbers RP8) -+ device ref gbe on -+ register "LanClkReqSupported" = "1" -+ register "LanClkReqNumber" = "2" -+ register "EnableLanLtr" = "1" -+ register "EnableLanK1Off" = "1" -+ end -+ -+ # M.2 WLAN - x1 -+ device ref pcie_rp7 on -+ register "PcieRpEnable[6]" = "1" -+ register "PcieRpClkReqSupport[6]" = "1" -+ register "PcieRpClkReqNumber[6]" = "3" -+ register "PcieRpClkSrcNumber[6]" = "3" -+ register "PcieRpAdvancedErrorReporting[6]" = "1" -+ register "PcieRpLtrEnable[6]" = "1" -+ end -+ -+ # TB3 (Alpine Ridge LP) - x2 -+ device ref pcie_rp5 on -+ register "PcieRpEnable[4]" = "1" -+ register "PcieRpClkReqSupport[4]" = "1" -+ register "PcieRpClkReqNumber[4]" = "4" -+ register "PcieRpClkSrcNumber[4]" = "4" -+ register "PcieRpAdvancedErrorReporting[4]" = "1" -+ register "PcieRpLtrEnable[4]" = "1" -+ register "PcieRpHotPlug[4]" = "1" -+ end -+ -+ # M.2 2280 SSD - x2 -+ device ref pcie_rp9 on -+ register "PcieRpEnable[8]" = "1" -+ register "PcieRpClkReqSupport[8]" = "1" -+ register "PcieRpClkReqNumber[8]" = "5" -+ register "PcieRpClkSrcNumber[8]" = "5" -+ register "PcieRpAdvancedErrorReporting[8]" = "1" -+ register "PcieRpLtrEnable[8]" = "1" -+ end -+ end -+end -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_0.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_0.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..86f39ddb55ea9fb58d5e5699637636ef597c734e -GIT binary patch -literal 512 -zcmY!u;9+)EWZ+<6U|?oq29gXMJYRrxPEL*>N67~+1r7#Qh7a1t+8`-(puhlu3{YAD -YT>%dM8_BI;nL`dsaHtp+rc($20I8n}l>h($ - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_1.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_1.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..df0f6e58b79286a4aeb690c5027adf7a1f5f668b -GIT binary patch -literal 512 -zcmY!u;9+i6oWQ}rz`)GN3?vyic)kGXoSYm%j*<^t3LFfq3@hZcwLwzoK!E`Q8KATR -Yx&j>hH(SqvWezd%<4`dwOs5b40B_I==>Px# - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_10.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_10.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..24f0d8992bc5244c62488da9633e4885f52f3e22 -GIT binary patch -literal 512 -zcmY!u<Y9JIWZ+;(U|?oqW&i?q-XHu740(BZf(&^dxD+@TSQ$QOn`kgpFo@WI<Pkv3 -zjN25185j^Oge*SRoUI_)=hwI&^9wTJQ%GaE+Z>cy&~OfFg0G3Wp`)phiHWn5fv$6q -PvjPw>z-1}5hGzN!nb#F$ - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_11.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_11.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..59b6b9e78263c42aae367ab7d4a784d888f30efe -GIT binary patch -literal 512 -zcmY!u<Y8`AWZ+;(U|?osW&i?q-XHu740(BZf(&^dxD+@TSQ%DGYiKZ3Fo@WI<Pm^J -zTbD)5RGF87L5G`J#gvCx7a@nAHD@bG{`ob#fBb?9_?6OB_I)U&#y6aUn&4|<Zs=&} -YZDQ=?WT@*L<g5S$3~*UWt)ZEI0F{0fq5uE@ - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_12.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_12.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..93be0ac94fc57222cd29e34eee11042d7842ac25 -GIT binary patch -literal 512 -zcmY!u<Y9JIWZ+;(U|?oqW&i?q-XHu740(BZf(&^dxD+@TSQ$QOn`kgpFo@WI<Pkv3 -zjN25185j^Oge*SRoUI_)=hwI&^9wTJQ%GaE+Z>cy(6E*fVuXjUqlKwqu$iM<keQ!u -VsD}a&Ff^?FkI#a;_$28g2LQ`x7jOUo - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_13.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_13.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..171a272bc734b72395622bf889d24972ef2d14f7 -GIT binary patch -literal 512 -zcmY!u<Y8`AWZ+;(U|?osW&i?q-XHu740(BZf(&^dxD+@TSQ%DGYiKZ3Fo@WI<Pkv3 -zjN25185j^Oge*SRoUI_)=hr%!_!*h-DWtL7fk%{D(6E*fVuXjUqob)|u$iN8keQ!u -VsD}a&Ff^?FkI#a;_$28g2LP>g7pDLK - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_14.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_14.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..a2a64a5e1adada3fc00b2e4edc60c77e610881a9 -GIT binary patch -literal 512 -zcmY!u<Y9JIWZ+;(U|?oqW&i><-XH%N8S?V-1R3%^a4B#wurhqmHql_HU=XnZ$x{Q& -z*$Oh{IYWaWKO+-03?$Qx1CPkm2-nu217(^xhPas;8kw1RMCls2o4FbS#SI&DT;VDQ -GCj$V){1T)9 - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_15.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_15.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..a2a64a5e1adada3fc00b2e4edc60c77e610881a9 -GIT binary patch -literal 512 -zcmY!u<Y9JIWZ+;(U|?oqW&i><-XH%N8S?V-1R3%^a4B#wurhqmHql_HU=XnZ$x{Q& -z*$Oh{IYWaWKO+-03?$Qx1CPkm2-nu217(^xhPas;8kw1RMCls2o4FbS#SI&DT;VDQ -GCj$V){1T)9 - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_16.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_16.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..a64a5a93fb4aef4d5f63d79cb2582731b9ac5063 -GIT binary patch -literal 512 -NcmZQz7zHCa1ONg600961 - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_17.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_17.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..5f23e86606094d3e5d2011db902ebd4a500bbffa -GIT binary patch -literal 512 -zcmY!u<Y9JIWZ+;(U|?oqW&i><-XHc140(BZf(&^dxD+@TSQ$QOn`kgpFo@WI<Pkv3 -zjN25185j^Oge*SRoUI_)=M3$7{ESTa6w+Akz#~d6Xjsb#F~Y;w(ZbX)*v#20$jnbS -V%v%8n7#i08$7jJ^e3JB$0{}ZV7fApB - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_18.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_18.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..05633943eb5af166da66a2e1f4e74948f75782fb -GIT binary patch -literal 512 -zcmY!u<Y9JIoXEkDz`)GN%m4&zyg%$281nM+1R3%^a4B#wurhqmHql_HU=XnZ$s>T6 -z8Mi42GcX`n2w8lrIa@)p&l&!{<7bq|r;x^SwThHl(6E*fVuXjUqobjFu$i-OkeQ!u -Vn70BDFf^?FkI#a;_$28g2LNS*7)Ag9 - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_19.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_19.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..857da9c9828cdac842329f6cef4539283777268b -GIT binary patch -literal 512 -zcmY!u<Y9JIWZ+;(U|?oqW&i?K-XH(98S?V-1R3%^a4B#wurhqmHql_HU=XnZ$x{Q& -z*$Oh{Il~1>enuv07)YiW2Og2B5w5L42g)>Y3~@6xG%_>sh|)E7H}WzBiW@fQc)?W; -GP6hy+m=i1j - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_2.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_2.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..b5b14cf2dfa06ae183b0379da4dc825129e1589f -GIT binary patch -literal 512 -zcmY!u;9+)EWZ+<6U|?oq29gXMJU@VRUS6IcN7)B11r7#Qh7a1tdLSuupuhlu3{YAD -XT>%b$v*cE=%%S%6I8=-Z(<uZ1pPdSg - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_20.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_20.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..a64a5a93fb4aef4d5f63d79cb2582731b9ac5063 -GIT binary patch -literal 512 -NcmZQz7zHCa1ONg600961 - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_3.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_3.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..d73736008af1eb67456b2fd66f7dec3b6669a442 -GIT binary patch -literal 512 -zcmY!u;9+i&oWQ}rz`)GN3?vyic)kGXoSYm%juHh92G#;*h81$!dLSuupuhlu3{YAD -YT>%b$+tzbnnL|62aHtp+rc($20QGqazW@LL - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_4.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_4.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..829f149547bc24859646c33d5926938d7a1b90cb -GIT binary patch -literal 512 -zcmY!u;9+)EWZ+<6U|?oq29gXMJYRrxPEL*>N67~+1r7#Qh7a1tdLSuupuhlu3{YAD -XT>%b$o8(ro%%OI594bbI=@bG0z{d&v - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_5.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_5.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..a64a5a93fb4aef4d5f63d79cb2582731b9ac5063 -GIT binary patch -literal 512 -NcmZQz7zHCa1ONg600961 - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_6.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_6.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..a64a5a93fb4aef4d5f63d79cb2582731b9ac5063 -GIT binary patch -literal 512 -NcmZQz7zHCa1ONg600961 - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_7.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_7.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..940f1e3cd8e5bd9ea32a82a14edcdcbc8132d8c7 -GIT binary patch -literal 512 -zcmY!u<Y8`AWZ+;(U|?osW&i><-XH%N8S?V-1R3%^a4B#wurjQW(9mG0U=XnZ$x{Q& -z0UPq1A)%L_QJxwGl4(Y*BAFWD+8T7AOcTeDU_*B^6OSleBX=`bLy)jxgN`d)<=|uh -E020*^DF6Tf - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_8.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_8.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..30c84410d417ef7afa8705c93cdb64a9f4e915a0 -GIT binary patch -literal 512 -zcmY!u<Y9JIWZ+;(U|?oqW&i?q-XHZ040(BZf(&^dxD+@TSQ$QOn`kgpFo@WI<f#GX -zYz3L}{MzzRenxp}7)YiWinU~FgllWifig`TL)=Uajm%6uqI8Yijh&1X6cmgabe!NS -H2PXpn6CD!Q - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_9.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_9.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..7facef55b93fe1f67411c00bab84862769461f63 -GIT binary patch -literal 512 -zcmY!u<Y8`AWZ+;(U|?osW&i?q-XHZ040(BZf(&^dxD+@TSQ%DGYiKZ3Fo@WI<f#GX -zYz3L}{F>W!enxp}7)YiWinU~FgllWifig`TLxK(6%}hL^bdB7N9Ss$Lz^FmT39fQ* -FG5`?&65ap+ - -literal 0 -HcmV?d00001 - --- -2.39.5 - diff --git a/config/coreboot/default/patches/0031-dell-3050micro-disable-nvme-hotplug.patch b/config/coreboot/default/patches/0029-dell-3050micro-disable-nvme-hotplug.patch index c154a9a1..4b036e02 100644 --- a/config/coreboot/default/patches/0031-dell-3050micro-disable-nvme-hotplug.patch +++ b/config/coreboot/default/patches/0029-dell-3050micro-disable-nvme-hotplug.patch @@ -1,7 +1,7 @@ -From 4ffaddc37d30d39f25faeaef73046a6e2ce525e8 Mon Sep 17 00:00:00 2001 +From 17c67799604e0e29192415e97293d71deb457cb2 Mon Sep 17 00:00:00 2001 From: Leah Rowe <info@minifree.org> Date: Wed, 11 Dec 2024 01:06:01 +0000 -Subject: [PATCH 31/37] dell/3050micro: disable nvme hotplug +Subject: [PATCH 29/40] dell/3050micro: disable nvme hotplug in my testing, when running my 3050micro for a few days, the nvme would sometimes randomly rename. @@ -30,10 +30,10 @@ Signed-off-by: Leah Rowe <leah@libreboot.org> 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mainboard/dell/optiplex_3050/devicetree.cb b/src/mainboard/dell/optiplex_3050/devicetree.cb -index da11085ab6..2a97306c5d 100644 +index 0d2adff74a..829acacab3 100644 --- a/src/mainboard/dell/optiplex_3050/devicetree.cb +++ b/src/mainboard/dell/optiplex_3050/devicetree.cb -@@ -45,7 +45,9 @@ chip soc/intel/skylake +@@ -44,7 +44,9 @@ chip soc/intel/skylake register "PcieRpAdvancedErrorReporting[20]" = "1" register "PcieRpLtrEnable[20]" = "true" register "PcieRpClkSrcNumber[20]" = "3" @@ -45,5 +45,5 @@ index da11085ab6..2a97306c5d 100644 # Realtek LAN -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0026-soc-intel-skylake-configure-usb-acpi.patch b/config/coreboot/default/patches/0030-soc-intel-skylake-configure-usb-acpi.patch index c411c18b..8a328251 100644 --- a/config/coreboot/default/patches/0026-soc-intel-skylake-configure-usb-acpi.patch +++ b/config/coreboot/default/patches/0030-soc-intel-skylake-configure-usb-acpi.patch @@ -1,7 +1,7 @@ -From 14002b2575d73d3edbc72584502a463e6802cba6 Mon Sep 17 00:00:00 2001 +From 819fe0e89e426d3d875cf8ab4d2de439ba716848 Mon Sep 17 00:00:00 2001 From: Felix Singer <felixsinger@posteo.net> Date: Wed, 26 Jun 2024 04:24:31 +0200 -Subject: [PATCH 26/37] soc/intel/skylake: configure usb acpi +Subject: [PATCH 30/40] soc/intel/skylake: configure usb acpi Change-Id: I53fc73046e4b107064fa8c3c617ba6d9b807b71d Signed-off-by: Felix Singer <felixsinger@posteo.net> @@ -90,5 +90,5 @@ index 6538a1475b..dfb81d496e 100644 device pci 14.2 alias thermal off end device pci 14.3 alias cio off end -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0035-src-intel-skylake-Disable-stack-overflow-debug-optio.patch b/config/coreboot/default/patches/0031-src-intel-skylake-Disable-stack-overflow-debug-optio.patch index eb5f0028..916e54dc 100644 --- a/config/coreboot/default/patches/0035-src-intel-skylake-Disable-stack-overflow-debug-optio.patch +++ b/config/coreboot/default/patches/0031-src-intel-skylake-Disable-stack-overflow-debug-optio.patch @@ -1,7 +1,7 @@ -From 18f4e970ebda43dd538f74398aea463a67040dd3 Mon Sep 17 00:00:00 2001 +From 7194444fbddcf6567d0c82f0986e5deeacaea680 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Mon, 6 Jan 2025 01:36:23 +0000 -Subject: [PATCH 35/37] src/intel/skylake: Disable stack overflow debug options +Subject: [PATCH 31/40] src/intel/skylake: Disable stack overflow debug options The option was appearing in T480/3050micro configs of lbmk, after updating on the coreboot/next uprev for 20241206 rev8: @@ -37,7 +37,7 @@ Signed-off-by: Leah Rowe <leah@libreboot.org> 1 file changed, 9 insertions(+) diff --git a/src/soc/intel/skylake/Kconfig b/src/soc/intel/skylake/Kconfig -index d51ffaef7b..42af82a5d8 100644 +index 9191ed0ff8..493a2d835a 100644 --- a/src/soc/intel/skylake/Kconfig +++ b/src/soc/intel/skylake/Kconfig @@ -129,6 +129,15 @@ config DCACHE_RAM_SIZE @@ -57,5 +57,5 @@ index d51ffaef7b..42af82a5d8 100644 hex default 0x20400 if FSP_USES_CB_STACK -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0033-soc-intel-skylake-Don-t-compress-FSP-S.patch b/config/coreboot/default/patches/0032-soc-intel-skylake-Don-t-compress-FSP-S.patch index a7ab5a96..cd1ed452 100644 --- a/config/coreboot/default/patches/0033-soc-intel-skylake-Don-t-compress-FSP-S.patch +++ b/config/coreboot/default/patches/0032-soc-intel-skylake-Don-t-compress-FSP-S.patch @@ -1,7 +1,7 @@ -From 49cee334bc7fe9a78b9355b5256a37984bac385a Mon Sep 17 00:00:00 2001 +From 81360b8c28293856e964934d1f356b1312b39ff2 Mon Sep 17 00:00:00 2001 From: Leah Rowe <info@minifree.org> Date: Thu, 26 Dec 2024 19:45:20 +0000 -Subject: [PATCH 33/37] soc/intel/skylake: Don't compress FSP-S +Subject: [PATCH 32/40] soc/intel/skylake: Don't compress FSP-S Build systems like lbmk need to reproducibly insert certain vendor files on release images. @@ -19,7 +19,7 @@ Signed-off-by: Leah Rowe <info@minifree.org> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/soc/intel/skylake/Kconfig b/src/soc/intel/skylake/Kconfig -index 9191ed0ff8..d51ffaef7b 100644 +index 493a2d835a..42af82a5d8 100644 --- a/src/soc/intel/skylake/Kconfig +++ b/src/soc/intel/skylake/Kconfig @@ -12,7 +12,7 @@ config SOC_INTEL_COMMON_SKYLAKE_BASE @@ -32,5 +32,5 @@ index 9191ed0ff8..d51ffaef7b 100644 select GENERIC_GPIO_LIB select HAVE_FSP_GOP -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0032-lenovo-Add-Kconfig-option-CONFIG_LENOVO_TBFW_BIN.patch b/config/coreboot/default/patches/0033-lenovo-Add-Kconfig-option-CONFIG_LENOVO_TBFW_BIN.patch index e60c102f..487b32a2 100644 --- a/config/coreboot/default/patches/0032-lenovo-Add-Kconfig-option-CONFIG_LENOVO_TBFW_BIN.patch +++ b/config/coreboot/default/patches/0033-lenovo-Add-Kconfig-option-CONFIG_LENOVO_TBFW_BIN.patch @@ -1,7 +1,7 @@ -From 5d8930edfa1d9537ba80e24c0cf8f0c9e4e9ec72 Mon Sep 17 00:00:00 2001 +From 25ff99ff021312387734a10836232a5f3a2d2a12 Mon Sep 17 00:00:00 2001 From: Leah Rowe <info@minifree.org> Date: Wed, 18 Dec 2024 02:06:18 +0000 -Subject: [PATCH 32/37] lenovo: Add Kconfig option CONFIG_LENOVO_TBFW_BIN +Subject: [PATCH 33/40] lenovo: Add Kconfig option CONFIG_LENOVO_TBFW_BIN This is used by lbmk to know where a tb.bin file goes, when extracting and padding TBT.bin from Lenovo ThunderBolt @@ -74,5 +74,5 @@ index 2ffbaab85f..512b326381 100644 + endif # VENDOR_LENOVO -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0037-Conditional-TBFW-setting-for-T480-T480S.patch b/config/coreboot/default/patches/0034-Conditional-TBFW-setting-for-T480-T480S.patch index 7bca06a7..1aeae433 100644 --- a/config/coreboot/default/patches/0037-Conditional-TBFW-setting-for-T480-T480S.patch +++ b/config/coreboot/default/patches/0034-Conditional-TBFW-setting-for-T480-T480S.patch @@ -1,7 +1,7 @@ -From 9b547c2029611793f895117a807fa2d2c22a5332 Mon Sep 17 00:00:00 2001 +From 57630265c7ba2429a8215757330348733c087db3 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Mon, 21 Apr 2025 05:14:45 +0100 -Subject: [PATCH 37/37] Conditional TBFW setting for T480/T480S +Subject: [PATCH 34/40] Conditional TBFW setting for T480/T480S Otherwise, other boards will define it, which might trigger the vendor download script, and @@ -33,5 +33,5 @@ index 512b326381..3d3490b35d 100644 + endif # VENDOR_LENOVO -- -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0034-soc-intel-pmc-Hardcoded-poweroff-after-power-fail.patch b/config/coreboot/default/patches/0034-soc-intel-pmc-Hardcoded-poweroff-after-power-fail.patch deleted file mode 100644 index ceee75c4..00000000 --- a/config/coreboot/default/patches/0034-soc-intel-pmc-Hardcoded-poweroff-after-power-fail.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 09740dc9d43a8dc24b7416b70476796515af6581 Mon Sep 17 00:00:00 2001 -From: Leah Rowe <info@minifree.org> -Date: Tue, 31 Dec 2024 01:40:42 +0000 -Subject: [PATCH 34/37] soc/intel/pmc: Hardcoded poweroff after power fail - -Coreboot can set the power state for power on after previous -power failure, based on the option table. On the ThinkPad T480, -we have no nvram and, due to coreboot's design, we therefore -have no option table, so the default setting is enabled. - -In my testing, this seems to be that the system will turn on -after a power failure. If your ThinkPad was previously in a state -where it wouldn't turn on when plugging in the power, it'd be fine. - -If your battery ran out later on, this would be triggered and -your ThinkPad would permanently turn on, when plugging in a charger, -and there is currently no way to configure this behaviour. - -We currently only use the common SoC PMC code on the ThinkPad -T480, T480s and the Dell OptiPlex 3050 Micro, at the time of -this patch, and it is desirable that the system be set to power -off after power fail anyway. - -In some cases, you might want the opposite, for example if you're -running a server. This will be documented on the website, for that -reason. - -Signed-off-by: Leah Rowe <info@minifree.org> ---- - src/soc/intel/common/block/pmc/pmclib.c | 36 +++---------------------- - 1 file changed, 4 insertions(+), 32 deletions(-) - -diff --git a/src/soc/intel/common/block/pmc/pmclib.c b/src/soc/intel/common/block/pmc/pmclib.c -index 64b9bb997c..7823775bcb 100644 ---- a/src/soc/intel/common/block/pmc/pmclib.c -+++ b/src/soc/intel/common/block/pmc/pmclib.c -@@ -776,38 +776,10 @@ void pmc_clear_pmcon_sts(void) - - void pmc_set_power_failure_state(const bool target_on) - { -- const unsigned int state = get_uint_option("power_on_after_fail", -- CONFIG_MAINBOARD_POWER_FAILURE_STATE); -- -- /* -- * On the shutdown path (target_on == false), we only need to -- * update the register for MAINBOARD_POWER_STATE_PREVIOUS. For -- * all other cases, we don't write the register to avoid clob- -- * bering the value set on the boot path. This is necessary, -- * for instance, when we can't access the option backend in SMM. -- */ -- -- switch (state) { -- case MAINBOARD_POWER_STATE_OFF: -- if (!target_on) -- break; -- printk(BIOS_INFO, "Set power off after power failure.\n"); -- pmc_soc_set_afterg3_en(false); -- break; -- case MAINBOARD_POWER_STATE_ON: -- if (!target_on) -- break; -- printk(BIOS_INFO, "Set power on after power failure.\n"); -- pmc_soc_set_afterg3_en(true); -- break; -- case MAINBOARD_POWER_STATE_PREVIOUS: -- printk(BIOS_INFO, "Keep power state after power failure.\n"); -- pmc_soc_set_afterg3_en(target_on); -- break; -- default: -- printk(BIOS_WARNING, "Unknown power-failure state: %d\n", state); -- break; -- } -+ if (!target_on) -+ return; -+ printk(BIOS_INFO, "Set power off after power failure.\n"); -+ pmc_soc_set_afterg3_en(false); - } - - /* This function returns the highest assertion duration of the SLP_Sx assertion widths */ --- -2.39.5 - diff --git a/config/coreboot/default/patches/0035-mb-topton-adl-Add-TWL-variant-X2E_N150.patch b/config/coreboot/default/patches/0035-mb-topton-adl-Add-TWL-variant-X2E_N150.patch new file mode 100644 index 00000000..1edd0d27 --- /dev/null +++ b/config/coreboot/default/patches/0035-mb-topton-adl-Add-TWL-variant-X2E_N150.patch @@ -0,0 +1,106 @@ +From 0a98ff0cbd20484ced53b15f16f8b77d881ffb9e Mon Sep 17 00:00:00 2001 +From: Riku Viitanen <riku.viitanen@protonmail.com> +Date: Thu, 25 Sep 2025 22:45:37 +0300 +Subject: [PATCH 35/40] mb/topton/adl: Add TWL variant (X2E_N150) + +Seems to be the same board but with a Twin Lake processor. +VBT extracted from vendor firmware. This makes HDMI and +DisplayPort work. + +Change-Id: I1018042802cbb8010888847226a2117fd9dfaeb0 +Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com> +--- + src/mainboard/topton/adl/Kconfig | 12 +++++++++--- + src/mainboard/topton/adl/Kconfig.name | 3 +++ + src/mainboard/topton/adl/data_twl.vbt | Bin 0 -> 9216 bytes + 3 files changed, 12 insertions(+), 3 deletions(-) + create mode 100644 src/mainboard/topton/adl/data_twl.vbt + +diff --git a/src/mainboard/topton/adl/Kconfig b/src/mainboard/topton/adl/Kconfig +index ffdfae1eee..331e1d624d 100644 +--- a/src/mainboard/topton/adl/Kconfig ++++ b/src/mainboard/topton/adl/Kconfig +@@ -1,6 +1,6 @@ + ## SPDX-License-Identifier: GPL-2.0-or-later + +-if BOARD_TOPTON_X2F_N100 ++if BOARD_TOPTON_X2F_N100 || BOARD_TOPTON_X2E_N150 + + config BOARD_SPECIFIC_OPTIONS + def_bool y +@@ -12,6 +12,7 @@ config BOARD_SPECIFIC_OPTIONS + select SUPERIO_ITE_IT8625E + select DRIVERS_UART_8250IO + select SOC_INTEL_ALDERLAKE_PCH_N ++ select SOC_INTEL_TWINLAKE if BOARD_TOPTON_X2E_N150 + select INTEL_GMA_HAVE_VBT + select SOC_INTEL_COMMON_BLOCK_HDA_VERB + select HAVE_INTEL_PTT +@@ -20,7 +21,12 @@ config BOARD_SPECIFIC_OPTIONS + config MAINBOARD_DIR + default "topton/adl" + ++config INTEL_GMA_VBT_FILE ++ default "src/mainboard/\$(MAINBOARDDIR)/data.vbt" if BOARD_TOPTON_X2F_N100 ++ default "src/mainboard/\$(MAINBOARDDIR)/data_twl.vbt" if BOARD_TOPTON_X2E_N150 ++ + config MAINBOARD_PART_NUMBER +- default "X2F_N100" ++ default "X2F_N100" if BOARD_TOPTON_X2F_N100 ++ default "X2E_N150" if BOARD_TOPTON_X2E_N150 + +-endif # BOARD_TOPTON_X2F_N100 ++endif # BOARD_TOPTON_X2F_N100 || BOARD_TOPTON_X2E_N150 +diff --git a/src/mainboard/topton/adl/Kconfig.name b/src/mainboard/topton/adl/Kconfig.name +index 5b8b5ff602..db0eef29be 100644 +--- a/src/mainboard/topton/adl/Kconfig.name ++++ b/src/mainboard/topton/adl/Kconfig.name +@@ -2,3 +2,6 @@ + + config BOARD_TOPTON_X2F_N100 + bool "X2F_N100" ++ ++config BOARD_TOPTON_X2E_N150 ++ bool "X2E_N150" +diff --git a/src/mainboard/topton/adl/data_twl.vbt b/src/mainboard/topton/adl/data_twl.vbt +new file mode 100644 +index 0000000000000000000000000000000000000000..05fbd5807365b3343e55ecedbd12fabb8a3199e9 +GIT binary patch +literal 9216 +zcmeHML2MgE6#cVnZ(QS$EeWj~+AvA0;DjbwJ8eiKOI^oKsN1BmoiuVKP~6mpM!1bh +zQ<Ng4E+U6qkoHnYD<ljO5(<}a;EYcw2q9TTAPykqMyWV})EjNgpV_rtrwuVJg{InX +z{oV2WH*f#{GdnZ8yKlUIj0T261F@mNv4M^VMM;7J%`Is>-Yxy%k<p1zU@S1vKQt0N +zMuF^r-<#KN03-?7<?<?uH+*h3mG;Ei=<xL9R65laN}Ydgb~-~N!7vS+KAlRZW=_qf +zl5}+Z#Q<e|wa)$vQ|Tl<e&Ot7YNn4OiGpbAJ<!>GfKuNJT}pSCPw^f^OP{x=@8F?Y +zXJ{ZeG8_pH1;)Z7$LUCnhQgzP(b0k7{-KjJ5*s-Z?hlU*gle4?Aq1y07iXqkJu^!^ +z!8Yo{>vV8l?lKKd&ty7jAf2W$hB;4Tsq?9sH&V&YS|=mQfx|`sh!g5^fCVPE`#}a9 +zsHlL)`xD_Z5wN|-v938@Q^cwq64R22!kSk4V-#wPQx09BB@^Ooa4i9{41s33Sk2r< +zK0;0ZS^b&{U!7sNmrWe<2^=R^;wVES?xKmSE&7)*aR%uczZ&8$o4D-&c5Imgt&)#j +zgz<fD;_3k;j?*h~oECB4nmE=BB?lQ3$FhWR@J>P8uj_HJ4#(k}A8x&g7&B1>2or#( +ziF#Md@5Pn7>QZ(mOru^zeFybj)b~+8Lj4T&3)C-BzefEI^=H&yQ2#*v6Lnh>DFxmU +z59?S!aef1(d!$e(MzK{(u6j6%x1#9q&+q23oB$|%*suhW@fW~f4DlZ4N5b|@r<kvC +zLcZoES*U+BOZQ0K236&8v;n}XwleU58Su1#Aa+-fESXZSY#+C4!Ya|WKgriD$BYZ_ +zu(;sj=bJ>vv%T&)C=`C!rs;HbkL*aa7_FOnF5%qI$}TF#h0PhVbrihu-PEHslo*T| +z99(Q}+MFS|3)BF#D(;0IgTdW%N#t7rWUzycG5B%K+c*lP9TuaYs7eOcR3;b&He@B& +zoV~FshB+E-lvVi-2BNcNyjq4&yXID-jjd{YvFroU*#ZwPRa&mXha-noWpdf4s<|?Q +z1bnyS8n;)I$yb`km!i<54C-cIuuSTFpM|belZUrD^=zWCNmZ!X7nn(#zKutr)l?IO +z$FF5G%X^WbowYLhLg$OFD{G&xVmw@J%jTo=ElT9d&Ju$NPp~p(vKj`ZU0q4cClz;; +zj{)w3h=YkS+~=6YJcxihK*nIFRYY;45wa1wQ*kLl*2?ff$NLc(w3=Q%9@rq?cvK60 +zn)~(M4mI9U?h6s>I0HC9+Wfv~Qz4;2eL|LTPs)TxA+wTeXfQGnIdv|TK7Q(K>M{7k +zf_m6eC_L{a($N)=;!6+j$o8psiXaG2p_YVgTOUN(ob({-SSOoheg7o<Hi)1wZoN-H +z1d_0yya(4sTz(9}aJcMPC#-%m@}j*{A+S)Atx+_5FNXM^pS$_AZa8tE2d5$(X9hk= +z7L#h83x&hHC)jk%yv&<V;B0cOyY%eg2JBeY!5fL+4-Vf{>tGLoy;J9W`0zO4@q-WH +z{1Fq+)|Jb-v$Fl~kFcA>_$}1`^HRBIDoYZV-fPCLpwhO*{~d}sCBEO<;&E8+TN$u2 +zU}eC{fRzC&16BsC4E&E7==)gM4KGasXo8NfuM)6I_LyJ%*vCx(^#cGZ0`Y(bal{hi +z4KBA`zl{K!O5Cu3Z?s$S#hJuI(eSwX3BIqkFA@bZh*7W|KFgxyP?>GcPKk`RMw?t= +z(|=;NRT76qw6#{)@^b>Hk|L<cvTXBJ*lrCI7`HExLD12cCbSuE88y7#k9h*Rlm!JS +zayFIx%%M#`DS%dE*p_X3F?QoqB(vGF1hV!#iNF<@7h90ic*bTn7K19SfE%J{OENU7 +z5#L66$)SB;Ez3(5AL-E>aVNGa=cOUUd~sv!9nfp*sPOaZ+xVs0fuGXx2U0!y!oLUb +SeEwbkJq|WZn<bBL2L1wR4t_2G + +literal 0 +HcmV?d00001 + +-- +2.47.3 + diff --git a/config/coreboot/default/patches/0036-soc-intel-alderlake-Disable-MRC_CACHE_USING_MRC_VERS.patch b/config/coreboot/default/patches/0036-soc-intel-alderlake-Disable-MRC_CACHE_USING_MRC_VERS.patch new file mode 100644 index 00000000..565be85a --- /dev/null +++ b/config/coreboot/default/patches/0036-soc-intel-alderlake-Disable-MRC_CACHE_USING_MRC_VERS.patch @@ -0,0 +1,30 @@ +From 8e191c71f11de4cb3d08fe585537f15043cacb1b Mon Sep 17 00:00:00 2001 +From: Riku Viitanen <riku.viitanen@protonmail.com> +Date: Sat, 27 Sep 2025 23:30:46 +0300 +Subject: [PATCH 36/40] soc/intel/alderlake: Disable + MRC_CACHE_USING_MRC_VERSION + +There's some issue with building against the FSP headers in src/vendorcode. +Headers in 3rdparty/fsp work, but since FspProducerDataHeaer.h is missing +from there, we need to disable MRC_CACHE_USING_MRC_VERSION by force. + +Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com> +--- + src/soc/intel/alderlake/Kconfig | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/soc/intel/alderlake/Kconfig b/src/soc/intel/alderlake/Kconfig +index 51bdf98b9d..739faa3808 100644 +--- a/src/soc/intel/alderlake/Kconfig ++++ b/src/soc/intel/alderlake/Kconfig +@@ -34,7 +34,6 @@ config SOC_INTEL_ALDERLAKE + select INTEL_GMA_VERSION_2 + select INTEL_TXT_LIB + select MP_SERVICES_PPI_V2 +- select MRC_CACHE_USING_MRC_VERSION if (SOC_INTEL_ALDERLAKE_PCH_N || SOC_INTEL_RAPTORLAKE) && !FSP_USE_REPO + select MRC_SETTINGS_PROTECT + select PARALLEL_MP_AP_WORK + select PLATFORM_USES_FSP2_2 +-- +2.47.3 + diff --git a/config/coreboot/default/patches/0037-Subject-PATCH-1-1-Add-a-p-option-skip-FPTR-checks.patch b/config/coreboot/default/patches/0037-Subject-PATCH-1-1-Add-a-p-option-skip-FPTR-checks.patch new file mode 100644 index 00000000..8cff0c56 --- /dev/null +++ b/config/coreboot/default/patches/0037-Subject-PATCH-1-1-Add-a-p-option-skip-FPTR-checks.patch @@ -0,0 +1,76 @@ +From 8ab86ffd25fc013790c260e564c8b770c13a5342 Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Sun, 28 Sep 2025 03:17:50 +0100 +Subject: [PATCH 37/40] Subject: [PATCH 1/1] Add a -p option (skip FPTR checks) + +if you pass -k (keep fptr modules), don't use -r, don't +use -t, you can essentially just use me_cleaner to +extract a ME image without changing it. this is useful +when for example, you just want to set the HAP bit. + +however, me_cleaner still performs a FPTR check. + +on some newer ME versions, it's always invalid according +to me_cleaner, because for example it doesn't handle +ME16 very well yet. + +this patch adds an option to override the FPTR check + +either pass -p or --pass-fptr + +NOTE: we probably won't use this on coreboot's me_cleaner, +which is the corna version. we only need it on the newer +me_cleaner versions for e.g. ME16, on certain setups. +still, it's best to have the patch here too, just in case. + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + util/me_cleaner/me_cleaner.py | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/util/me_cleaner/me_cleaner.py b/util/me_cleaner/me_cleaner.py +index fae5e56732..228bac899f 100755 +--- a/util/me_cleaner/me_cleaner.py ++++ b/util/me_cleaner/me_cleaner.py +@@ -246,8 +246,10 @@ def check_partition_signature(f, offset): + return "{:#x}".format(decrypted_sig).endswith(sha256.hexdigest()) # FIXME + + +-def print_check_partition_signature(f, offset): +- if check_partition_signature(f, offset): ++def print_check_partition_signature(f, offset, pass_fptr): ++ if pass_fptr: ++ print("Skipping FPTR checks because the user told us to") ++ elif check_partition_signature(f, offset): + print("VALID") + else: + print("INVALID!!") +@@ -486,6 +488,8 @@ if __name__ == "__main__": + "--extract-me)", action="store_true") + parser.add_argument("-k", "--keep-modules", help="don't remove the FTPR " + "modules, even when possible", action="store_true") ++ parser.add_argument("-p", "--pass-fptr", help="skip FTPR signature checks" ++ "regardless of other operations", action="store_true") + bw_list.add_argument("-w", "--whitelist", metavar="whitelist", + help="Comma separated list of additional partitions " + "to keep in the final image. This can be used to " +@@ -871,12 +875,14 @@ if __name__ == "__main__": + print("Checking the FTPR RSA signature of the extracted ME " + "image... ", end="") + print_check_partition_signature(mef_copy, +- ftpr_offset + ftpr_mn2_offset) ++ ftpr_offset + ftpr_mn2_offset, ++ args.pass_fptr) + mef_copy.close() + + if not me6_ignition: + print("Checking the FTPR RSA signature... ", end="") +- print_check_partition_signature(mef, ftpr_offset + ftpr_mn2_offset) ++ print_check_partition_signature(mef, ftpr_offset + ftpr_mn2_offset, ++ args.pass_fptr) + + f.close() + +-- +2.47.3 + diff --git a/config/coreboot/default/patches/0038-do-not-break-building-other-thinkpads-with-the-hacks.patch b/config/coreboot/default/patches/0038-do-not-break-building-other-thinkpads-with-the-hacks.patch deleted file mode 100644 index 87cde056..00000000 --- a/config/coreboot/default/patches/0038-do-not-break-building-other-thinkpads-with-the-hacks.patch +++ /dev/null @@ -1,153 +0,0 @@ -From 49204919e885dca2be45ffbaf2f5af62109ec3a7 Mon Sep 17 00:00:00 2001 -From: gaspar-ilom <gasparilom@riseup.net> -Date: Thu, 6 Mar 2025 23:00:00 +0000 -Subject: [PATCH 1/1] do not break building other thinkpads with the hacks for - the t480/s made Mate Kukri - -still not fixing things properly but at least it should now be possible to build older thinkpads without regressions. -prior, some code was just commented or unreachable. now we make this explicit with preprocessor directives. -heads should build all boards on this coreboot version from the same coreboot tree. - -Signed-off-by: gaspar-ilom <gasparilom@riseup.net> ---- - src/device/pci_rom.c | 9 ++++++--- - src/ec/lenovo/h8/acpi/ec.asl | 4 +++- - src/ec/lenovo/h8/bluetooth.c | 14 ++++++++++---- - src/ec/lenovo/h8/wwan.c | 14 ++++++++++---- - 4 files changed, 29 insertions(+), 12 deletions(-) - -diff --git a/src/device/pci_rom.c b/src/device/pci_rom.c -index bba98d9dea..db3dbbe2ce 100644 ---- a/src/device/pci_rom.c -+++ b/src/device/pci_rom.c -@@ -396,16 +396,19 @@ void pci_rom_ssdt(const struct device *device) - rom = cbrom; - } - --#if 0 -+ -+ #if CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON) -+ const char *scope = "\\_SB.PCI0.RP01.PEGP"; -+ #else - const char *scope = acpi_device_path(device); -+ #endif - if (!scope) { - printk(BIOS_ERR, "%s: Missing ACPI scope\n", dev_path(device)); - return; - } --#endif - - /* write _ROM method */ -- acpigen_write_scope("\\_SB.PCI0.RP01.PEGP"); -+ acpigen_write_scope(scope); - acpigen_write_rom((void *)rom, rom->size * 512); - acpigen_pop_len(); /* pop scope */ - } -diff --git a/src/ec/lenovo/h8/acpi/ec.asl b/src/ec/lenovo/h8/acpi/ec.asl -index 8f4a8e1986..f80c15106c 100644 ---- a/src/ec/lenovo/h8/acpi/ec.asl -+++ b/src/ec/lenovo/h8/acpi/ec.asl -@@ -331,7 +331,9 @@ Device(EC) - #include "sleepbutton.asl" - #include "lid.asl" - #include "beep.asl" --//#include "thermal.asl" -+#if !CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON) -+#include "thermal.asl" -+#endif - #include "systemstatus.asl" - #include "thinkpad.asl" - } -diff --git a/src/ec/lenovo/h8/bluetooth.c b/src/ec/lenovo/h8/bluetooth.c -index be71a24ced..e60b6c088c 100644 ---- a/src/ec/lenovo/h8/bluetooth.c -+++ b/src/ec/lenovo/h8/bluetooth.c -@@ -1,6 +1,8 @@ - /* SPDX-License-Identifier: GPL-2.0-only */ - --// #include <southbridge/intel/common/gpio.h> -+#if !CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON) -+#include <southbridge/intel/common/gpio.h> -+#endif - #include <console/console.h> - #include <device/device.h> - #include <ec/acpi/ec.h> -@@ -26,23 +28,27 @@ void h8_bluetooth_enable(int on) - */ - bool h8_has_bdc(const struct device *dev) - { -+ #if CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON) -+ printk(BIOS_INFO, "H8: BDC detection not implemented. " -+ "Assuming BDC installed\n"); -+ return true; -+ #else - struct ec_lenovo_h8_config *conf = dev->chip_info; - -- if (1 || !conf->has_bdc_detection) { -+ if (!conf->has_bdc_detection) { - printk(BIOS_INFO, "H8: BDC detection not implemented. " - "Assuming BDC installed\n"); - return true; - } - --#if 0 - if (get_gpio(conf->bdc_gpio_num) == conf->bdc_gpio_lvl) { - printk(BIOS_INFO, "H8: BDC installed\n"); - return true; - } --#endif - - printk(BIOS_INFO, "H8: BDC not installed\n"); - return false; -+ #endif - } - - /* -diff --git a/src/ec/lenovo/h8/wwan.c b/src/ec/lenovo/h8/wwan.c -index 5cdcf77406..b4f5787e01 100644 ---- a/src/ec/lenovo/h8/wwan.c -+++ b/src/ec/lenovo/h8/wwan.c -@@ -1,6 +1,8 @@ - /* SPDX-License-Identifier: GPL-2.0-only */ - --// #include <southbridge/intel/common/gpio.h> -+#if !CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON) -+#include <southbridge/intel/common/gpio.h> -+#endif - #include <console/console.h> - #include <device/device.h> - #include <ec/acpi/ec.h> -@@ -24,23 +26,27 @@ void h8_wwan_enable(int on) - */ - bool h8_has_wwan(const struct device *dev) - { -+ #if CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON) -+ printk(BIOS_INFO, "H8: WWAN detection not implemented. " -+ "Assuming WWAN installed\n"); -+ return true; -+ #else - struct ec_lenovo_h8_config *conf = dev->chip_info; - -- if (1 || !conf->has_wwan_detection) { -+ if (!conf->has_wwan_detection) { - printk(BIOS_INFO, "H8: WWAN detection not implemented. " - "Assuming WWAN installed\n"); - return true; - } - --#if 0 - if (get_gpio(conf->wwan_gpio_num) == conf->wwan_gpio_lvl) { - printk(BIOS_INFO, "H8: WWAN installed\n"); - return true; - } --#endif - - printk(BIOS_INFO, "H8: WWAN not installed\n"); - return false; -+ #endif - } - - /* --- -2.39.5 - diff --git a/config/coreboot/default/patches/0038-soc-intel-alderlake-Don-t-compress-FSP-S.patch b/config/coreboot/default/patches/0038-soc-intel-alderlake-Don-t-compress-FSP-S.patch new file mode 100644 index 00000000..545f2076 --- /dev/null +++ b/config/coreboot/default/patches/0038-soc-intel-alderlake-Don-t-compress-FSP-S.patch @@ -0,0 +1,35 @@ +From c36ed52f7573563a9eaeeedd6e6c0ee75973a39d Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Sat, 4 Oct 2025 21:57:43 +0100 +Subject: [PATCH 38/40] soc/intel/alderlake: Don't compress FSP-S + +Build systems like lbmk need to reproducibly insert +certain vendor files on release images. + +Compression isn't always reproducible, and making it +so costs a lot more time than simply disabling compression. + +With this change, FSP-S uses slightly more space inside +the flash, but it's not that much. + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + src/soc/intel/alderlake/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/soc/intel/alderlake/Kconfig b/src/soc/intel/alderlake/Kconfig +index 739faa3808..1f6a1dca7d 100644 +--- a/src/soc/intel/alderlake/Kconfig ++++ b/src/soc/intel/alderlake/Kconfig +@@ -14,7 +14,7 @@ config SOC_INTEL_ALDERLAKE + select DISPLAY_FSP_VERSION_INFO + select DRIVERS_USB_ACPI + select EDK2_CPU_TIMER_LIB if PAYLOAD_EDK2 +- select FSP_COMPRESS_FSP_S_LZ4 ++# select FSP_COMPRESS_FSP_S_LZ4 + select FAST_SPI_SUPPORTS_EXT_BIOS_WINDOW + select FSP_M_XIP + select FSP_MULTIPHASE_SI_INIT_RETURN_BROKEN +-- +2.47.3 + diff --git a/config/coreboot/default/patches/0039-alderlake-don-t-require-full-fsp-repo-for-fd-path.patch b/config/coreboot/default/patches/0039-alderlake-don-t-require-full-fsp-repo-for-fd-path.patch new file mode 100644 index 00000000..ed7d98e0 --- /dev/null +++ b/config/coreboot/default/patches/0039-alderlake-don-t-require-full-fsp-repo-for-fd-path.patch @@ -0,0 +1,33 @@ +From e564490781b0b829da43534c6c2a1b26aeb3282f Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Sat, 4 Oct 2025 22:20:11 +0100 +Subject: [PATCH 39/40] alderlake: don't require full fsp repo for fd path + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + src/soc/intel/alderlake/Kconfig | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/src/soc/intel/alderlake/Kconfig b/src/soc/intel/alderlake/Kconfig +index 1f6a1dca7d..3979d9e162 100644 +--- a/src/soc/intel/alderlake/Kconfig ++++ b/src/soc/intel/alderlake/Kconfig +@@ -415,7 +415,14 @@ config FSP_HEADER_PATH + + config FSP_FD_PATH + string +- depends on FSP_USE_REPO ++# dependency removed for lbmk purposes, so that the path is present ++# in the config regardless of whether it's used. this is for ./mk -d ++# on alderlake boards, which is used by lbmk to manually split fsp, ++# even though the result is identical to what coreboot produces, because ++# this enables lbmk to strip the fsp in release archives, and re-insert ++# for compliance reasons (due to technicalities in intel's licensing), ++# and to enable lbmk's advanced checksum verification of vendor files ++# depends on FSP_USE_REPO + default "3rdparty/fsp/RaptorLakeFspBinPkg/IoT/RaptorLakeP/FSP.fd" if FSP_TYPE_IOT && SOC_INTEL_ALDERLAKE_PCH_P && SOC_INTEL_RAPTORLAKE + default "3rdparty/fsp/RaptorLakeFspBinPkg/IoT/RaptorLakeS/FSP.fd" if FSP_TYPE_IOT && SOC_INTEL_RAPTORLAKE_PCH_S + default "3rdparty/fsp/AlderLakeFspBinPkg/IoT/AlderLakeP/Fsp.fd" if FSP_TYPE_IOT && SOC_INTEL_ALDERLAKE_PCH_P +-- +2.47.3 + diff --git a/config/coreboot/default/patches/0040-Haswell-NRI-Implement-SMBIOS-type-16-17.patch b/config/coreboot/default/patches/0040-Haswell-NRI-Implement-SMBIOS-type-16-17.patch new file mode 100644 index 00000000..4fdf2476 --- /dev/null +++ b/config/coreboot/default/patches/0040-Haswell-NRI-Implement-SMBIOS-type-16-17.patch @@ -0,0 +1,184 @@ +From 0fdb23e899e31b17a774ae9151410b11ccf13022 Mon Sep 17 00:00:00 2001 +From: Ron Nazarov <ron@noisytoot.org> +Date: Tue, 30 Sep 2025 22:36:53 +0100 +Subject: [PATCH 40/40] Haswell NRI: Implement SMBIOS type 16/17 + +Based on the implementation from Ivy/Sandy Bridge NRI. + +Tested on a Dell OptiPlex 9020 SFF with libreboot. + +Change-Id: I5e153258f9f88726f54c98baac0b1788a839f934 +Signed-off-by: Ron Nazarov <ron@noisytoot.org> +--- + .../haswell/native_raminit/raminit_main.c | 6 +- + .../haswell/native_raminit/raminit_native.c | 83 +++++++++++++++++-- + .../haswell/native_raminit/raminit_native.h | 2 +- + 3 files changed, 81 insertions(+), 10 deletions(-) + +diff --git a/src/northbridge/intel/haswell/native_raminit/raminit_main.c b/src/northbridge/intel/haswell/native_raminit/raminit_main.c +index 84db33ebdf..328f777ee1 100644 +--- a/src/northbridge/intel/haswell/native_raminit/raminit_main.c ++++ b/src/northbridge/intel/haswell/native_raminit/raminit_main.c +@@ -245,7 +245,7 @@ static enum raminit_status try_raminit( + return status; + } + +-void raminit_main(const enum raminit_boot_mode bootmode) ++const struct sysinfo *raminit_main(const enum raminit_boot_mode bootmode) + { + /* + * The mighty_ctrl struct. Will happily nuke the pre-RAM stack +@@ -261,7 +261,7 @@ void raminit_main(const enum raminit_boot_mode bootmode) + if (bootmode != BOOTMODE_COLD) { + status = try_raminit(&mighty_ctrl, fast_boot, ARRAY_SIZE(fast_boot)); + if (status == RAMINIT_STATUS_SUCCESS) +- return; ++ return &mighty_ctrl; + } + + /** TODO: Try more than once **/ +@@ -269,4 +269,6 @@ void raminit_main(const enum raminit_boot_mode bootmode) + + if (status != RAMINIT_STATUS_SUCCESS) + die("Memory initialization was met with utmost failure and misery\n"); ++ ++ return &mighty_ctrl; + } +diff --git a/src/northbridge/intel/haswell/native_raminit/raminit_native.c b/src/northbridge/intel/haswell/native_raminit/raminit_native.c +index 3ad8ce29e7..73532592e8 100644 +--- a/src/northbridge/intel/haswell/native_raminit/raminit_native.c ++++ b/src/northbridge/intel/haswell/native_raminit/raminit_native.c +@@ -16,6 +16,73 @@ + + #include "raminit_native.h" + ++static uint8_t nb_get_ecc_type(const uint32_t capid0_a) ++{ ++ return capid0_a & CAPID_ECCDIS ? MEMORY_ARRAY_ECC_NONE : MEMORY_ARRAY_ECC_SINGLE_BIT; ++} ++ ++static uint16_t nb_slots_per_channel(const uint32_t capid0_a) ++{ ++ return !(capid0_a & CAPID_DDPCD) + 1; ++} ++ ++static uint16_t nb_number_of_channels(const uint32_t capid0_a) ++{ ++ return !(capid0_a & CAPID_PDCD) + 1; ++} ++ ++static uint32_t nb_max_chan_capacity_mib(const uint32_t capid0_a) ++{ ++ uint32_t ddrsz; ++ ++ /* Values from documentation, which assume two DIMMs per channel */ ++ switch (CAPID_DDRSZ(capid0_a)) { ++ case 1: ++ ddrsz = 8192; ++ break; ++ case 2: ++ ddrsz = 2048; ++ break; ++ case 3: ++ ddrsz = 512; ++ break; ++ default: ++ ddrsz = 16384; ++ break; ++ } ++ ++ /* Account for the maximum number of DIMMs per channel */ ++ return (ddrsz / 2) * nb_slots_per_channel(capid0_a); ++} ++ ++/* Fill cbmem with information for SMBIOS type 16 and type 17 */ ++static void setup_sdram_meminfo(const struct sysinfo *ctrl) ++{ ++ const u16 ddr_freq = (1000 << 8) / ctrl->tCK; ++ ++ for (uint8_t channel = 0; channel < NUM_CHANNELS; channel++) { ++ for (uint8_t slot = 0; slot < NUM_SLOTS; slot++) { ++ enum cb_err ret = spd_add_smbios17(channel, slot, ddr_freq, ++ &ctrl->dimms[channel][slot].data); ++ if (ret != CB_SUCCESS) ++ printk(BIOS_ERR, "RAMINIT: Failed to add SMBIOS17\n"); ++ } ++ } ++ ++ /* The 'spd_add_smbios17' function allocates this CBMEM area */ ++ struct memory_info *m = cbmem_find(CBMEM_ID_MEMINFO); ++ if (!m) ++ return; ++ ++ const uint32_t capid0_a = pci_read_config32(HOST_BRIDGE, CAPID0_A); ++ ++ const uint16_t channels = nb_number_of_channels(capid0_a); ++ ++ m->ecc_type = nb_get_ecc_type(capid0_a); ++ m->max_capacity_mib = channels * nb_max_chan_capacity_mib(capid0_a); ++ m->number_of_devices = channels * nb_slots_per_channel(capid0_a); ++} ++ + static void wait_txt_clear(void) + { + const struct cpuid_result cpuid = cpuid_ext(1, 0); +@@ -90,7 +157,8 @@ static void raminit_reset(void) + static enum raminit_boot_mode do_actual_raminit( + const bool s3resume, + const bool cpu_replaced, +- const enum raminit_boot_mode orig_bootmode) ++ const enum raminit_boot_mode orig_bootmode, ++ const struct sysinfo **ctrl) + { + struct mrc_data md = prepare_mrc_cache(); + +@@ -158,7 +226,7 @@ static enum raminit_boot_mode do_actual_raminit( + * And now, the actual memory initialization thing. + */ + printk(RAM_DEBUG, "\nStarting native raminit\n"); +- raminit_main(bootmode); ++ *ctrl = raminit_main(bootmode); + + return bootmode; + } +@@ -176,8 +244,9 @@ void perform_raminit(const int s3resume) + wait_txt_clear(); + wrmsr(0x2e6, (msr_t) {.lo = 0, .hi = 0}); + ++ const struct sysinfo *ctrl; + const enum raminit_boot_mode bootmode = +- do_actual_raminit(s3resume, cpu_replaced, orig_bootmode); ++ do_actual_raminit(s3resume, cpu_replaced, orig_bootmode, &ctrl); + + /** TODO: report_memory_config **/ + +@@ -204,9 +273,9 @@ void perform_raminit(const int s3resume) + system_reset(); + } + +- /* Save training data on non-S3 resumes */ +- if (!s3resume) ++ /* Save training data and set up SMBIOS type 16/17 on non-S3 resumes */ ++ if (!s3resume) { + save_mrc_data(); +- +- /** TODO: setup_sdram_meminfo **/ ++ setup_sdram_meminfo(ctrl); ++ } + } +diff --git a/src/northbridge/intel/haswell/native_raminit/raminit_native.h b/src/northbridge/intel/haswell/native_raminit/raminit_native.h +index b9e84a11df..1401feedc5 100644 +--- a/src/northbridge/intel/haswell/native_raminit/raminit_native.h ++++ b/src/northbridge/intel/haswell/native_raminit/raminit_native.h +@@ -476,7 +476,7 @@ static inline void mchbar_write64(const uintptr_t x, const uint64_t v) + "m"(mmxsave)); + } + +-void raminit_main(enum raminit_boot_mode bootmode); ++const struct sysinfo *raminit_main(enum raminit_boot_mode bootmode); + + enum raminit_status collect_spd_info(struct sysinfo *ctrl); + enum raminit_status initialise_mpll(struct sysinfo *ctrl); +-- +2.47.3 + diff --git a/config/coreboot/default/patches/0041-soc-alderlake-disable-stack-overflow-debug-option.patch b/config/coreboot/default/patches/0041-soc-alderlake-disable-stack-overflow-debug-option.patch new file mode 100644 index 00000000..979eff9b --- /dev/null +++ b/config/coreboot/default/patches/0041-soc-alderlake-disable-stack-overflow-debug-option.patch @@ -0,0 +1,46 @@ +From 9936228e74ef8bccbf6adb8640040901d395cda0 Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Mon, 6 Oct 2025 04:47:06 +0100 +Subject: [PATCH 1/1] soc/alderlake: disable stack overflow debug option + +same as on other boards. based on this commit: + +commit 51cc2bacb6b07279b97e9934d079060475481fb6 +Author: Subrata Banik <subratabanik@google.com> +Author: Subrata Banik <subratabanik@google.com> +Date: Fri Dec 13 13:07:28 2024 +0530 + + soc/intel/pantherlake: Disable stack overflow debug options + +yeah, i've been replicating this change per platform. + +we do alderlake now in libreboot, so let's set that here too. + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + src/soc/intel/alderlake/Kconfig | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/src/soc/intel/alderlake/Kconfig b/src/soc/intel/alderlake/Kconfig +index 3979d9e162..a47a27dfaf 100644 +--- a/src/soc/intel/alderlake/Kconfig ++++ b/src/soc/intel/alderlake/Kconfig +@@ -329,6 +329,15 @@ config SOC_INTEL_UFS_CLK_FREQ_HZ + int + default 19200000 + ++# Override DEBUG Kconfig to avoid false alarm about stack overflow. ++config DEBUG_STACK_OVERFLOW_BREAKPOINTS ++ bool ++ default n ++ ++config DEBUG_STACK_OVERFLOW_BREAKPOINTS_IN_ALL_STAGES ++ bool ++ default n ++ + config DRIVERS_I2C_DESIGNWARE_CLOCK_MHZ + int + default 133 +-- +2.47.3 + diff --git a/config/coreboot/default/target.cfg b/config/coreboot/default/target.cfg index 2494c0b6..80c86778 100644 --- a/config/coreboot/default/target.cfg +++ b/config/coreboot/default/target.cfg @@ -1,4 +1,4 @@ # SPDX-License-Identifier: GPL-3.0-or-later tree="default" -rev="c247f62749b967143e58c33aa0e5e234711a628f" +rev="9e41c7cec791d84b079251065add7dba66662913" diff --git a/config/coreboot/dell3050micro_vfsp_16mb/config/libgfxinit_corebootfb b/config/coreboot/dell3050micro_vfsp_16mb/config/libgfxinit_corebootfb index 5bb79c84..5d7609c3 100644 --- a/config/coreboot/dell3050micro_vfsp_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/dell3050micro_vfsp_16mb/config/libgfxinit_corebootfb @@ -16,9 +16,10 @@ CONFIG_COMPILER_GCC=y # CONFIG_IWYU is not set # CONFIG_FMD_GENPARSER is not set # CONFIG_UTIL_GENPARSER is not set -CONFIG_OPTION_BACKEND_NONE=y -# CONFIG_USE_OPTION_TABLE is not set +# CONFIG_OPTION_BACKEND_NONE is not set +CONFIG_USE_OPTION_TABLE=y # CONFIG_USE_CBFS_FILE_OPTION_BACKEND is not set +CONFIG_STATIC_OPTION_TABLE=y CONFIG_COMPRESS_RAMSTAGE_LZMA=y # CONFIG_COMPRESS_RAMSTAGE_LZ4 is not set CONFIG_SEPARATE_ROMSTAGE=y @@ -154,9 +155,9 @@ CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 CONFIG_USE_PM_ACPI_TIMER=y -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set CONFIG_BOARD_DELL_OPTIPLEX_3050=y # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -252,6 +253,7 @@ CONFIG_SMM_RESERVED_SIZE=0x200000 CONFIG_SMM_MODULE_STACK_SIZE=0x800 CONFIG_ACPI_BERT_SIZE=0x0 CONFIG_DRIVERS_I2C_DESIGNWARE_CLOCK_MHZ=120 +CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xe0000000 CONFIG_ACPI_CPU_STRING="CP%02X" @@ -434,7 +436,6 @@ CONFIG_UDELAY_TSC=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y -CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -484,7 +485,6 @@ CONFIG_HAVE_ME_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_UDK_BASE=y CONFIG_UDK_2017_BINDING=y CONFIG_UDK_2013_VERSION=2013 diff --git a/config/coreboot/dell3050micro_vfsp_16mb/config/libgfxinit_txtmode b/config/coreboot/dell3050micro_vfsp_16mb/config/libgfxinit_txtmode index 570c6466..c341c6dc 100644 --- a/config/coreboot/dell3050micro_vfsp_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/dell3050micro_vfsp_16mb/config/libgfxinit_txtmode @@ -16,9 +16,10 @@ CONFIG_COMPILER_GCC=y # CONFIG_IWYU is not set # CONFIG_FMD_GENPARSER is not set # CONFIG_UTIL_GENPARSER is not set -CONFIG_OPTION_BACKEND_NONE=y -# CONFIG_USE_OPTION_TABLE is not set +# CONFIG_OPTION_BACKEND_NONE is not set +CONFIG_USE_OPTION_TABLE=y # CONFIG_USE_CBFS_FILE_OPTION_BACKEND is not set +CONFIG_STATIC_OPTION_TABLE=y CONFIG_COMPRESS_RAMSTAGE_LZMA=y # CONFIG_COMPRESS_RAMSTAGE_LZ4 is not set CONFIG_SEPARATE_ROMSTAGE=y @@ -152,9 +153,9 @@ CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 CONFIG_USE_PM_ACPI_TIMER=y -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set CONFIG_BOARD_DELL_OPTIPLEX_3050=y # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -250,6 +251,7 @@ CONFIG_SMM_RESERVED_SIZE=0x200000 CONFIG_SMM_MODULE_STACK_SIZE=0x800 CONFIG_ACPI_BERT_SIZE=0x0 CONFIG_DRIVERS_I2C_DESIGNWARE_CLOCK_MHZ=120 +CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xe0000000 CONFIG_ACPI_CPU_STRING="CP%02X" @@ -432,7 +434,6 @@ CONFIG_UDELAY_TSC=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y -CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -482,7 +483,6 @@ CONFIG_HAVE_ME_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_UDK_BASE=y CONFIG_UDK_2017_BINDING=y CONFIG_UDK_2013_VERSION=2013 diff --git a/config/coreboot/dell3050micro_vfsp_16mb/target.cfg b/config/coreboot/dell3050micro_vfsp_16mb/target.cfg index f86065a1..4e04f453 100644 --- a/config/coreboot/dell3050micro_vfsp_16mb/target.cfg +++ b/config/coreboot/dell3050micro_vfsp_16mb/target.cfg @@ -6,8 +6,8 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="nvme ahci" -grubtree="xhci" +grubtree="xhci_nvme" vcfg="3050micro" -build_depend="seabios/default grub/xhci memtest86plus u-boot/amd64coreboot" +build_depend="seabios/default grub/xhci_nvme memtest86plus u-boot/amd64coreboot" IFD_platform="sklkbl" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/dell7010sff_12mb/config/libgfxinit_txtmode b/config/coreboot/dell7010sff_12mb/config/libgfxinit_txtmode index da15914b..6c8ce71d 100644 --- a/config/coreboot/dell7010sff_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/dell7010sff_12mb/config/libgfxinit_txtmode @@ -154,9 +154,9 @@ CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 CONFIG_TPM_PIRQ=0x0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -255,6 +255,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -299,7 +300,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -384,7 +384,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -461,6 +460,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/dell7010sff_12mb/target.cfg b/config/coreboot/dell7010sff_12mb/target.cfg index de6a8af8..34865f86 100644 --- a/config/coreboot/dell7010sff_12mb/target.cfg +++ b/config/coreboot/dell7010sff_12mb/target.cfg @@ -9,4 +9,4 @@ grub_scan_disk="nvme ahci" grubtree="nvme" vcfg="t1650" build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/dell780mt_8mb/config/libgfxinit_corebootfb b/config/coreboot/dell780mt_8mb/config/libgfxinit_corebootfb index d3c7bbeb..c3f660c6 100644 --- a/config/coreboot/dell780mt_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/dell780mt_8mb/config/libgfxinit_corebootfb @@ -153,9 +153,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set CONFIG_BOARD_DELL_OPTIPLEX_780_MT=y # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -250,6 +250,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -296,7 +297,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -360,7 +360,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -442,6 +441,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/dell780mt_8mb/config/libgfxinit_txtmode b/config/coreboot/dell780mt_8mb/config/libgfxinit_txtmode index 320f5b4f..0f902ba2 100644 --- a/config/coreboot/dell780mt_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/dell780mt_8mb/config/libgfxinit_txtmode @@ -151,9 +151,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set CONFIG_BOARD_DELL_OPTIPLEX_780_MT=y # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -248,6 +248,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -294,7 +295,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -358,7 +358,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -438,6 +437,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/dell780mt_8mb/target.cfg b/config/coreboot/dell780mt_8mb/target.cfg index 45b8ea0b..a58de7bd 100644 --- a/config/coreboot/dell780mt_8mb/target.cfg +++ b/config/coreboot/dell780mt_8mb/target.cfg @@ -8,4 +8,4 @@ payload_memtest="y" grub_scan_disk="nvme ahci ata" grubtree="nvme" build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/dell780mt_truncate_8mb/config/libgfxinit_corebootfb b/config/coreboot/dell780mt_truncate_8mb/config/libgfxinit_corebootfb index 0d63f8f0..ac7093c2 100644 --- a/config/coreboot/dell780mt_truncate_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/dell780mt_truncate_8mb/config/libgfxinit_corebootfb @@ -153,9 +153,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set CONFIG_BOARD_DELL_OPTIPLEX_780_MT=y # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -250,6 +250,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -296,7 +297,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -360,7 +360,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -442,6 +441,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/dell780mt_truncate_8mb/config/libgfxinit_txtmode b/config/coreboot/dell780mt_truncate_8mb/config/libgfxinit_txtmode index eb3ba63e..8d3e7f16 100644 --- a/config/coreboot/dell780mt_truncate_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/dell780mt_truncate_8mb/config/libgfxinit_txtmode @@ -151,9 +151,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set CONFIG_BOARD_DELL_OPTIPLEX_780_MT=y # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -248,6 +248,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -294,7 +295,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -358,7 +358,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -438,6 +437,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/dell780mt_truncate_8mb/target.cfg b/config/coreboot/dell780mt_truncate_8mb/target.cfg index 45b8ea0b..a58de7bd 100644 --- a/config/coreboot/dell780mt_truncate_8mb/target.cfg +++ b/config/coreboot/dell780mt_truncate_8mb/target.cfg @@ -8,4 +8,4 @@ payload_memtest="y" grub_scan_disk="nvme ahci ata" grubtree="nvme" build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/dell780usff_8mb/config/libgfxinit_corebootfb b/config/coreboot/dell780usff_8mb/config/libgfxinit_corebootfb index 0c4ce4c0..f7e40cb5 100644 --- a/config/coreboot/dell780usff_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/dell780usff_8mb/config/libgfxinit_corebootfb @@ -153,9 +153,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set CONFIG_BOARD_DELL_OPTIPLEX_780_USFF=y @@ -250,6 +250,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -296,7 +297,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -360,7 +360,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -442,6 +441,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/dell780usff_8mb/config/libgfxinit_txtmode b/config/coreboot/dell780usff_8mb/config/libgfxinit_txtmode index 06340123..18813593 100644 --- a/config/coreboot/dell780usff_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/dell780usff_8mb/config/libgfxinit_txtmode @@ -151,9 +151,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set CONFIG_BOARD_DELL_OPTIPLEX_780_USFF=y @@ -248,6 +248,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -294,7 +295,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -358,7 +358,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -438,6 +437,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/dell780usff_8mb/target.cfg b/config/coreboot/dell780usff_8mb/target.cfg index 45b8ea0b..a58de7bd 100644 --- a/config/coreboot/dell780usff_8mb/target.cfg +++ b/config/coreboot/dell780usff_8mb/target.cfg @@ -8,4 +8,4 @@ payload_memtest="y" grub_scan_disk="nvme ahci ata" grubtree="nvme" build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/dell780usff_truncate_8mb/config/libgfxinit_corebootfb b/config/coreboot/dell780usff_truncate_8mb/config/libgfxinit_corebootfb index 8b4727e0..87800f44 100644 --- a/config/coreboot/dell780usff_truncate_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/dell780usff_truncate_8mb/config/libgfxinit_corebootfb @@ -153,9 +153,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set CONFIG_BOARD_DELL_OPTIPLEX_780_USFF=y @@ -250,6 +250,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -296,7 +297,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -360,7 +360,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -442,6 +441,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/dell780usff_truncate_8mb/config/libgfxinit_txtmode b/config/coreboot/dell780usff_truncate_8mb/config/libgfxinit_txtmode index c80b5666..a7a90e8f 100644 --- a/config/coreboot/dell780usff_truncate_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/dell780usff_truncate_8mb/config/libgfxinit_txtmode @@ -151,9 +151,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set CONFIG_BOARD_DELL_OPTIPLEX_780_USFF=y @@ -248,6 +248,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -294,7 +295,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -358,7 +358,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -438,6 +437,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/dell780usff_truncate_8mb/target.cfg b/config/coreboot/dell780usff_truncate_8mb/target.cfg index 45b8ea0b..a58de7bd 100644 --- a/config/coreboot/dell780usff_truncate_8mb/target.cfg +++ b/config/coreboot/dell780usff_truncate_8mb/target.cfg @@ -8,4 +8,4 @@ payload_memtest="y" grub_scan_disk="nvme ahci ata" grubtree="nvme" build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/dell9020mt_nri_12mb/config/libgfxinit_corebootfb b/config/coreboot/dell9020mt_nri_12mb/config/libgfxinit_corebootfb index 5f84d437..fe739be6 100644 --- a/config/coreboot/dell9020mt_nri_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/dell9020mt_nri_12mb/config/libgfxinit_corebootfb @@ -155,9 +155,9 @@ CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 CONFIG_TPM_PIRQ=0x0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -251,6 +251,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -297,7 +298,6 @@ CONFIG_UDELAY_TSC=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y -CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -369,7 +369,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -444,6 +443,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/dell9020mt_nri_12mb/config/libgfxinit_txtmode b/config/coreboot/dell9020mt_nri_12mb/config/libgfxinit_txtmode index 99420aed..e7863579 100644 --- a/config/coreboot/dell9020mt_nri_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/dell9020mt_nri_12mb/config/libgfxinit_txtmode @@ -153,9 +153,9 @@ CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 CONFIG_TPM_PIRQ=0x0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -249,6 +249,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -295,7 +296,6 @@ CONFIG_UDELAY_TSC=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y -CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -367,7 +367,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -440,6 +439,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/dell9020mt_nri_12mb/target.cfg b/config/coreboot/dell9020mt_nri_12mb/target.cfg index 96fbb9e3..47e228b7 100644 --- a/config/coreboot/dell9020mt_nri_12mb/target.cfg +++ b/config/coreboot/dell9020mt_nri_12mb/target.cfg @@ -6,7 +6,7 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="nvme ahci" -grubtree="xhci" +grubtree="xhci_nvme" vcfg="haswell" -build_depend="seabios/default grub/xhci memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +build_depend="seabios/default grub/xhci_nvme memtest86plus u-boot/amd64coreboot" +payload_uboot="amd64" diff --git a/config/coreboot/dell9020sff_nri_12mb/config/libgfxinit_corebootfb b/config/coreboot/dell9020sff_nri_12mb/config/libgfxinit_corebootfb index 5215e58f..6c1ebfd6 100644 --- a/config/coreboot/dell9020sff_nri_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/dell9020sff_nri_12mb/config/libgfxinit_corebootfb @@ -155,9 +155,9 @@ CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 CONFIG_TPM_PIRQ=0x0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -251,6 +251,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -297,7 +298,6 @@ CONFIG_UDELAY_TSC=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y -CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -369,7 +369,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -444,6 +443,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/dell9020sff_nri_12mb/config/libgfxinit_txtmode b/config/coreboot/dell9020sff_nri_12mb/config/libgfxinit_txtmode index 84108028..648f31e8 100644 --- a/config/coreboot/dell9020sff_nri_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/dell9020sff_nri_12mb/config/libgfxinit_txtmode @@ -153,9 +153,9 @@ CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 CONFIG_TPM_PIRQ=0x0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -249,6 +249,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -295,7 +296,6 @@ CONFIG_UDELAY_TSC=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y -CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -367,7 +367,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -440,6 +439,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/dell9020sff_nri_12mb/target.cfg b/config/coreboot/dell9020sff_nri_12mb/target.cfg index 96fbb9e3..47e228b7 100644 --- a/config/coreboot/dell9020sff_nri_12mb/target.cfg +++ b/config/coreboot/dell9020sff_nri_12mb/target.cfg @@ -6,7 +6,7 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="nvme ahci" -grubtree="xhci" +grubtree="xhci_nvme" vcfg="haswell" -build_depend="seabios/default grub/xhci memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +build_depend="seabios/default grub/xhci_nvme memtest86plus u-boot/amd64coreboot" +payload_uboot="amd64" diff --git a/config/coreboot/e4300_4mb/config/libgfxinit_corebootfb b/config/coreboot/e4300_4mb/config/libgfxinit_corebootfb index 2c27a53a..f789af92 100644 --- a/config/coreboot/e4300_4mb/config/libgfxinit_corebootfb +++ b/config/coreboot/e4300_4mb/config/libgfxinit_corebootfb @@ -152,9 +152,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set CONFIG_BOARD_DELL_E4300=y # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -248,6 +248,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -292,7 +293,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -357,7 +357,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -438,6 +437,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/e4300_4mb/config/libgfxinit_txtmode b/config/coreboot/e4300_4mb/config/libgfxinit_txtmode index e46177c9..20cf23ad 100644 --- a/config/coreboot/e4300_4mb/config/libgfxinit_txtmode +++ b/config/coreboot/e4300_4mb/config/libgfxinit_txtmode @@ -150,9 +150,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set CONFIG_BOARD_DELL_E4300=y # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -246,6 +246,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -290,7 +291,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -355,7 +355,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -434,6 +433,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/e4300_4mb/target.cfg b/config/coreboot/e4300_4mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/e4300_4mb/target.cfg +++ b/config/coreboot/e4300_4mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/e5420_6mb/config/libgfxinit_corebootfb b/config/coreboot/e5420_6mb/config/libgfxinit_corebootfb index 54bb6cec..ab7476b7 100644 --- a/config/coreboot/e5420_6mb/config/libgfxinit_corebootfb +++ b/config/coreboot/e5420_6mb/config/libgfxinit_corebootfb @@ -153,9 +153,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -250,6 +250,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -294,7 +295,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -378,7 +378,6 @@ CONFIG_HAVE_ME_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -457,6 +456,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e5420_6mb/config/libgfxinit_txtmode b/config/coreboot/e5420_6mb/config/libgfxinit_txtmode index 083f7bd0..7a3ab038 100644 --- a/config/coreboot/e5420_6mb/config/libgfxinit_txtmode +++ b/config/coreboot/e5420_6mb/config/libgfxinit_txtmode @@ -151,9 +151,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -248,6 +248,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -292,7 +293,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -376,7 +376,6 @@ CONFIG_HAVE_ME_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -453,6 +452,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e5420_6mb/target.cfg b/config/coreboot/e5420_6mb/target.cfg index 333030ce..d7510b96 100644 --- a/config/coreboot/e5420_6mb/target.cfg +++ b/config/coreboot/e5420_6mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="sandybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/e5520_6mb/config/libgfxinit_corebootfb b/config/coreboot/e5520_6mb/config/libgfxinit_corebootfb index d1d6d22a..7f2f1d1c 100644 --- a/config/coreboot/e5520_6mb/config/libgfxinit_corebootfb +++ b/config/coreboot/e5520_6mb/config/libgfxinit_corebootfb @@ -153,9 +153,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -250,6 +250,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -294,7 +295,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -378,7 +378,6 @@ CONFIG_HAVE_ME_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -457,6 +456,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e5520_6mb/config/libgfxinit_txtmode b/config/coreboot/e5520_6mb/config/libgfxinit_txtmode index c2281c47..dfbd4f64 100644 --- a/config/coreboot/e5520_6mb/config/libgfxinit_txtmode +++ b/config/coreboot/e5520_6mb/config/libgfxinit_txtmode @@ -151,9 +151,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -248,6 +248,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -292,7 +293,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -376,7 +376,6 @@ CONFIG_HAVE_ME_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -453,6 +452,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e5520_6mb/target.cfg b/config/coreboot/e5520_6mb/target.cfg index 333030ce..d7510b96 100644 --- a/config/coreboot/e5520_6mb/target.cfg +++ b/config/coreboot/e5520_6mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="sandybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/e5530_12mb/config/libgfxinit_corebootfb b/config/coreboot/e5530_12mb/config/libgfxinit_corebootfb index a0809203..19c1a249 100644 --- a/config/coreboot/e5530_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/e5530_12mb/config/libgfxinit_corebootfb @@ -153,9 +153,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -250,6 +250,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -294,7 +295,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -378,7 +378,6 @@ CONFIG_HAVE_ME_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -457,6 +456,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e5530_12mb/config/libgfxinit_txtmode b/config/coreboot/e5530_12mb/config/libgfxinit_txtmode index 4a102574..9cef13a5 100644 --- a/config/coreboot/e5530_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/e5530_12mb/config/libgfxinit_txtmode @@ -151,9 +151,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -248,6 +248,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -292,7 +293,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -376,7 +376,6 @@ CONFIG_HAVE_ME_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -453,6 +452,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e5530_12mb/target.cfg b/config/coreboot/e5530_12mb/target.cfg index 6cbab731..595ad782 100644 --- a/config/coreboot/e5530_12mb/target.cfg +++ b/config/coreboot/e5530_12mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="ivybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/e6220_10mb/config/libgfxinit_corebootfb b/config/coreboot/e6220_10mb/config/libgfxinit_corebootfb index e1d50696..d0d3d8bf 100644 --- a/config/coreboot/e6220_10mb/config/libgfxinit_corebootfb +++ b/config/coreboot/e6220_10mb/config/libgfxinit_corebootfb @@ -153,9 +153,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -251,6 +251,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -295,7 +296,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -381,7 +381,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -460,6 +459,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e6220_10mb/config/libgfxinit_txtmode b/config/coreboot/e6220_10mb/config/libgfxinit_txtmode index bb0a8fdb..13aec3df 100644 --- a/config/coreboot/e6220_10mb/config/libgfxinit_txtmode +++ b/config/coreboot/e6220_10mb/config/libgfxinit_txtmode @@ -151,9 +151,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -249,6 +249,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -293,7 +294,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -379,7 +379,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -456,6 +455,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e6220_10mb/target.cfg b/config/coreboot/e6220_10mb/target.cfg index 333030ce..d7510b96 100644 --- a/config/coreboot/e6220_10mb/target.cfg +++ b/config/coreboot/e6220_10mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="sandybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/e6230_12mb/config/libgfxinit_corebootfb b/config/coreboot/e6230_12mb/config/libgfxinit_corebootfb index 67d11a0a..8b165481 100644 --- a/config/coreboot/e6230_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/e6230_12mb/config/libgfxinit_corebootfb @@ -153,9 +153,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -251,6 +251,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -295,7 +296,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -381,7 +381,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -460,6 +459,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e6230_12mb/config/libgfxinit_txtmode b/config/coreboot/e6230_12mb/config/libgfxinit_txtmode index e9846595..7808a222 100644 --- a/config/coreboot/e6230_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/e6230_12mb/config/libgfxinit_txtmode @@ -151,9 +151,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -249,6 +249,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -293,7 +294,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -379,7 +379,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -456,6 +455,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e6230_12mb/target.cfg b/config/coreboot/e6230_12mb/target.cfg index b491fdc8..42eca05e 100644 --- a/config/coreboot/e6230_12mb/target.cfg +++ b/config/coreboot/e6230_12mb/target.cfg @@ -7,5 +7,5 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="ivybridge" -payload_uboot_amd64="y" -payload_uboot_amd64="y" +payload_uboot="amd64" +payload_uboot="amd64" diff --git a/config/coreboot/e6320_10mb/config/libgfxinit_corebootfb b/config/coreboot/e6320_10mb/config/libgfxinit_corebootfb index 2c86c696..402b88ce 100644 --- a/config/coreboot/e6320_10mb/config/libgfxinit_corebootfb +++ b/config/coreboot/e6320_10mb/config/libgfxinit_corebootfb @@ -153,9 +153,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -251,6 +251,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -295,7 +296,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -381,7 +381,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -460,6 +459,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e6320_10mb/config/libgfxinit_txtmode b/config/coreboot/e6320_10mb/config/libgfxinit_txtmode index be05cd84..f730047d 100644 --- a/config/coreboot/e6320_10mb/config/libgfxinit_txtmode +++ b/config/coreboot/e6320_10mb/config/libgfxinit_txtmode @@ -151,9 +151,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -249,6 +249,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -293,7 +294,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -379,7 +379,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -456,6 +455,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e6320_10mb/target.cfg b/config/coreboot/e6320_10mb/target.cfg index 333030ce..d7510b96 100644 --- a/config/coreboot/e6320_10mb/target.cfg +++ b/config/coreboot/e6320_10mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="sandybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/e6330_12mb/config/libgfxinit_corebootfb b/config/coreboot/e6330_12mb/config/libgfxinit_corebootfb index 71f592d3..89fbba98 100644 --- a/config/coreboot/e6330_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/e6330_12mb/config/libgfxinit_corebootfb @@ -153,9 +153,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -251,6 +251,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -295,7 +296,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -381,7 +381,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -460,6 +459,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e6330_12mb/config/libgfxinit_txtmode b/config/coreboot/e6330_12mb/config/libgfxinit_txtmode index be7e52e0..afbaa4c2 100644 --- a/config/coreboot/e6330_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/e6330_12mb/config/libgfxinit_txtmode @@ -151,9 +151,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -249,6 +249,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -293,7 +294,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -379,7 +379,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -456,6 +455,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e6330_12mb/target.cfg b/config/coreboot/e6330_12mb/target.cfg index 6cbab731..595ad782 100644 --- a/config/coreboot/e6330_12mb/target.cfg +++ b/config/coreboot/e6330_12mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="ivybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/e6400_4mb/config/libgfxinit_corebootfb b/config/coreboot/e6400_4mb/config/libgfxinit_corebootfb index 1fe90706..13071235 100644 --- a/config/coreboot/e6400_4mb/config/libgfxinit_corebootfb +++ b/config/coreboot/e6400_4mb/config/libgfxinit_corebootfb @@ -152,9 +152,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set CONFIG_BOARD_DELL_E6400=y +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -249,6 +249,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 # CONFIG_VGA_BIOS_SECOND is not set CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 @@ -294,7 +295,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -359,7 +359,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -442,6 +441,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/e6400_4mb/config/libgfxinit_txtmode b/config/coreboot/e6400_4mb/config/libgfxinit_txtmode index 59999383..06611f8f 100644 --- a/config/coreboot/e6400_4mb/config/libgfxinit_txtmode +++ b/config/coreboot/e6400_4mb/config/libgfxinit_txtmode @@ -150,9 +150,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set CONFIG_BOARD_DELL_E6400=y +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -247,6 +247,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 # CONFIG_VGA_BIOS_SECOND is not set CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 @@ -292,7 +293,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -357,7 +357,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -438,6 +437,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/e6400_4mb/target.cfg b/config/coreboot/e6400_4mb/target.cfg index b999b10c..f7500e97 100644 --- a/config/coreboot/e6400_4mb/target.cfg +++ b/config/coreboot/e6400_4mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="e6400" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/e6400nvidia_4mb/config/normal b/config/coreboot/e6400nvidia_4mb/config/normal index 6c5d2cc9..53e838bb 100644 --- a/config/coreboot/e6400nvidia_4mb/config/normal +++ b/config/coreboot/e6400nvidia_4mb/config/normal @@ -149,9 +149,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set CONFIG_BOARD_DELL_E6400=y +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -245,6 +245,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 # CONFIG_VGA_BIOS_SECOND is not set CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 @@ -290,7 +291,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -355,7 +355,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -425,6 +424,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/e6420_10mb/config/libgfxinit_corebootfb b/config/coreboot/e6420_10mb/config/libgfxinit_corebootfb index b4116efb..a3bee006 100644 --- a/config/coreboot/e6420_10mb/config/libgfxinit_corebootfb +++ b/config/coreboot/e6420_10mb/config/libgfxinit_corebootfb @@ -153,9 +153,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -251,6 +251,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -295,7 +296,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -381,7 +381,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -460,6 +459,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e6420_10mb/config/libgfxinit_txtmode b/config/coreboot/e6420_10mb/config/libgfxinit_txtmode index 91560f0c..601aa037 100644 --- a/config/coreboot/e6420_10mb/config/libgfxinit_txtmode +++ b/config/coreboot/e6420_10mb/config/libgfxinit_txtmode @@ -151,9 +151,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -249,6 +249,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -293,7 +294,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -379,7 +379,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -456,6 +455,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e6420_10mb/target.cfg b/config/coreboot/e6420_10mb/target.cfg index 333030ce..d7510b96 100644 --- a/config/coreboot/e6420_10mb/target.cfg +++ b/config/coreboot/e6420_10mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="sandybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/e6430_12mb/config/libgfxinit_corebootfb b/config/coreboot/e6430_12mb/config/libgfxinit_corebootfb index ddeb46b4..7fbc079b 100644 --- a/config/coreboot/e6430_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/e6430_12mb/config/libgfxinit_corebootfb @@ -153,9 +153,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -251,6 +251,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -295,7 +296,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -381,7 +381,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -460,6 +459,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e6430_12mb/config/libgfxinit_txtmode b/config/coreboot/e6430_12mb/config/libgfxinit_txtmode index 0a4f7610..1a11fcfe 100644 --- a/config/coreboot/e6430_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/e6430_12mb/config/libgfxinit_txtmode @@ -151,9 +151,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -249,6 +249,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -293,7 +294,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -379,7 +379,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -456,6 +455,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e6430_12mb/target.cfg b/config/coreboot/e6430_12mb/target.cfg index 6cbab731..595ad782 100644 --- a/config/coreboot/e6430_12mb/target.cfg +++ b/config/coreboot/e6430_12mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="ivybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/e6520_10mb/config/libgfxinit_corebootfb b/config/coreboot/e6520_10mb/config/libgfxinit_corebootfb index 83805e50..d892dfe1 100644 --- a/config/coreboot/e6520_10mb/config/libgfxinit_corebootfb +++ b/config/coreboot/e6520_10mb/config/libgfxinit_corebootfb @@ -153,9 +153,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -251,6 +251,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -295,7 +296,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -381,7 +381,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -460,6 +459,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e6520_10mb/config/libgfxinit_txtmode b/config/coreboot/e6520_10mb/config/libgfxinit_txtmode index 3eafffd6..e655c5b0 100644 --- a/config/coreboot/e6520_10mb/config/libgfxinit_txtmode +++ b/config/coreboot/e6520_10mb/config/libgfxinit_txtmode @@ -151,9 +151,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -249,6 +249,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -293,7 +294,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -379,7 +379,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -456,6 +455,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e6520_10mb/target.cfg b/config/coreboot/e6520_10mb/target.cfg index 333030ce..d7510b96 100644 --- a/config/coreboot/e6520_10mb/target.cfg +++ b/config/coreboot/e6520_10mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="sandybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/e6530_12mb/config/libgfxinit_corebootfb b/config/coreboot/e6530_12mb/config/libgfxinit_corebootfb index be2460d3..787b0d52 100644 --- a/config/coreboot/e6530_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/e6530_12mb/config/libgfxinit_corebootfb @@ -153,9 +153,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -251,6 +251,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -295,7 +296,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -381,7 +381,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -460,6 +459,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e6530_12mb/config/libgfxinit_txtmode b/config/coreboot/e6530_12mb/config/libgfxinit_txtmode index d06fe80f..3d5eefa8 100644 --- a/config/coreboot/e6530_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/e6530_12mb/config/libgfxinit_txtmode @@ -151,9 +151,9 @@ CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -249,6 +249,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -293,7 +294,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -379,7 +379,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -456,6 +455,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/e6530_12mb/target.cfg b/config/coreboot/e6530_12mb/target.cfg index 6cbab731..595ad782 100644 --- a/config/coreboot/e6530_12mb/target.cfg +++ b/config/coreboot/e6530_12mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="ivybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/fam15h/nuke.list b/config/coreboot/fam15h/nuke.list new file mode 100644 index 00000000..8ca7a4cf --- /dev/null +++ b/config/coreboot/fam15h/nuke.list @@ -0,0 +1 @@ +3rdparty/vboot/tests diff --git a/config/coreboot/fam15h/patches/0013-Fix-build-with-GCC-15-as-host-compiler.patch b/config/coreboot/fam15h/patches/0013-Fix-build-with-GCC-15-as-host-compiler.patch new file mode 100644 index 00000000..b08c9edf --- /dev/null +++ b/config/coreboot/fam15h/patches/0013-Fix-build-with-GCC-15-as-host-compiler.patch @@ -0,0 +1,39 @@ +From 281151d85240bd8a60545b6415e0f44ce6a2af33 Mon Sep 17 00:00:00 2001 +From: Alper Nebi Yasak <alpernebiyasak@gmail.com> +Date: Tue, 29 Apr 2025 17:31:13 +0300 +Subject: [PATCH] WIP: Fix build with GCC 15 as host compiler + +GCC 15 now considers the unterminated-string-initialization warning as +part of -Werror by default. Coreboot compiles host utilities with the +system compiler, which results in getting this error in some files. + +Mark a hexadecimal translation table in cbfstool code as "nonstring" to +avoid the warning-turned-error. + +The bios log prefixes are non-null-terminated as well, but I couldn't +figure out how to mark them as non-strings. Temporarily disable the +warning with a pragma to avoid the error. That pragma causes an error on +GCC 14, so disable pragma warnings along with it to avoid that as well. + +Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com> +--- + util/cbfstool/common.c | 2 +- + 1 files changed, 1 insertion(+), 1 deletion(-) + +diff --git a/util/cbfstool/common.c b/util/cbfstool/common.c +index 7154bc9d5425..cb08c9e8ec11 100644 +--- a/util/cbfstool/common.c ++++ b/util/cbfstool/common.c +@@ -192,7 +192,7 @@ uint64_t intfiletype(const char *name) + + char *bintohex(uint8_t *data, size_t len) + { +- static const char translate[16] = "0123456789abcdef"; ++ static const char translate[16] __attribute__((__nonstring__)) = "0123456789abcdef"; + + char *result = malloc(len * 2 + 1); + if (result == NULL) + +-- +2.49.0 + diff --git a/config/coreboot/fam15h/patches/0014-util-romcc-Fix-build-with-GCC-15.patch b/config/coreboot/fam15h/patches/0014-util-romcc-Fix-build-with-GCC-15.patch new file mode 100644 index 00000000..d9de94c6 --- /dev/null +++ b/config/coreboot/fam15h/patches/0014-util-romcc-Fix-build-with-GCC-15.patch @@ -0,0 +1,119 @@ +From 74dc3c0a4603bc635c8bc5e95490cdf168af5f41 Mon Sep 17 00:00:00 2001 +From: Alper Nebi Yasak <alpernebiyasak@gmail.com> +Date: Tue, 29 Apr 2025 19:46:14 +0300 +Subject: [PATCH] util/romcc: Fix build with GCC 15 + +With GCC 15, we get build errors complaining bool is a reserved keyword, +so cannot be used as a function name. Rename our bool() to bool_(). + +Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com> +--- + util/romcc/romcc.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +diff --git a/util/romcc/romcc.c b/util/romcc/romcc.c +index 378bfc50f290..b375e0fc83cb 100644 +--- a/util/romcc/romcc.c ++++ b/util/romcc/romcc.c +@@ -7137,7 +7137,7 @@ static void integral(struct compile_state *state, struct triple *def) + } + + +-static void bool(struct compile_state *state, struct triple *def) ++static void bool_(struct compile_state *state, struct triple *def) + { + if (!TYPE_ARITHMETIC(def->type->type) && + ((def->type->type & TYPE_MASK) != TYPE_POINTER)) { +@@ -7705,7 +7705,7 @@ static struct triple *mkcond_expr( + struct triple *def, *val, *var, *jmp1, *jmp2, *top, *mid, *end; + struct type *result_type; + unsigned int left_type, right_type; +- bool(state, test); ++ bool_(state, test); + left_type = left->type->type; + right_type = right->type->type; + result_type = 0; +@@ -11036,7 +11036,7 @@ static struct triple *unary_expr(struct compile_state *state) + case TOK_BANG: + eat(state, TOK_BANG); + right = read_expr(state, cast_expr(state)); +- bool(state, right); ++ bool_(state, right); + def = lfalse_expr(state, right); + break; + case TOK_SIZEOF: +@@ -11363,10 +11363,10 @@ static struct triple *land_expr(struct compile_state *state) + while(peek(state) == TOK_LOGAND) { + struct triple *left, *right; + left = read_expr(state, def); +- bool(state, left); ++ bool_(state, left); + eat(state, TOK_LOGAND); + right = read_expr(state, or_expr(state)); +- bool(state, right); ++ bool_(state, right); + + def = mkland_expr(state, + ltrue_expr(state, left), +@@ -11382,10 +11382,10 @@ static struct triple *lor_expr(struct compile_state *state) + while(peek(state) == TOK_LOGOR) { + struct triple *left, *right; + left = read_expr(state, def); +- bool(state, left); ++ bool_(state, left); + eat(state, TOK_LOGOR); + right = read_expr(state, land_expr(state)); +- bool(state, right); ++ bool_(state, right); + + def = mklor_expr(state, + ltrue_expr(state, left), +@@ -11400,7 +11400,7 @@ static struct triple *conditional_expr(struct compile_state *state) + def = lor_expr(state); + if (peek(state) == TOK_QUEST) { + struct triple *test, *left, *right; +- bool(state, def); ++ bool_(state, def); + test = ltrue_expr(state, read_expr(state, def)); + eat(state, TOK_QUEST); + left = read_expr(state, expr(state)); +@@ -11676,7 +11676,7 @@ static void if_statement(struct compile_state *state, struct triple *first) + eat(state, TOK_IF); + eat(state, TOK_LPAREN); + test = expr(state); +- bool(state, test); ++ bool_(state, test); + /* Cleanup and invert the test */ + test = lfalse_expr(state, read_expr(state, test)); + eat(state, TOK_RPAREN); +@@ -11719,7 +11719,7 @@ static void for_statement(struct compile_state *state, struct triple *first) + eat(state, TOK_SEMI); + if (peek(state) != TOK_SEMI) { + test = expr(state); +- bool(state, test); ++ bool_(state, test); + test = ltrue_expr(state, read_expr(state, test)); + } + eat(state, TOK_SEMI); +@@ -11767,7 +11767,7 @@ static void while_statement(struct compile_state *state, struct triple *first) + eat(state, TOK_WHILE); + eat(state, TOK_LPAREN); + test = expr(state); +- bool(state, test); ++ bool_(state, test); + test = ltrue_expr(state, read_expr(state, test)); + eat(state, TOK_RPAREN); + /* Generate the needed pieces */ +@@ -11818,7 +11818,7 @@ static void do_statement(struct compile_state *state, struct triple *first) + eat(state, TOK_WHILE); + eat(state, TOK_LPAREN); + test = read_expr(state, expr(state)); +- bool(state, test); ++ bool_(state, test); + eat(state, TOK_RPAREN); + eat(state, TOK_SEMI); + /* Thread the pieces together */ + +-- +2.49.0 + diff --git a/config/coreboot/fam15h/patches/0015-gmp-gcc15-patch.patch b/config/coreboot/fam15h/patches/0015-gmp-gcc15-patch.patch new file mode 100644 index 00000000..40ea7c14 --- /dev/null +++ b/config/coreboot/fam15h/patches/0015-gmp-gcc15-patch.patch @@ -0,0 +1,65 @@ +From 8663b2a75d69aa241f86dd6e813232343a05b609 Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Tue, 29 Apr 2025 21:26:25 +0100 +Subject: [PATCH 1/1] gmp gcc15 patch + +https://gmplib.org/list-archives/gmp-devel/2025-January/006279.html + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + ...include.m4-fix-std-c23-build-failure.patch | 43 +++++++++++++++++++ + 1 file changed, 43 insertions(+) + create mode 100644 util/crossgcc/patches/gmp-6.1.2_acinclude.m4-fix-std-c23-build-failure.patch + +diff --git a/util/crossgcc/patches/gmp-6.1.2_acinclude.m4-fix-std-c23-build-failure.patch b/util/crossgcc/patches/gmp-6.1.2_acinclude.m4-fix-std-c23-build-failure.patch +new file mode 100644 +index 0000000000..adb66c6043 +--- /dev/null ++++ b/util/crossgcc/patches/gmp-6.1.2_acinclude.m4-fix-std-c23-build-failure.patch +@@ -0,0 +1,43 @@ ++From 7d4aa08224b53054754b8ee6fd61a4297ac47119 Mon Sep 17 00:00:00 2001 ++From: Rudi Heitbaum <rudi@heitbaum.com> ++Date: Wed, 22 Jan 2025 02:34:09 +0100 ++Subject: [PATCH 1/1] acinclude.m4: fix -std=c23 build failure ++ ++Add prototype to configure test function as c23 removes unprototyped ++functions. ++ ++gcc-15 switched to -std=c23 by default: ++ ++ https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=55e3bd376b2214e200fa76d12b67ff259b06c212 ++ ++As a result `configure` fails with: ++ conftest.c: In function 'f': ++ conftest.c:12:48: error: too many arguments to function 'g'; expected 0, have 6 ++ 12 | for(i=0;i<1;i++){if(e(got,got,9,d[i].n)==0)h();g(i,d[i].src,d[i].n,got,d[i].want,9);if(d[i].n)h();}} ++ | ^ ~ ++ conftest.c:7:6: note: declared here ++ 7 | void g(){} ++ | ^ ++ ++Link: https://gmplib.org/list-archives/gmp-bugs/2024-November/005550.html ++Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com> ++--- ++ acinclude.m4 | 2 +- ++ 1 file changed, 1 insertion(+), 1 deletion(-) ++ ++diff --git a/acinclude.m4 b/acinclude.m4 ++index 3c3ecf5..3a226fd 100644 ++--- a/acinclude.m4 +++++ b/acinclude.m4 ++@@ -609,7 +609,7 @@ GMP_PROG_CC_WORKS_PART([$1], [long long reliability test 1], ++ ++ #if defined (__GNUC__) && ! defined (__cplusplus) ++ typedef unsigned long long t1;typedef t1*t2; ++-void g(){} +++void g(int,const t1 *,t1,t1 *,const t1 *,int){} ++ void h(){} ++ static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0) ++ {t1 c,x,r;int i;if(v0){c=1;for(i=1;i<n;i++){x=up[i];r=x+1;rp[i]=r;}}return c;} ++-- ++2.39.5 ++ +-- +2.39.5 + diff --git a/config/coreboot/fam15h/patches/0016-further-fix-for-std-c23-on-gmp-with-host-gcc-15.patch b/config/coreboot/fam15h/patches/0016-further-fix-for-std-c23-on-gmp-with-host-gcc-15.patch new file mode 100644 index 00000000..1287a02d --- /dev/null +++ b/config/coreboot/fam15h/patches/0016-further-fix-for-std-c23-on-gmp-with-host-gcc-15.patch @@ -0,0 +1,55 @@ +From 8c3a1163eb24a608ad14747cd40169fb5a41d4f9 Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Tue, 29 Apr 2025 23:18:56 +0100 +Subject: [PATCH 1/1] further fix for std=c23 on gmp with host gcc-15 + +the fix had to be applied in the configure file, so that +the correct function call is generated in conftest.c + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + ...e.m4-fix-std-c23-build-failure-extra.patch | 32 +++++++++++++++++++ + 1 file changed, 32 insertions(+) + create mode 100644 util/crossgcc/patches/gmp-6.1.2_acinclude.m4-fix-std-c23-build-failure-extra.patch + +diff --git a/util/crossgcc/patches/gmp-6.1.2_acinclude.m4-fix-std-c23-build-failure-extra.patch b/util/crossgcc/patches/gmp-6.1.2_acinclude.m4-fix-std-c23-build-failure-extra.patch +new file mode 100644 +index 0000000000..40569b27d8 +--- /dev/null ++++ b/util/crossgcc/patches/gmp-6.1.2_acinclude.m4-fix-std-c23-build-failure-extra.patch +@@ -0,0 +1,32 @@ ++From 6316016cfe6834b6d3242e7e088b7d2af91ada22 Mon Sep 17 00:00:00 2001 ++From: Leah Rowe <leah@libreboot.org> ++Date: Tue, 29 Apr 2025 23:16:51 +0100 ++Subject: [PATCH 1/1] further -std=23 gcc-15 fix for gmp ++ ++the previously merged revision was correct, but ++applied in the wrong place. the conftest.c file ++was being generated by configure, in this place. ++ ++this should fix build errors now, on gcc-15. ++ ++Signed-off-by: Leah Rowe <leah@libreboot.org> ++--- ++ configure | 2 +- ++ 1 file changed, 1 insertion(+), 1 deletion(-) ++ ++diff --git a/configure b/configure ++index 12ddffd..8b07818 100755 ++--- a/configure +++++ b/configure ++@@ -6458,7 +6458,7 @@ if test "$gmp_prog_cc_works" = yes; then ++ ++ #if defined (__GNUC__) && ! defined (__cplusplus) ++ typedef unsigned long long t1;typedef t1*t2; ++-void g(){} +++void g(int,const t1 *,t1,t1 *,const t1 *,int){} ++ void h(){} ++ static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0) ++ {t1 c,x,r;int i;if(v0){c=1;for(i=1;i<n;i++){x=up[i];r=x+1;rp[i]=r;}}return c;} ++-- ++2.39.5 ++ +-- +2.39.5 + diff --git a/config/coreboot/fam15h/patches/0017-xgcc-update-nasm-to-2.16.03.patch b/config/coreboot/fam15h/patches/0017-xgcc-update-nasm-to-2.16.03.patch new file mode 100644 index 00000000..8dc52ac9 --- /dev/null +++ b/config/coreboot/fam15h/patches/0017-xgcc-update-nasm-to-2.16.03.patch @@ -0,0 +1,44 @@ +From 0d639c485bdf136e4c5ac7af81fc12da3f21bc46 Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Wed, 30 Apr 2025 04:07:31 +0100 +Subject: [PATCH 1/1] xgcc: update nasm to 2.16.03 + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + util/crossgcc/buildgcc | 2 +- + util/crossgcc/sum/nasm-2.14.02.tar.bz2.cksum | 1 - + util/crossgcc/sum/nasm-2.16.03.tar.bz2.cksum | 1 + + 3 files changed, 2 insertions(+), 2 deletions(-) + delete mode 100644 util/crossgcc/sum/nasm-2.14.02.tar.bz2.cksum + create mode 100644 util/crossgcc/sum/nasm-2.16.03.tar.bz2.cksum + +diff --git a/util/crossgcc/buildgcc b/util/crossgcc/buildgcc +index 0ad1980104..2d48ff038e 100755 +--- a/util/crossgcc/buildgcc ++++ b/util/crossgcc/buildgcc +@@ -61,7 +61,7 @@ EXPAT_VERSION=2.2.7 + CLANG_VERSION=8.0.0 + MAKE_VERSION=4.2.1 + CMAKE_VERSION=3.15.3 +-NASM_VERSION=2.14.02 ++NASM_VERSION=2.16.03 + + # GCC toolchain archive locations + # These are sanitized by the jenkins toolchain test builder, so if +diff --git a/util/crossgcc/sum/nasm-2.14.02.tar.bz2.cksum b/util/crossgcc/sum/nasm-2.14.02.tar.bz2.cksum +deleted file mode 100644 +index f3b9de9d29..0000000000 +--- a/util/crossgcc/sum/nasm-2.14.02.tar.bz2.cksum ++++ /dev/null +@@ -1 +0,0 @@ +-fe098ee4dc9c4c983696c4948e64b23e4098b92b tarballs/nasm-2.14.02.tar.bz2 +diff --git a/util/crossgcc/sum/nasm-2.16.03.tar.bz2.cksum b/util/crossgcc/sum/nasm-2.16.03.tar.bz2.cksum +new file mode 100644 +index 0000000000..9ca23fb0c4 +--- /dev/null ++++ b/util/crossgcc/sum/nasm-2.16.03.tar.bz2.cksum +@@ -0,0 +1 @@ ++c63080347a5c1c8904456fe6c680b722558383b4 tarballs/nasm-2.16.03.tar.bz2 +-- +2.39.5 + diff --git a/config/coreboot/g43t_am3/config/libgfxinit_txtmode b/config/coreboot/g43t_am3/config/libgfxinit_txtmode index dd12a433..aff54e94 100644 --- a/config/coreboot/g43t_am3/config/libgfxinit_txtmode +++ b/config/coreboot/g43t_am3/config/libgfxinit_txtmode @@ -226,6 +226,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -272,7 +273,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -343,7 +343,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -423,6 +422,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/g43t_am3/target.cfg b/config/coreboot/g43t_am3/target.cfg index 3379b716..357eee9a 100644 --- a/config/coreboot/g43t_am3/target.cfg +++ b/config/coreboot/g43t_am3/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_memtest="y" grubtree="nvme" build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/g43t_am3_16mb/config/libgfxinit_txtmode b/config/coreboot/g43t_am3_16mb/config/libgfxinit_txtmode index 7c74ea57..4ec3e295 100644 --- a/config/coreboot/g43t_am3_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/g43t_am3_16mb/config/libgfxinit_txtmode @@ -226,6 +226,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -272,7 +273,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -343,7 +343,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -423,6 +422,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/g43t_am3_16mb/target.cfg b/config/coreboot/g43t_am3_16mb/target.cfg index f2f0a52d..a097a3e8 100644 --- a/config/coreboot/g43t_am3_16mb/target.cfg +++ b/config/coreboot/g43t_am3_16mb/target.cfg @@ -7,4 +7,4 @@ payload_memtest="y" release="n" grubtree="nvme" build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/ga_g41m_es2l/config/libgfxinit_txtmode b/config/coreboot/ga_g41m_es2l/config/libgfxinit_txtmode index 3df9fa65..419b6e30 100644 --- a/config/coreboot/ga_g41m_es2l/config/libgfxinit_txtmode +++ b/config/coreboot/ga_g41m_es2l/config/libgfxinit_txtmode @@ -231,6 +231,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -280,7 +281,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -341,7 +341,6 @@ CONFIG_SUPERIO_ITE_IT8718F=y # Embedded Controllers # CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -421,6 +420,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/gru_bob/config/libgfxinit_corebootfb b/config/coreboot/gru_bob/config/libgfxinit_corebootfb index fe3976b4..6f8128c8 100644 --- a/config/coreboot/gru_bob/config/libgfxinit_corebootfb +++ b/config/coreboot/gru_bob/config/libgfxinit_corebootfb @@ -164,11 +164,19 @@ CONFIG_SPI_FLASH_WINBOND=y # CONFIG_BOARD_GOOGLE_ZAKO is not set # +# Bluey +# +# CONFIG_BOARD_GOOGLE_BLUEY is not set +# CONFIG_BOARD_GOOGLE_QUENBI is not set + +# # Brox # # CONFIG_BOARD_GOOGLE_BROX is not set +# CONFIG_BOARD_GOOGLE_BROX_RTK_EC is not set # CONFIG_BOARD_GOOGLE_BROX_EC_ISH is not set # CONFIG_BOARD_GOOGLE_BROX_TI_PDC is not set +# CONFIG_BOARD_GOOGLE_CABOC is not set # CONFIG_BOARD_GOOGLE_GREENBAYUPOC is not set # CONFIG_BOARD_GOOGLE_JUBILANT is not set # CONFIG_BOARD_GOOGLE_LOTSO is not set @@ -201,6 +209,7 @@ CONFIG_SPI_FLASH_WINBOND=y # CONFIG_BOARD_GOOGLE_GUREN is not set # CONFIG_BOARD_GOOGLE_HADES is not set # CONFIG_BOARD_GOOGLE_KANO is not set +# CONFIG_BOARD_GOOGLE_KALADIN is not set # CONFIG_BOARD_GOOGLE_KINOX is not set # CONFIG_BOARD_GOOGLE_KULDAX is not set # CONFIG_BOARD_GOOGLE_JOXER is not set @@ -248,9 +257,12 @@ CONFIG_SPI_FLASH_WINBOND=y # CONFIG_BOARD_GOOGLE_SUNDANCE is not set # CONFIG_BOARD_GOOGLE_PUJJOGA is not set # CONFIG_BOARD_GOOGLE_PUJJOGATWIN is not set +# CONFIG_BOARD_GOOGLE_PUJJOLO is not set # CONFIG_BOARD_GOOGLE_ORISA is not set # CONFIG_BOARD_GOOGLE_TELITH is not set # CONFIG_BOARD_GOOGLE_MELIKS is not set +# CONFIG_BOARD_GOOGLE_EPIC is not set +# CONFIG_BOARD_GOOGLE_PUJJOCENTO is not set # # Butterfly @@ -361,10 +373,14 @@ CONFIG_SPI_FLASH_WINBOND=y # Fatcat # # CONFIG_BOARD_GOOGLE_FATCAT is not set +# CONFIG_BOARD_GOOGLE_FATCAT4ES is not set # CONFIG_BOARD_GOOGLE_FATCATISH is not set # CONFIG_BOARD_GOOGLE_FATCATITE is not set +# CONFIG_BOARD_GOOGLE_FATCATITE4ES is not set # CONFIG_BOARD_GOOGLE_FATCATNUVO is not set +# CONFIG_BOARD_GOOGLE_FATCATNUVO4ES is not set # CONFIG_BOARD_GOOGLE_FELINO is not set +# CONFIG_BOARD_GOOGLE_FELINO4ES is not set # CONFIG_BOARD_GOOGLE_FRANCKA is not set # CONFIG_BOARD_GOOGLE_KINMEN is not set @@ -534,6 +550,11 @@ CONFIG_BOARD_GOOGLE_BOB=y # Ocelot # # CONFIG_BOARD_GOOGLE_OCELOT is not set +# CONFIG_BOARD_GOOGLE_OCELOTITE is not set +# CONFIG_BOARD_GOOGLE_OCELOTMCHP is not set +# CONFIG_BOARD_GOOGLE_OCELOT4ES is not set +# CONFIG_BOARD_GOOGLE_OCELOTITE4ES is not set +# CONFIG_BOARD_GOOGLE_OCELOTMCHP4ES is not set # # Octopus @@ -663,7 +684,11 @@ CONFIG_BOARD_GOOGLE_BOB=y # # Skywalker # +# CONFIG_BOARD_GOOGLE_ANAKIN is not set +# CONFIG_BOARD_GOOGLE_BAZE is not set +# CONFIG_BOARD_GOOGLE_OBIWAN is not set # CONFIG_BOARD_GOOGLE_SKYWALKER is not set +# CONFIG_BOARD_GOOGLE_YODA is not set # # Slippy @@ -854,6 +879,8 @@ CONFIG_EC_GOOGLE_CHROMEEC_RTC=y # CONFIG_EC_GOOGLE_CHROMEEC_FIRMWARE_EXTERNAL is not set # CONFIG_EC_GOOGLE_CHROMEEC_AUTO_FAN_CTRL is not set CONFIG_EC_GOOGLE_CHROMEEC_READ_BATTERY_LONG_STRING=y +CONFIG_EC_GOOGLE_CHROMEEC_LPC_GENERIC_MEMORY_BASE=0xfe0b0000 +CONFIG_EC_GOOGLE_CHROMEEC_LPC_GENERIC_MEMORY_SIZE=0x10000 CONFIG_MAINBOARD_HAS_CHROMEOS=y # @@ -862,7 +889,6 @@ CONFIG_MAINBOARD_HAS_CHROMEOS=y # end of ChromeOS CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_ARM64=y CONFIG_ARCH_BOOTBLOCK_ARM64=y CONFIG_ARCH_VERSTAGE_ARM64=y @@ -903,6 +929,8 @@ CONFIG_RESOURCE_ALLOCATION_TOP_DOWN=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set CONFIG_COMMON_CBFS_SPI_WRAPPER=y diff --git a/config/coreboot/gru_bob/target.cfg b/config/coreboot/gru_bob/target.cfg index e5866cb7..dda11b5f 100644 --- a/config/coreboot/gru_bob/target.cfg +++ b/config/coreboot/gru_bob/target.cfg @@ -2,5 +2,5 @@ tree="default" xarch="aarch64-elf arm-eabi" -payload_uboot="y" +payload_uboot="arm64" build_depend="u-boot/gru_bob" diff --git a/config/coreboot/gru_kevin/config/libgfxinit_corebootfb b/config/coreboot/gru_kevin/config/libgfxinit_corebootfb index 74b656a6..8a9d72a1 100644 --- a/config/coreboot/gru_kevin/config/libgfxinit_corebootfb +++ b/config/coreboot/gru_kevin/config/libgfxinit_corebootfb @@ -164,11 +164,19 @@ CONFIG_SPI_FLASH_WINBOND=y # CONFIG_BOARD_GOOGLE_ZAKO is not set # +# Bluey +# +# CONFIG_BOARD_GOOGLE_BLUEY is not set +# CONFIG_BOARD_GOOGLE_QUENBI is not set + +# # Brox # # CONFIG_BOARD_GOOGLE_BROX is not set +# CONFIG_BOARD_GOOGLE_BROX_RTK_EC is not set # CONFIG_BOARD_GOOGLE_BROX_EC_ISH is not set # CONFIG_BOARD_GOOGLE_BROX_TI_PDC is not set +# CONFIG_BOARD_GOOGLE_CABOC is not set # CONFIG_BOARD_GOOGLE_GREENBAYUPOC is not set # CONFIG_BOARD_GOOGLE_JUBILANT is not set # CONFIG_BOARD_GOOGLE_LOTSO is not set @@ -201,6 +209,7 @@ CONFIG_SPI_FLASH_WINBOND=y # CONFIG_BOARD_GOOGLE_GUREN is not set # CONFIG_BOARD_GOOGLE_HADES is not set # CONFIG_BOARD_GOOGLE_KANO is not set +# CONFIG_BOARD_GOOGLE_KALADIN is not set # CONFIG_BOARD_GOOGLE_KINOX is not set # CONFIG_BOARD_GOOGLE_KULDAX is not set # CONFIG_BOARD_GOOGLE_JOXER is not set @@ -248,9 +257,12 @@ CONFIG_SPI_FLASH_WINBOND=y # CONFIG_BOARD_GOOGLE_SUNDANCE is not set # CONFIG_BOARD_GOOGLE_PUJJOGA is not set # CONFIG_BOARD_GOOGLE_PUJJOGATWIN is not set +# CONFIG_BOARD_GOOGLE_PUJJOLO is not set # CONFIG_BOARD_GOOGLE_ORISA is not set # CONFIG_BOARD_GOOGLE_TELITH is not set # CONFIG_BOARD_GOOGLE_MELIKS is not set +# CONFIG_BOARD_GOOGLE_EPIC is not set +# CONFIG_BOARD_GOOGLE_PUJJOCENTO is not set # # Butterfly @@ -361,10 +373,14 @@ CONFIG_SPI_FLASH_WINBOND=y # Fatcat # # CONFIG_BOARD_GOOGLE_FATCAT is not set +# CONFIG_BOARD_GOOGLE_FATCAT4ES is not set # CONFIG_BOARD_GOOGLE_FATCATISH is not set # CONFIG_BOARD_GOOGLE_FATCATITE is not set +# CONFIG_BOARD_GOOGLE_FATCATITE4ES is not set # CONFIG_BOARD_GOOGLE_FATCATNUVO is not set +# CONFIG_BOARD_GOOGLE_FATCATNUVO4ES is not set # CONFIG_BOARD_GOOGLE_FELINO is not set +# CONFIG_BOARD_GOOGLE_FELINO4ES is not set # CONFIG_BOARD_GOOGLE_FRANCKA is not set # CONFIG_BOARD_GOOGLE_KINMEN is not set @@ -534,6 +550,11 @@ CONFIG_BOARD_GOOGLE_KEVIN=y # Ocelot # # CONFIG_BOARD_GOOGLE_OCELOT is not set +# CONFIG_BOARD_GOOGLE_OCELOTITE is not set +# CONFIG_BOARD_GOOGLE_OCELOTMCHP is not set +# CONFIG_BOARD_GOOGLE_OCELOT4ES is not set +# CONFIG_BOARD_GOOGLE_OCELOTITE4ES is not set +# CONFIG_BOARD_GOOGLE_OCELOTMCHP4ES is not set # # Octopus @@ -663,7 +684,11 @@ CONFIG_BOARD_GOOGLE_KEVIN=y # # Skywalker # +# CONFIG_BOARD_GOOGLE_ANAKIN is not set +# CONFIG_BOARD_GOOGLE_BAZE is not set +# CONFIG_BOARD_GOOGLE_OBIWAN is not set # CONFIG_BOARD_GOOGLE_SKYWALKER is not set +# CONFIG_BOARD_GOOGLE_YODA is not set # # Slippy @@ -852,6 +877,8 @@ CONFIG_EC_GOOGLE_CHROMEEC_SPI_CHIP=0x0 CONFIG_EC_GOOGLE_CHROMEEC_RTC=y # CONFIG_EC_GOOGLE_CHROMEEC_FIRMWARE_EXTERNAL is not set # CONFIG_EC_GOOGLE_CHROMEEC_AUTO_FAN_CTRL is not set +CONFIG_EC_GOOGLE_CHROMEEC_LPC_GENERIC_MEMORY_BASE=0xfe0b0000 +CONFIG_EC_GOOGLE_CHROMEEC_LPC_GENERIC_MEMORY_SIZE=0x10000 CONFIG_MAINBOARD_HAS_CHROMEOS=y # @@ -860,7 +887,6 @@ CONFIG_MAINBOARD_HAS_CHROMEOS=y # end of ChromeOS CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_ARM64=y CONFIG_ARCH_BOOTBLOCK_ARM64=y CONFIG_ARCH_VERSTAGE_ARM64=y @@ -901,6 +927,8 @@ CONFIG_RESOURCE_ALLOCATION_TOP_DOWN=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set CONFIG_COMMON_CBFS_SPI_WRAPPER=y diff --git a/config/coreboot/gru_kevin/target.cfg b/config/coreboot/gru_kevin/target.cfg index 81a93f27..26fd442b 100644 --- a/config/coreboot/gru_kevin/target.cfg +++ b/config/coreboot/gru_kevin/target.cfg @@ -2,5 +2,5 @@ tree="default" xarch="aarch64-elf arm-eabi" -payload_uboot="y" +payload_uboot="arm64" build_depend="u-boot/gru_kevin" diff --git a/config/coreboot/hp2170p_16mb/config/libgfxinit_corebootfb b/config/coreboot/hp2170p_16mb/config/libgfxinit_corebootfb index c22c42ee..e734dadb 100644 --- a/config/coreboot/hp2170p_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/hp2170p_16mb/config/libgfxinit_corebootfb @@ -173,12 +173,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -259,6 +261,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -303,7 +306,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -401,7 +403,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -480,6 +481,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp2170p_16mb/config/libgfxinit_txtmode b/config/coreboot/hp2170p_16mb/config/libgfxinit_txtmode index 885ac431..517ad32d 100644 --- a/config/coreboot/hp2170p_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/hp2170p_16mb/config/libgfxinit_txtmode @@ -171,12 +171,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -257,6 +259,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -301,7 +304,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -399,7 +401,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -476,6 +477,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp2170p_16mb/target.cfg b/config/coreboot/hp2170p_16mb/target.cfg index e1cffa41..d6868831 100644 --- a/config/coreboot/hp2170p_16mb/target.cfg +++ b/config/coreboot/hp2170p_16mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="hp2170p" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/hp2560p_8mb/config/libgfxinit_corebootfb b/config/coreboot/hp2560p_8mb/config/libgfxinit_corebootfb index e3cd7fe5..7b953cff 100644 --- a/config/coreboot/hp2560p_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/hp2560p_8mb/config/libgfxinit_corebootfb @@ -171,12 +171,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -256,6 +258,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -300,7 +303,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -397,7 +399,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -476,6 +477,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp2560p_8mb/config/libgfxinit_txtmode b/config/coreboot/hp2560p_8mb/config/libgfxinit_txtmode index b6b4872e..d9be7fdf 100644 --- a/config/coreboot/hp2560p_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/hp2560p_8mb/config/libgfxinit_txtmode @@ -169,12 +169,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -254,6 +256,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -298,7 +301,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -395,7 +397,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -472,6 +473,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp2560p_8mb/target.cfg b/config/coreboot/hp2560p_8mb/target.cfg index 5715390e..fce385d9 100644 --- a/config/coreboot/hp2560p_8mb/target.cfg +++ b/config/coreboot/hp2560p_8mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="hp2560p" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/hp2570p_16mb/config/libgfxinit_corebootfb b/config/coreboot/hp2570p_16mb/config/libgfxinit_corebootfb index fe6c5f1f..ef2bd843 100644 --- a/config/coreboot/hp2570p_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/hp2570p_16mb/config/libgfxinit_corebootfb @@ -170,12 +170,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -255,6 +257,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -299,7 +302,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -396,7 +398,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -474,6 +475,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp2570p_16mb/config/libgfxinit_txtmode b/config/coreboot/hp2570p_16mb/config/libgfxinit_txtmode index 6c8c3d66..0df99d3c 100644 --- a/config/coreboot/hp2570p_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/hp2570p_16mb/config/libgfxinit_txtmode @@ -168,12 +168,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -253,6 +255,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -297,7 +300,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -394,7 +396,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -470,6 +471,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp2570p_16mb/target.cfg b/config/coreboot/hp2570p_16mb/target.cfg index fb5d41e1..26c80f5f 100644 --- a/config/coreboot/hp2570p_16mb/target.cfg +++ b/config/coreboot/hp2570p_16mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="hp2570p" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/hp8200sff_4mb/config/libgfxinit_corebootfb b/config/coreboot/hp8200sff_4mb/config/libgfxinit_corebootfb index d93c4641..ef110ae5 100644 --- a/config/coreboot/hp8200sff_4mb/config/libgfxinit_corebootfb +++ b/config/coreboot/hp8200sff_4mb/config/libgfxinit_corebootfb @@ -173,12 +173,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC=y # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -256,6 +258,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -300,7 +303,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -386,7 +388,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -465,6 +466,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp8200sff_4mb/config/libgfxinit_txtmode b/config/coreboot/hp8200sff_4mb/config/libgfxinit_txtmode index b4badd1d..0df68553 100644 --- a/config/coreboot/hp8200sff_4mb/config/libgfxinit_txtmode +++ b/config/coreboot/hp8200sff_4mb/config/libgfxinit_txtmode @@ -171,12 +171,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC=y # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -254,6 +256,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -298,7 +301,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -384,7 +386,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -461,6 +462,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp8200sff_4mb/target.cfg b/config/coreboot/hp8200sff_4mb/target.cfg index 521ba0ec..76effd9f 100644 --- a/config/coreboot/hp8200sff_4mb/target.cfg +++ b/config/coreboot/hp8200sff_4mb/target.cfg @@ -9,4 +9,4 @@ grub_scan_disk="nvme ahci" grubtree="nvme" vcfg="hp8200sff" build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/hp8200sff_8mb/config/libgfxinit_corebootfb b/config/coreboot/hp8200sff_8mb/config/libgfxinit_corebootfb index 9dfa0452..4a46ba5b 100644 --- a/config/coreboot/hp8200sff_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/hp8200sff_8mb/config/libgfxinit_corebootfb @@ -173,12 +173,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC=y # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -256,6 +258,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -300,7 +303,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -386,7 +388,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -465,6 +466,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp8200sff_8mb/config/libgfxinit_txtmode b/config/coreboot/hp8200sff_8mb/config/libgfxinit_txtmode index 2ebfd145..6295a22b 100644 --- a/config/coreboot/hp8200sff_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/hp8200sff_8mb/config/libgfxinit_txtmode @@ -171,12 +171,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC=y # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -254,6 +256,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -298,7 +301,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -384,7 +386,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -461,6 +462,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp8200sff_8mb/target.cfg b/config/coreboot/hp8200sff_8mb/target.cfg index 521ba0ec..76effd9f 100644 --- a/config/coreboot/hp8200sff_8mb/target.cfg +++ b/config/coreboot/hp8200sff_8mb/target.cfg @@ -9,4 +9,4 @@ grub_scan_disk="nvme ahci" grubtree="nvme" vcfg="hp8200sff" build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/hp820g2_12mb/config/libgfxinit_corebootfb b/config/coreboot/hp820g2_12mb/config/libgfxinit_corebootfb index 2e3ab0af..bef0f52e 100644 --- a/config/coreboot/hp820g2_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/hp820g2_12mb/config/libgfxinit_corebootfb @@ -169,12 +169,14 @@ CONFIG_PCIEXP_AER=y CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set CONFIG_BOARD_HP_ELITEBOOK_820_G2=y # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -250,6 +252,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfe000000 @@ -302,7 +305,6 @@ CONFIG_UDELAY_TSC=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y -CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -361,7 +363,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -434,6 +435,8 @@ CONFIG_RESOURCE_ALLOCATION_TOP_DOWN=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y CONFIG_MRC_SETTINGS_PROTECT=y diff --git a/config/coreboot/hp820g2_12mb/config/libgfxinit_txtmode b/config/coreboot/hp820g2_12mb/config/libgfxinit_txtmode index cdcee013..9ddee822 100644 --- a/config/coreboot/hp820g2_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/hp820g2_12mb/config/libgfxinit_txtmode @@ -167,12 +167,14 @@ CONFIG_PCIEXP_AER=y CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set CONFIG_BOARD_HP_ELITEBOOK_820_G2=y # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -248,6 +250,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfe000000 @@ -300,7 +303,6 @@ CONFIG_UDELAY_TSC=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y -CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -359,7 +361,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -430,6 +431,8 @@ CONFIG_RESOURCE_ALLOCATION_TOP_DOWN=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y CONFIG_MRC_SETTINGS_PROTECT=y diff --git a/config/coreboot/hp820g2_12mb/target.cfg b/config/coreboot/hp820g2_12mb/target.cfg index 7fe45119..8a69483f 100644 --- a/config/coreboot/hp820g2_12mb/target.cfg +++ b/config/coreboot/hp820g2_12mb/target.cfg @@ -6,7 +6,7 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="nvme ahci" -grubtree="xhci" +grubtree="xhci_nvme" vcfg="hp820g2" -build_depend="seabios/default grub/xhci memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +build_depend="seabios/default grub/xhci_nvme memtest86plus u-boot/amd64coreboot" +payload_uboot="amd64" diff --git a/config/coreboot/hp8300cmt_16mb/config/libgfxinit_corebootfb b/config/coreboot/hp8300cmt_16mb/config/libgfxinit_corebootfb index 61881e32..3f83d6ab 100644 --- a/config/coreboot/hp8300cmt_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/hp8300cmt_16mb/config/libgfxinit_corebootfb @@ -172,12 +172,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT=y # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -254,6 +256,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -298,7 +301,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -384,7 +386,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -463,6 +464,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp8300cmt_16mb/config/libgfxinit_txtmode b/config/coreboot/hp8300cmt_16mb/config/libgfxinit_txtmode index 471a76b6..814275e7 100644 --- a/config/coreboot/hp8300cmt_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/hp8300cmt_16mb/config/libgfxinit_txtmode @@ -170,12 +170,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT=y # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -252,6 +254,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -296,7 +299,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -382,7 +384,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -459,6 +460,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp8300cmt_16mb/target.cfg b/config/coreboot/hp8300cmt_16mb/target.cfg index 5bd323c9..f3fb43a7 100644 --- a/config/coreboot/hp8300cmt_16mb/target.cfg +++ b/config/coreboot/hp8300cmt_16mb/target.cfg @@ -9,4 +9,4 @@ grub_scan_disk="nvme ahci" grubtree="nvme" vcfg="ivybridge" build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/hp8300usdt_16mb/config/libgfxinit_corebootfb b/config/coreboot/hp8300usdt_16mb/config/libgfxinit_corebootfb index 309d8364..64dc2901 100644 --- a/config/coreboot/hp8300usdt_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/hp8300usdt_16mb/config/libgfxinit_corebootfb @@ -172,12 +172,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -255,6 +257,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -299,7 +302,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -385,7 +387,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -464,6 +465,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp8300usdt_16mb/config/libgfxinit_txtmode b/config/coreboot/hp8300usdt_16mb/config/libgfxinit_txtmode index c099a2f0..9330e338 100644 --- a/config/coreboot/hp8300usdt_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/hp8300usdt_16mb/config/libgfxinit_txtmode @@ -170,12 +170,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -253,6 +255,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -297,7 +300,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -383,7 +385,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -460,6 +461,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp8300usdt_16mb/target.cfg b/config/coreboot/hp8300usdt_16mb/target.cfg index 6cbab731..595ad782 100644 --- a/config/coreboot/hp8300usdt_16mb/target.cfg +++ b/config/coreboot/hp8300usdt_16mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="ivybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/hp8460pintel_8mb/config/libgfxinit_corebootfb b/config/coreboot/hp8460pintel_8mb/config/libgfxinit_corebootfb index e3f48f7b..31b9d737 100644 --- a/config/coreboot/hp8460pintel_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/hp8460pintel_8mb/config/libgfxinit_corebootfb @@ -173,12 +173,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -259,6 +261,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -303,7 +306,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -401,7 +403,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -480,6 +481,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp8460pintel_8mb/config/libgfxinit_txtmode b/config/coreboot/hp8460pintel_8mb/config/libgfxinit_txtmode index 8433054e..e24295f3 100644 --- a/config/coreboot/hp8460pintel_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/hp8460pintel_8mb/config/libgfxinit_txtmode @@ -171,12 +171,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -257,6 +259,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -301,7 +304,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -399,7 +401,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -476,6 +477,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp8460pintel_8mb/target.cfg b/config/coreboot/hp8460pintel_8mb/target.cfg index d6179420..255bfac7 100644 --- a/config/coreboot/hp8460pintel_8mb/target.cfg +++ b/config/coreboot/hp8460pintel_8mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="hp8460pintel" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/hp8470pintel_16mb/config/libgfxinit_corebootfb b/config/coreboot/hp8470pintel_16mb/config/libgfxinit_corebootfb index 3ba1a3e4..5a472c2a 100644 --- a/config/coreboot/hp8470pintel_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/hp8470pintel_16mb/config/libgfxinit_corebootfb @@ -172,12 +172,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -258,6 +260,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -302,7 +305,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -400,7 +402,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -478,6 +479,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp8470pintel_16mb/config/libgfxinit_txtmode b/config/coreboot/hp8470pintel_16mb/config/libgfxinit_txtmode index eb1318b3..19127844 100644 --- a/config/coreboot/hp8470pintel_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/hp8470pintel_16mb/config/libgfxinit_txtmode @@ -170,12 +170,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -256,6 +258,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -300,7 +303,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -398,7 +400,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -474,6 +475,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp8470pintel_16mb/target.cfg b/config/coreboot/hp8470pintel_16mb/target.cfg index 65828b25..01b2ed5b 100644 --- a/config/coreboot/hp8470pintel_16mb/target.cfg +++ b/config/coreboot/hp8470pintel_16mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="hp8470pintel" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/hp8560w_8mb/config/normal b/config/coreboot/hp8560w_8mb/config/normal index 577487c4..4c1cc1b9 100644 --- a/config/coreboot/hp8560w_8mb/config/normal +++ b/config/coreboot/hp8560w_8mb/config/normal @@ -169,12 +169,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -254,6 +256,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -298,7 +301,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -396,7 +398,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -459,6 +460,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp9470m_16mb/config/libgfxinit_corebootfb b/config/coreboot/hp9470m_16mb/config/libgfxinit_corebootfb index 06d1ad6f..e931b384 100644 --- a/config/coreboot/hp9470m_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/hp9470m_16mb/config/libgfxinit_corebootfb @@ -171,12 +171,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -256,6 +258,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -300,7 +303,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -397,7 +399,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -476,6 +477,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp9470m_16mb/config/libgfxinit_txtmode b/config/coreboot/hp9470m_16mb/config/libgfxinit_txtmode index e345c0ea..5b5acc17 100644 --- a/config/coreboot/hp9470m_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/hp9470m_16mb/config/libgfxinit_txtmode @@ -169,12 +169,14 @@ CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set # CONFIG_BOARD_HP_280_G2 is not set # CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set # CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set # CONFIG_BOARD_HP_FOLIO_9480M is not set # CONFIG_BOARD_HP_PRO_3400_SERIES is not set # CONFIG_BOARD_HP_PRO_3500_SERIES is not set +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set # CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set # CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set @@ -254,6 +256,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -298,7 +301,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -395,7 +397,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -472,6 +473,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/hp9470m_16mb/target.cfg b/config/coreboot/hp9470m_16mb/target.cfg index e4dbdc93..6ebd81c5 100644 --- a/config/coreboot/hp9470m_16mb/target.cfg +++ b/config/coreboot/hp9470m_16mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="hp9470m" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/hppro3500series_8mb/config/libgfxinit_corebootfb b/config/coreboot/hppro3500series_8mb/config/libgfxinit_corebootfb new file mode 100644 index 00000000..c6c8596c --- /dev/null +++ b/config/coreboot/hppro3500series_8mb/config/libgfxinit_corebootfb @@ -0,0 +1,681 @@ +# +# Automatically generated file; DO NOT EDIT. +# coreboot configuration +# + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_CBFS_PREFIX="fallback" +CONFIG_COMPILER_GCC=y +# CONFIG_COMPILER_LLVM_CLANG is not set +# CONFIG_ANY_TOOLCHAIN is not set +# CONFIG_CCACHE is not set +# CONFIG_LTO is not set +# CONFIG_IWYU is not set +# CONFIG_FMD_GENPARSER is not set +# CONFIG_UTIL_GENPARSER is not set +CONFIG_OPTION_BACKEND_NONE=y +# CONFIG_USE_OPTION_TABLE is not set +# CONFIG_USE_CBFS_FILE_OPTION_BACKEND is not set +CONFIG_COMPRESS_RAMSTAGE_LZMA=y +# CONFIG_COMPRESS_RAMSTAGE_LZ4 is not set +CONFIG_SEPARATE_ROMSTAGE=y +CONFIG_INCLUDE_CONFIG_FILE=y +CONFIG_COLLECT_TIMESTAMPS=y +# CONFIG_TIMESTAMPS_ON_CONSOLE is not set +CONFIG_USE_BLOBS=y +# CONFIG_USE_AMD_BLOBS is not set +# CONFIG_USE_QC_BLOBS is not set +# CONFIG_COVERAGE is not set +# CONFIG_UBSAN is not set +CONFIG_HAVE_ASAN_IN_RAMSTAGE=y +# CONFIG_ASAN is not set +# CONFIG_NO_STAGE_CACHE is not set +CONFIG_TSEG_STAGE_CACHE=y +# CONFIG_UPDATE_IMAGE is not set +# CONFIG_BOOTSPLASH_IMAGE is not set + +# +# Software Bill Of Materials (SBOM) +# +# CONFIG_SBOM is not set +# end of Software Bill Of Materials (SBOM) +# end of General setup + +# +# Mainboard +# + +# +# Important: Run 'make distclean' before switching boards +# +# CONFIG_VENDOR_51NB is not set +# CONFIG_VENDOR_ACER is not set +# CONFIG_VENDOR_AMD is not set +# CONFIG_VENDOR_AOOSTAR is not set +# CONFIG_VENDOR_AOPEN is not set +# CONFIG_VENDOR_APPLE is not set +# CONFIG_VENDOR_ARM is not set +# CONFIG_VENDOR_ASROCK is not set +# CONFIG_VENDOR_ASUS is not set +# CONFIG_VENDOR_BIOSTAR is not set +# CONFIG_VENDOR_BOSTENTECH is not set +# CONFIG_VENDOR_BYTEDANCE is not set +# CONFIG_VENDOR_CAVIUM is not set +# CONFIG_VENDOR_CLEVO is not set +# CONFIG_VENDOR_COMPULAB is not set +# CONFIG_VENDOR_CWWK is not set +# CONFIG_VENDOR_DELL is not set +# CONFIG_VENDOR_EMULATION is not set +# CONFIG_VENDOR_ERYING is not set +# CONFIG_VENDOR_EXAMPLE is not set +# CONFIG_VENDOR_FACEBOOK is not set +# CONFIG_VENDOR_FOXCONN is not set +# CONFIG_VENDOR_FRAMEWORK is not set +# CONFIG_VENDOR_GETAC is not set +# CONFIG_VENDOR_GIGABYTE is not set +# CONFIG_VENDOR_GOOGLE is not set +# CONFIG_VENDOR_HARDKERNEL is not set +CONFIG_VENDOR_HP=y +# CONFIG_VENDOR_IBASE is not set +# CONFIG_VENDOR_IBM is not set +# CONFIG_VENDOR_INTEL is not set +# CONFIG_VENDOR_INVENTEC is not set +# CONFIG_VENDOR_KONTRON is not set +# CONFIG_VENDOR_LATTEPANDA is not set +# CONFIG_VENDOR_LENOVO is not set +# CONFIG_VENDOR_LIBRETREND is not set +# CONFIG_VENDOR_MITAC_COMPUTING is not set +# CONFIG_VENDOR_MSI is not set +# CONFIG_VENDOR_NOVACUSTOM is not set +# CONFIG_VENDOR_OCP is not set +# CONFIG_VENDOR_OPENCELLULAR is not set +# CONFIG_VENDOR_PACKARDBELL is not set +# CONFIG_VENDOR_PCENGINES is not set +# CONFIG_VENDOR_PINE64 is not set +# CONFIG_VENDOR_PORTWELL is not set +# CONFIG_VENDOR_PRODRIVE is not set +# CONFIG_VENDOR_PROTECTLI is not set +# CONFIG_VENDOR_PURISM is not set +# CONFIG_VENDOR_RAPTOR_CS is not set +# CONFIG_VENDOR_RAZER is not set +# CONFIG_VENDOR_RODA is not set +# CONFIG_VENDOR_SAMSUNG is not set +# CONFIG_VENDOR_SAPPHIRE is not set +# CONFIG_VENDOR_SIEMENS is not set +# CONFIG_VENDOR_SIFIVE is not set +# CONFIG_VENDOR_STARLABS is not set +# CONFIG_VENDOR_SUPERMICRO is not set +# CONFIG_VENDOR_SYSTEM76 is not set +# CONFIG_VENDOR_TI is not set +# CONFIG_VENDOR_TOPTON is not set +# CONFIG_VENDOR_UP is not set +# CONFIG_VENDOR_VIA is not set +CONFIG_MAINBOARD_PART_NUMBER="Pro 3500 Series" +CONFIG_MAINBOARD_VERSION="1.0" +CONFIG_MAINBOARD_DIR="hp/pro_3x00_series" +CONFIG_VGA_BIOS_ID="8086,0106" +CONFIG_DIMM_MAX=4 +CONFIG_DIMM_SPD_SIZE=256 +CONFIG_FMDFILE="" +# CONFIG_NO_POST is not set +CONFIG_MAINBOARD_VENDOR="HP" +CONFIG_CBFS_SIZE=0x7E7000 +CONFIG_LINEAR_FRAMEBUFFER_MAX_HEIGHT=2160 +CONFIG_LINEAR_FRAMEBUFFER_MAX_WIDTH=3840 +CONFIG_MAX_CPUS=8 +# CONFIG_ONBOARD_VGA_IS_PRIMARY is not set +CONFIG_POST_DEVICE=y +CONFIG_POST_IO=y +CONFIG_VARIANT_DIR="pro_3500_series" +CONFIG_OVERRIDE_DEVICETREE="variants/$(CONFIG_VARIANT_DIR)/overridetree.cb" +CONFIG_DEVICETREE="devicetree.cb" +# CONFIG_VBOOT is not set +# CONFIG_VGA_BIOS is not set +CONFIG_PCIEXP_ASPM=y +# CONFIG_PCIEXP_L1_SUB_STATE is not set +# CONFIG_PCIEXP_CLK_PM is not set +CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="HP" +CONFIG_DRAM_RESET_GATE_GPIO=60 +CONFIG_ECAM_MMCONF_BASE_ADDRESS=0xf0000000 +CONFIG_ECAM_MMCONF_BUS_NUMBER=64 +CONFIG_MEMLAYOUT_LD_FILE="src/arch/x86/memlayout.ld" +# CONFIG_FATAL_ASSERTS is not set +CONFIG_USBDEBUG_HCD_INDEX=2 +CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/data.vbt" +CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00 +CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME="Pro 3500 Series" +# CONFIG_CONSOLE_POST is not set +CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" +CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" +CONFIG_MAX_SOCKET=1 +CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 +CONFIG_DCACHE_RAM_BASE=0xfefe0000 +CONFIG_DCACHE_RAM_SIZE=0x20000 +CONFIG_C_ENV_BOOTBLOCK_SIZE=0x40000 +CONFIG_DCACHE_BSP_STACK_SIZE=0x10000 +CONFIG_MAX_ACPI_TABLE_SIZE_KB=144 +CONFIG_HAVE_INTEL_FIRMWARE=y +CONFIG_MRC_SETTINGS_CACHE_SIZE=0x10000 +CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_DRIVERS_INTEL_WIFI=y +CONFIG_IFD_BIN_PATH="../../../config/ifd/hppro3500series/ifd" +CONFIG_ME_BIN_PATH="../../../vendorfiles/hppro3500series/me.bin" +CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 +CONFIG_CARDBUS_PLUGIN_SUPPORT=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set +# CONFIG_BOARD_HP_280_G2 is not set +# CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set +# CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set +# CONFIG_BOARD_HP_FOLIO_9480M is not set +# CONFIG_BOARD_HP_PRO_3400_SERIES is not set +CONFIG_BOARD_HP_PRO_3500_SERIES=y +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set +# CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set +# CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set +# CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set +# CONFIG_BOARD_HP_COMPAQ_ELITE_8300_USDT is not set +# CONFIG_BOARD_HP_Z220_CMT_WORKSTATION is not set +# CONFIG_BOARD_HP_Z220_SFF_WORKSTATION is not set +# CONFIG_BOARD_HP_2170P is not set +# CONFIG_BOARD_HP_2560P is not set +# CONFIG_BOARD_HP_2570P is not set +# CONFIG_BOARD_HP_2760P is not set +# CONFIG_BOARD_HP_8460P is not set +# CONFIG_BOARD_HP_8470P is not set +# CONFIG_BOARD_HP_8560W is not set +# CONFIG_BOARD_HP_8770W is not set +# CONFIG_BOARD_HP_FOLIO_9470M is not set +# CONFIG_BOARD_HP_PROBOOK_6360B is not set +# CONFIG_BOARD_HP_REVOLVE_810_G1 is not set +CONFIG_BOARD_HP_PRO_3X00_SERIES_COMMON=y +# CONFIG_DEBUG_SMI is not set +CONFIG_HAVE_IFD_BIN=y +CONFIG_PCIEXP_HOTPLUG_BUSES=8 +CONFIG_PCIEXP_HOTPLUG_MEM=0x800000 +CONFIG_PCIEXP_HOTPLUG_PREFETCH_MEM=0x10000000 +CONFIG_PS2K_EISAID="PNP0303" +CONFIG_PS2M_EISAID="PNP0F13" +CONFIG_GFX_GMA_PANEL_1_PORT="eDP" +CONFIG_D3COLD_SUPPORT=y +CONFIG_GFX_GMA_PANEL_1_ON_EDP=y +# CONFIG_DRIVERS_UART_8250IO is not set +CONFIG_PC_CMOS_BASE_PORT_BANK1=0x72 +CONFIG_HEAP_SIZE=0x100000 +CONFIG_EC_GPE_SCI=0x50 +CONFIG_EC_STARLABS_BATTERY_MODEL="Unknown" +CONFIG_EC_STARLABS_BATTERY_TYPE="LION" +CONFIG_EC_STARLABS_BATTERY_OEM="Unknown" +CONFIG_BOARD_ROMSIZE_KB_8192=y +# CONFIG_COREBOOT_ROMSIZE_KB_256 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_512 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_1024 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_2048 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_4096 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_5120 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_6144 is not set +CONFIG_COREBOOT_ROMSIZE_KB_8192=y +# CONFIG_COREBOOT_ROMSIZE_KB_10240 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_12288 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_16384 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_24576 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_32768 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_65536 is not set +CONFIG_COREBOOT_ROMSIZE_KB=8192 +CONFIG_ROM_SIZE=0x00800000 +CONFIG_HAVE_POWER_STATE_AFTER_FAILURE=y +CONFIG_HAVE_POWER_STATE_PREVIOUS_AFTER_FAILURE=y +CONFIG_POWER_STATE_OFF_AFTER_FAILURE=y +# CONFIG_POWER_STATE_ON_AFTER_FAILURE is not set +# CONFIG_POWER_STATE_PREVIOUS_AFTER_FAILURE is not set +CONFIG_MAINBOARD_POWER_FAILURE_STATE=0 +# end of Mainboard + +# +# Chipset +# + +# +# SoC +# +CONFIG_CHIPSET_DEVICETREE="northbridge/intel/sandybridge/chipset.cb" +CONFIG_CBFS_MCACHE_SIZE=0x4000 +CONFIG_ROMSTAGE_ADDR=0x2000000 +CONFIG_VERSTAGE_ADDR=0x2000000 +CONFIG_SMM_TSEG_SIZE=0x800000 +CONFIG_SMM_RESERVED_SIZE=0x100000 +CONFIG_SMM_MODULE_STACK_SIZE=0x400 +# CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 +CONFIG_SERIRQ_CONTINUOUS_MODE=y +CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 +CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 +CONFIG_EHCI_BAR=0xfef00000 +CONFIG_ACPI_CPU_STRING="CP%02X" +CONFIG_STACK_SIZE=0x2000 +CONFIG_IED_REGION_SIZE=0x400000 +CONFIG_INTEL_GMA_BCLV_OFFSET=0x48254 +CONFIG_INTEL_GMA_BCLV_WIDTH=16 +CONFIG_INTEL_GMA_BCLM_OFFSET=0xc8256 +CONFIG_INTEL_GMA_BCLM_WIDTH=16 +CONFIG_BOOTBLOCK_IN_CBFS=y +CONFIG_DCACHE_RAM_MRC_VAR_SIZE=0x0 +CONFIG_HPET_MIN_TICKS=0x80 +CONFIG_FIXED_MCHBAR_MMIO_BASE=0xfed10000 +CONFIG_FIXED_DMIBAR_MMIO_BASE=0xfed18000 +CONFIG_FIXED_EPBAR_MMIO_BASE=0xfed19000 +CONFIG_PCIEXP_COMMON_CLOCK=y +CONFIG_SOC_PHYSICAL_ADDRESS_WIDTH=0 +# CONFIG_ALWAYS_ALLOW_ABOVE_4G_ALLOCATION is not set +CONFIG_FIXED_SMBUS_IO_BASE=0x400 +CONFIG_CBFS_CACHE_ALIGN=8 + +# +# CPU +# +CONFIG_CPU_INTEL_MODEL_206AX=y +CONFIG_CPU_INTEL_COMMON=y +CONFIG_ENABLE_VMX=y +CONFIG_SET_IA32_FC_LOCK_BIT=y +CONFIG_SET_MSR_AESNI_LOCK_BIT=y +CONFIG_CPU_INTEL_COMMON_TIMEBASE=y +CONFIG_CPU_INTEL_COMMON_SMM=y +CONFIG_MICROCODE_UPDATE_PRE_RAM=y +CONFIG_PARALLEL_MP=y +CONFIG_XAPIC_ONLY=y +# CONFIG_X2APIC_ONLY is not set +# CONFIG_X2APIC_RUNTIME is not set +# CONFIG_X2APIC_LATE_WORKAROUND is not set +CONFIG_UDELAY_TSC=y +CONFIG_TSC_MONOTONIC_TIMER=y +CONFIG_TSC_SYNC_MFENCE=y +CONFIG_HAVE_SMI_HANDLER=y +CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y +CONFIG_SMM_TSEG=y +CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 +CONFIG_AP_STACK_SIZE=0x800 +CONFIG_SMP=y +CONFIG_SSE=y +CONFIG_SSE2=y +CONFIG_SUPPORT_CPU_UCODE_IN_CBFS=y +CONFIG_USE_CPU_MICROCODE_CBFS_BINS=y +CONFIG_CPU_MICROCODE_CBFS_DEFAULT_BINS=y +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS is not set +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER is not set +# CONFIG_CPU_MICROCODE_CBFS_NONE is not set + +# +# Northbridge +# +CONFIG_USE_NATIVE_RAMINIT=y +CONFIG_NORTHBRIDGE_INTEL_SANDYBRIDGE=y +# CONFIG_NATIVE_RAMINIT_IGNORE_MAX_MEM_FUSES is not set +# CONFIG_NATIVE_RAMINIT_IGNORE_XMP_MAX_DIMMS is not set +# CONFIG_NATIVE_RAMINIT_IGNORE_XMP_REQUESTED_VOLTAGE is not set +# CONFIG_RAMINIT_ALWAYS_ALLOW_DLL_OFF is not set +CONFIG_RAMINIT_ENABLE_ECC=y +CONFIG_IGD_DEFAULT_UMA_SIZE_32MB=y +# CONFIG_IGD_DEFAULT_UMA_SIZE_64MB is not set +# CONFIG_IGD_DEFAULT_UMA_SIZE_96MB is not set +# CONFIG_IGD_DEFAULT_UMA_SIZE_128MB is not set +CONFIG_IGD_DEFAULT_UMA_INDEX=0 + +# +# Southbridge +# +CONFIG_SOUTHBRIDGE_INTEL_BD82X6X_COMMON=y +CONFIG_SOUTHBRIDGE_INTEL_BD82X6X=y +CONFIG_HIDE_MEI_ON_ERROR=y +CONFIG_PCIEXP_HOTPLUG=y +CONFIG_INTEL_DESCRIPTOR_MODE_REQUIRED=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RESET=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RTC=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMCLIB=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMBASE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_GPIO=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_ME=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_EARLY_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI_ICH9=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PIRQ_ACPI_GEN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RCBA_PIRQ=y +CONFIG_HAVE_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMM=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_FINALIZE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_USB_DEBUG=y +CONFIG_INTEL_DESCRIPTOR_MODE_CAPABLE=y +# CONFIG_VALIDATE_INTEL_DESCRIPTOR is not set +CONFIG_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_TCO_SPACE_NOT_YET_SPLIT=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_WATCHDOG=y +CONFIG_FIXED_RCBA_MMIO_BASE=0xfed1c000 +CONFIG_RCBA_LENGTH=0x4000 + +# +# Super I/O +# +CONFIG_SUPERIO_ITE_COMMON_PRE_RAM=y +CONFIG_SUPERIO_ITE_COMMON_GPIO_PRE_RAM=y +CONFIG_SUPERIO_ITE_COMMON_NUM_GPIO_SETS=6 +CONFIG_SUPERIO_ITE_ENV_CTRL=y +CONFIG_SUPERIO_ITE_ENV_CTRL_8BIT_PWM=y +CONFIG_SUPERIO_ITE_ENV_CTRL_PWM_FREQ2=y +CONFIG_SUPERIO_ITE_ENV_CTRL_7BIT_SLOPE_REG=y +CONFIG_SUPERIO_ITE_ENV_CTRL_EXT_ANY_TMPIN=y +CONFIG_SUPERIO_ITE_ENV_CTRL_NO_FULLSPEED_SETTING=y +CONFIG_SUPERIO_ITE_ENV_CTRL_FAN_VECTOR=y +CONFIG_SUPERIO_ITE_ENV_CTRL_FAN_VECTOR_RANGED=y +CONFIG_SUPERIO_ITE_IT8772F=y + +# +# Embedded Controllers +# + +# +# Intel Firmware +# +CONFIG_HAVE_ME_BIN=y +# CONFIG_STITCH_ME_BIN is not set +# CONFIG_CHECK_ME is not set +# CONFIG_ME_REGION_ALLOW_CPU_READ_ACCESS is not set +# CONFIG_USE_ME_CLEANER is not set +# CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION is not set +# CONFIG_LOCK_MANAGEMENT_ENGINE is not set +CONFIG_UNLOCK_FLASH_REGIONS=y +CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 +CONFIG_ARCH_X86=y +CONFIG_ARCH_BOOTBLOCK_X86_32=y +CONFIG_ARCH_VERSTAGE_X86_32=y +CONFIG_ARCH_ROMSTAGE_X86_32=y +CONFIG_ARCH_POSTCAR_X86_32=y +CONFIG_ARCH_RAMSTAGE_X86_32=y +CONFIG_ARCH_ALL_STAGES_X86_32=y +CONFIG_HAVE_X86_64_SUPPORT=y +CONFIG_RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT=y +CONFIG_X86_TOP4G_BOOTMEDIA_MAP=y +CONFIG_POSTRAM_CBFS_CACHE_IN_BSS=y +CONFIG_RAMSTAGE_CBFS_CACHE_SIZE=0x4000 +CONFIG_PC80_SYSTEM=y +CONFIG_HAVE_CMOS_DEFAULT=y +CONFIG_POSTCAR_STAGE=y +CONFIG_BOOTBLOCK_SIMPLE=y +# CONFIG_BOOTBLOCK_NORMAL is not set +CONFIG_COLLECT_TIMESTAMPS_TSC=y +CONFIG_HAVE_CF9_RESET=y +CONFIG_DEBUG_HW_BREAKPOINTS=y +CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS=y +# CONFIG_DUMP_SMBIOS_TYPE17 is not set +CONFIG_X86_BOOTBLOCK_EXTRA_PROGRAM_SZ=0 +CONFIG_DEFAULT_EBDA_LOWMEM=0x100000 +CONFIG_DEFAULT_EBDA_SEGMENT=0xF600 +CONFIG_DEFAULT_EBDA_SIZE=0x400 +# end of Chipset + +# +# Devices +# +CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y +CONFIG_HAVE_LINEAR_FRAMEBUFFER=y +CONFIG_MAINBOARD_HAS_LIBGFXINIT=y +CONFIG_MAINBOARD_USE_LIBGFXINIT=y +# CONFIG_VGA_ROM_RUN is not set +# CONFIG_NO_GFX_INIT is not set +CONFIG_NO_EARLY_GFX_INIT=y + +# +# Display +# +# CONFIG_VGA_TEXT_FRAMEBUFFER is not set +CONFIG_GENERIC_LINEAR_FRAMEBUFFER=y +CONFIG_LINEAR_FRAMEBUFFER=y +# CONFIG_BOOTSPLASH is not set +CONFIG_DEFAULT_SCREEN_ROTATION_INT=0 +# end of Display + +CONFIG_PCI=y +CONFIG_ECAM_MMCONF_SUPPORT=y +CONFIG_PCIX_PLUGIN_SUPPORT=y +CONFIG_AZALIA_HDA_CODEC_SUPPORT=y +CONFIG_PCIEXP_PLUGIN_SUPPORT=y +CONFIG_ECAM_MMCONF_LENGTH=0x04000000 +CONFIG_PCI_ALLOW_BUS_MASTER=y +CONFIG_PCI_SET_BUS_MASTER_PCI_BRIDGES=y +CONFIG_PCI_ALLOW_BUS_MASTER_ANY_DEVICE=y +# CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS is not set +# CONFIG_PCIEXP_LANE_ERR_STAT_CLEAR is not set +CONFIG_PCIEXP_HOTPLUG_PREFETCH_MEM_ABOVE_4G=y +# CONFIG_PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G is not set +CONFIG_PCIEXP_HOTPLUG_IO=0x800 +# CONFIG_EARLY_PCI_BRIDGE is not set +CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 +CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 +CONFIG_INTEL_GMA_HAVE_VBT=y +CONFIG_INTEL_GMA_ADD_VBT=y +# CONFIG_SOFTWARE_I2C is not set +CONFIG_I2C_TRANSFER_TIMEOUT_US=500000 +CONFIG_RESOURCE_ALLOCATION_TOP_DOWN=y +CONFIG_USE_DDR3=y +# end of Devices + +# +# Generic Drivers +# +CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set +# CONFIG_ELOG is not set +CONFIG_CACHE_MRC_SETTINGS=y +# CONFIG_MRC_SETTINGS_PROTECT is not set +# CONFIG_DRIVERS_OPTION_CFR is not set +# CONFIG_SMMSTORE is not set +CONFIG_SPI_FLASH=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY=y +# CONFIG_SPI_FLASH_NO_FAST_READ is not set +CONFIG_SPI_FLASH_ADESTO=y +CONFIG_SPI_FLASH_AMIC=y +CONFIG_SPI_FLASH_ATMEL=y +CONFIG_SPI_FLASH_EON=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_SST=y +CONFIG_SPI_FLASH_ISSI=y +CONFIG_NO_UART_ON_SUPERIO=y +# CONFIG_DRIVERS_UART_OXPCIE is not set +CONFIG_HAVE_USBDEBUG=y +CONFIG_HAVE_USBDEBUG_OPTIONS=y +# CONFIG_USBDEBUG is not set +# CONFIG_VPD is not set +# CONFIG_DRIVERS_EMULATION_QEMU_FW_CFG is not set +# CONFIG_DRIVERS_GENERIC_CBFS_SERIAL is not set +# CONFIG_DRIVERS_GENERIC_CBFS_UUID is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9750 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9755 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9763E is not set +# CONFIG_DRIVERS_I2C_MAX98396 is not set +CONFIG_INTEL_GMA_ACPI=y +CONFIG_VBT_CBFS_COMPRESSION_LZMA=y +# CONFIG_VBT_CBFS_COMPRESSION_LZ4 is not set +# CONFIG_VBT_CBFS_COMPRESSION_NONE is not set +CONFIG_VBT_CBFS_COMPRESSION_ALGORITHM="lzma" +CONFIG_GFX_GMA=y +CONFIG_GFX_GMA_DYN_CPU=y +CONFIG_GFX_GMA_GENERATION="Ironlake" +CONFIG_GFX_GMA_PCH="Cougar_Point" +CONFIG_GFX_GMA_PANEL_2_PORT="Disabled" +CONFIG_GFX_GMA_ANALOG_I2C_PORT="PCH_DAC" +# CONFIG_DRIVERS_NXP_UWB_SR1XX is not set +# CONFIG_DRIVERS_PS2_KEYBOARD is not set +CONFIG_DRIVERS_MC146818=y +# CONFIG_USE_PC_CMOS_ALTCENTURY is not set +CONFIG_PC_CMOS_BASE_PORT_BANK0=0x70 +# CONFIG_DRIVERS_SIL_3114 is not set +CONFIG_DRIVERS_WIFI_GENERIC=y +CONFIG_DRIVERS_MTK_WIFI=y +# end of Generic Drivers + +# +# Security +# + +# +# CBFS verification +# +# CONFIG_CBFS_VERIFICATION is not set +# end of CBFS verification + +# +# Verified Boot (vboot) +# +# end of Verified Boot (vboot) + +# +# Trusted Platform Module +# +CONFIG_NO_TPM=y +CONFIG_PCR_BOOT_MODE=1 +CONFIG_PCR_HWID=1 +CONFIG_PCR_SRTM=2 +CONFIG_PCR_FW_VER=10 +CONFIG_PCR_RUNTIME_DATA=3 +# end of Trusted Platform Module + +# +# Memory initialization +# +CONFIG_PLATFORM_HAS_DRAM_CLEAR=y +CONFIG_SECURITY_CLEAR_DRAM_ON_REGULAR_BOOT=y +# end of Memory initialization + +# CONFIG_STM is not set +CONFIG_BOOTMEDIA_LOCK_NONE=y +# CONFIG_BOOTMEDIA_LOCK_CONTROLLER is not set +# CONFIG_BOOTMEDIA_LOCK_CHIP is not set +# CONFIG_BOOTMEDIA_SMM_BWP is not set +# end of Security + +CONFIG_ACPI_HAVE_PCAT_8259=y +CONFIG_ACPI_INTEL_HARDWARE_SLEEP_VALUES=y +CONFIG_ACPI_SOC_NVS=y +CONFIG_ACPI_NO_CUSTOM_MADT=y +CONFIG_ACPI_COMMON_MADT_LAPIC=y +CONFIG_ACPI_COMMON_MADT_IOAPIC=y +CONFIG_HAVE_ACPI_TABLES=y +CONFIG_BOOT_DEVICE_SPI_FLASH=y +CONFIG_BOOT_DEVICE_MEMORY_MAPPED=y +CONFIG_BOOT_DEVICE_SUPPORTS_WRITES=y +CONFIG_RTC=y + +# +# Console +# +CONFIG_BOOTBLOCK_CONSOLE=y +CONFIG_POSTCAR_CONSOLE=y +CONFIG_SQUELCH_EARLY_SMP=y +# CONFIG_SPKMODEM is not set +# CONFIG_CONSOLE_NE2K is not set +CONFIG_CONSOLE_CBMEM=y +# CONFIG_CONSOLE_CBMEM_DUMP_TO_UART is not set +# CONFIG_CONSOLE_SPI_FLASH is not set +# CONFIG_CONSOLE_I2C_SMBUS is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL_7=y +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_6 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_5 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_4 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_2 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_1 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL=7 +CONFIG_CONSOLE_USE_LOGLEVEL_PREFIX=y +CONFIG_CONSOLE_USE_ANSI_ESCAPES=y +# CONFIG_CMOS_POST is not set +CONFIG_POST_DEVICE_NONE=y +# CONFIG_POST_DEVICE_LPC is not set +# CONFIG_POST_DEVICE_PCI_PCIE is not set +CONFIG_POST_IO_PORT=0x80 +CONFIG_HWBASE_DEBUG_CB=y +# end of Console + +CONFIG_HAVE_ACPI_RESUME=y +CONFIG_RESUME_PATH_SAME_AS_BOOT=y +CONFIG_HAVE_MONOTONIC_TIMER=y +CONFIG_HAVE_OPTION_TABLE=y +CONFIG_IOAPIC=y +CONFIG_USE_WATCHDOG_ON_BOOT=y + +# +# System tables +# +CONFIG_GENERATE_SMBIOS_TABLES=y +CONFIG_BIOS_VENDOR="coreboot" +CONFIG_MAINBOARD_SERIAL_NUMBER="123456789" +# end of System tables + +# +# Payload +# +CONFIG_PAYLOAD_NONE=y +# end of Payload + +# +# Debugging +# + +# +# CPU Debug Settings +# +# CONFIG_DISPLAY_MTRRS is not set + +# +# Vendorcode Debug Settings +# + +# +# BLOB Debug Settings +# + +# +# 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 +# CONFIG_DEBUG_CONSOLE_INIT is not set +# CONFIG_DEBUG_SPI_FLASH is not set +# CONFIG_DEBUG_BOOT_STATE is not set +# CONFIG_DEBUG_ADA_CODE is not set +CONFIG_HAVE_EM100_SUPPORT=y +# CONFIG_EM100 is not set +# CONFIG_DEBUG_ACPICA_COMPATIBLE is not set +# end of Debugging + +CONFIG_RAMSTAGE_ADA=y +CONFIG_RAMSTAGE_LIBHWBASE=y +CONFIG_HWBASE_DYNAMIC_MMIO=y +CONFIG_HWBASE_DEFAULT_MMCONF=0xf0000000 +CONFIG_HWBASE_DIRECT_PCIDEV=y +CONFIG_DECOMPRESS_OFAST=y + +# +# Boot Logo Configuration +# +# CONFIG_BMP_LOGO is not set +# end of Boot Logo Configuration + +CONFIG_WARNINGS_ARE_ERRORS=y +CONFIG_MAX_REBOOT_CNT=3 +CONFIG_RELOCATABLE_MODULES=y +CONFIG_HAVE_BOOTBLOCK=y +CONFIG_HAVE_ROMSTAGE=y +CONFIG_HAVE_RAMSTAGE=y diff --git a/config/coreboot/hppro3500series_8mb/config/libgfxinit_txtmode b/config/coreboot/hppro3500series_8mb/config/libgfxinit_txtmode new file mode 100644 index 00000000..6aaf9cfe --- /dev/null +++ b/config/coreboot/hppro3500series_8mb/config/libgfxinit_txtmode @@ -0,0 +1,678 @@ +# +# Automatically generated file; DO NOT EDIT. +# coreboot configuration +# + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_CBFS_PREFIX="fallback" +CONFIG_COMPILER_GCC=y +# CONFIG_COMPILER_LLVM_CLANG is not set +# CONFIG_ANY_TOOLCHAIN is not set +# CONFIG_CCACHE is not set +# CONFIG_LTO is not set +# CONFIG_IWYU is not set +# CONFIG_FMD_GENPARSER is not set +# CONFIG_UTIL_GENPARSER is not set +CONFIG_OPTION_BACKEND_NONE=y +# CONFIG_USE_OPTION_TABLE is not set +# CONFIG_USE_CBFS_FILE_OPTION_BACKEND is not set +CONFIG_COMPRESS_RAMSTAGE_LZMA=y +# CONFIG_COMPRESS_RAMSTAGE_LZ4 is not set +CONFIG_SEPARATE_ROMSTAGE=y +CONFIG_INCLUDE_CONFIG_FILE=y +CONFIG_COLLECT_TIMESTAMPS=y +# CONFIG_TIMESTAMPS_ON_CONSOLE is not set +CONFIG_USE_BLOBS=y +# CONFIG_USE_AMD_BLOBS is not set +# CONFIG_USE_QC_BLOBS is not set +# CONFIG_COVERAGE is not set +# CONFIG_UBSAN is not set +CONFIG_HAVE_ASAN_IN_RAMSTAGE=y +# CONFIG_ASAN is not set +# CONFIG_NO_STAGE_CACHE is not set +CONFIG_TSEG_STAGE_CACHE=y +# CONFIG_UPDATE_IMAGE is not set +# CONFIG_BOOTSPLASH_IMAGE is not set + +# +# Software Bill Of Materials (SBOM) +# +# CONFIG_SBOM is not set +# end of Software Bill Of Materials (SBOM) +# end of General setup + +# +# Mainboard +# + +# +# Important: Run 'make distclean' before switching boards +# +# CONFIG_VENDOR_51NB is not set +# CONFIG_VENDOR_ACER is not set +# CONFIG_VENDOR_AMD is not set +# CONFIG_VENDOR_AOOSTAR is not set +# CONFIG_VENDOR_AOPEN is not set +# CONFIG_VENDOR_APPLE is not set +# CONFIG_VENDOR_ARM is not set +# CONFIG_VENDOR_ASROCK is not set +# CONFIG_VENDOR_ASUS is not set +# CONFIG_VENDOR_BIOSTAR is not set +# CONFIG_VENDOR_BOSTENTECH is not set +# CONFIG_VENDOR_BYTEDANCE is not set +# CONFIG_VENDOR_CAVIUM is not set +# CONFIG_VENDOR_CLEVO is not set +# CONFIG_VENDOR_COMPULAB is not set +# CONFIG_VENDOR_CWWK is not set +# CONFIG_VENDOR_DELL is not set +# CONFIG_VENDOR_EMULATION is not set +# CONFIG_VENDOR_ERYING is not set +# CONFIG_VENDOR_EXAMPLE is not set +# CONFIG_VENDOR_FACEBOOK is not set +# CONFIG_VENDOR_FOXCONN is not set +# CONFIG_VENDOR_FRAMEWORK is not set +# CONFIG_VENDOR_GETAC is not set +# CONFIG_VENDOR_GIGABYTE is not set +# CONFIG_VENDOR_GOOGLE is not set +# CONFIG_VENDOR_HARDKERNEL is not set +CONFIG_VENDOR_HP=y +# CONFIG_VENDOR_IBASE is not set +# CONFIG_VENDOR_IBM is not set +# CONFIG_VENDOR_INTEL is not set +# CONFIG_VENDOR_INVENTEC is not set +# CONFIG_VENDOR_KONTRON is not set +# CONFIG_VENDOR_LATTEPANDA is not set +# CONFIG_VENDOR_LENOVO is not set +# CONFIG_VENDOR_LIBRETREND is not set +# CONFIG_VENDOR_MITAC_COMPUTING is not set +# CONFIG_VENDOR_MSI is not set +# CONFIG_VENDOR_NOVACUSTOM is not set +# CONFIG_VENDOR_OCP is not set +# CONFIG_VENDOR_OPENCELLULAR is not set +# CONFIG_VENDOR_PACKARDBELL is not set +# CONFIG_VENDOR_PCENGINES is not set +# CONFIG_VENDOR_PINE64 is not set +# CONFIG_VENDOR_PORTWELL is not set +# CONFIG_VENDOR_PRODRIVE is not set +# CONFIG_VENDOR_PROTECTLI is not set +# CONFIG_VENDOR_PURISM is not set +# CONFIG_VENDOR_RAPTOR_CS is not set +# CONFIG_VENDOR_RAZER is not set +# CONFIG_VENDOR_RODA is not set +# CONFIG_VENDOR_SAMSUNG is not set +# CONFIG_VENDOR_SAPPHIRE is not set +# CONFIG_VENDOR_SIEMENS is not set +# CONFIG_VENDOR_SIFIVE is not set +# CONFIG_VENDOR_STARLABS is not set +# CONFIG_VENDOR_SUPERMICRO is not set +# CONFIG_VENDOR_SYSTEM76 is not set +# CONFIG_VENDOR_TI is not set +# CONFIG_VENDOR_TOPTON is not set +# CONFIG_VENDOR_UP is not set +# CONFIG_VENDOR_VIA is not set +CONFIG_MAINBOARD_PART_NUMBER="Pro 3500 Series" +CONFIG_MAINBOARD_VERSION="1.0" +CONFIG_MAINBOARD_DIR="hp/pro_3x00_series" +CONFIG_VGA_BIOS_ID="8086,0106" +CONFIG_DIMM_MAX=4 +CONFIG_DIMM_SPD_SIZE=256 +CONFIG_FMDFILE="" +# CONFIG_NO_POST is not set +CONFIG_MAINBOARD_VENDOR="HP" +CONFIG_CBFS_SIZE=0x7E7000 +CONFIG_MAX_CPUS=8 +# CONFIG_ONBOARD_VGA_IS_PRIMARY is not set +CONFIG_POST_DEVICE=y +CONFIG_POST_IO=y +CONFIG_VARIANT_DIR="pro_3500_series" +CONFIG_OVERRIDE_DEVICETREE="variants/$(CONFIG_VARIANT_DIR)/overridetree.cb" +CONFIG_DEVICETREE="devicetree.cb" +# CONFIG_VBOOT is not set +# CONFIG_VGA_BIOS is not set +CONFIG_PCIEXP_ASPM=y +# CONFIG_PCIEXP_L1_SUB_STATE is not set +# CONFIG_PCIEXP_CLK_PM is not set +CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="HP" +CONFIG_DRAM_RESET_GATE_GPIO=60 +CONFIG_ECAM_MMCONF_BASE_ADDRESS=0xf0000000 +CONFIG_ECAM_MMCONF_BUS_NUMBER=64 +CONFIG_MEMLAYOUT_LD_FILE="src/arch/x86/memlayout.ld" +# CONFIG_FATAL_ASSERTS is not set +CONFIG_USBDEBUG_HCD_INDEX=2 +CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/data.vbt" +CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00 +CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME="Pro 3500 Series" +# CONFIG_CONSOLE_POST is not set +CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" +CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" +CONFIG_MAX_SOCKET=1 +CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 +CONFIG_DCACHE_RAM_BASE=0xfefe0000 +CONFIG_DCACHE_RAM_SIZE=0x20000 +CONFIG_C_ENV_BOOTBLOCK_SIZE=0x40000 +CONFIG_DCACHE_BSP_STACK_SIZE=0x10000 +CONFIG_MAX_ACPI_TABLE_SIZE_KB=144 +CONFIG_HAVE_INTEL_FIRMWARE=y +CONFIG_MRC_SETTINGS_CACHE_SIZE=0x10000 +CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_DRIVERS_INTEL_WIFI=y +CONFIG_IFD_BIN_PATH="../../../config/ifd/hppro3500series/ifd" +CONFIG_ME_BIN_PATH="../../../vendorfiles/hppro3500series/me.bin" +CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 +CONFIG_CARDBUS_PLUGIN_SUPPORT=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_BOARD_HP_260_G1_DM is not set +# CONFIG_BOARD_HP_280_G2 is not set +# CONFIG_BOARD_HP_COMPAQ_ELITE_8300_CMT is not set +# CONFIG_BOARD_HP_ELITEBOOK_820_G2 is not set +# CONFIG_BOARD_HP_FOLIO_9480M is not set +# CONFIG_BOARD_HP_PRO_3400_SERIES is not set +CONFIG_BOARD_HP_PRO_3500_SERIES=y +# CONFIG_BOARD_HP_COMPAQ_PRO_6300 is not set +# CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC is not set +# CONFIG_BOARD_HP_COMPAQ_8200_ELITE_USDT is not set +# CONFIG_BOARD_HP_COMPAQ_8300_ELITE_SFF is not set +# CONFIG_BOARD_HP_COMPAQ_ELITE_8300_USDT is not set +# CONFIG_BOARD_HP_Z220_CMT_WORKSTATION is not set +# CONFIG_BOARD_HP_Z220_SFF_WORKSTATION is not set +# CONFIG_BOARD_HP_2170P is not set +# CONFIG_BOARD_HP_2560P is not set +# CONFIG_BOARD_HP_2570P is not set +# CONFIG_BOARD_HP_2760P is not set +# CONFIG_BOARD_HP_8460P is not set +# CONFIG_BOARD_HP_8470P is not set +# CONFIG_BOARD_HP_8560W is not set +# CONFIG_BOARD_HP_8770W is not set +# CONFIG_BOARD_HP_FOLIO_9470M is not set +# CONFIG_BOARD_HP_PROBOOK_6360B is not set +# CONFIG_BOARD_HP_REVOLVE_810_G1 is not set +CONFIG_BOARD_HP_PRO_3X00_SERIES_COMMON=y +# CONFIG_DEBUG_SMI is not set +CONFIG_HAVE_IFD_BIN=y +CONFIG_PCIEXP_HOTPLUG_BUSES=8 +CONFIG_PCIEXP_HOTPLUG_MEM=0x800000 +CONFIG_PCIEXP_HOTPLUG_PREFETCH_MEM=0x10000000 +CONFIG_PS2K_EISAID="PNP0303" +CONFIG_PS2M_EISAID="PNP0F13" +CONFIG_GFX_GMA_PANEL_1_PORT="eDP" +CONFIG_D3COLD_SUPPORT=y +CONFIG_GFX_GMA_PANEL_1_ON_EDP=y +# CONFIG_DRIVERS_UART_8250IO is not set +CONFIG_PC_CMOS_BASE_PORT_BANK1=0x72 +CONFIG_HEAP_SIZE=0x100000 +CONFIG_EC_GPE_SCI=0x50 +CONFIG_EC_STARLABS_BATTERY_MODEL="Unknown" +CONFIG_EC_STARLABS_BATTERY_TYPE="LION" +CONFIG_EC_STARLABS_BATTERY_OEM="Unknown" +CONFIG_BOARD_ROMSIZE_KB_8192=y +# CONFIG_COREBOOT_ROMSIZE_KB_256 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_512 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_1024 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_2048 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_4096 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_5120 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_6144 is not set +CONFIG_COREBOOT_ROMSIZE_KB_8192=y +# CONFIG_COREBOOT_ROMSIZE_KB_10240 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_12288 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_16384 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_24576 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_32768 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_65536 is not set +CONFIG_COREBOOT_ROMSIZE_KB=8192 +CONFIG_ROM_SIZE=0x00800000 +CONFIG_HAVE_POWER_STATE_AFTER_FAILURE=y +CONFIG_HAVE_POWER_STATE_PREVIOUS_AFTER_FAILURE=y +CONFIG_POWER_STATE_OFF_AFTER_FAILURE=y +# CONFIG_POWER_STATE_ON_AFTER_FAILURE is not set +# CONFIG_POWER_STATE_PREVIOUS_AFTER_FAILURE is not set +CONFIG_MAINBOARD_POWER_FAILURE_STATE=0 +# end of Mainboard + +# +# Chipset +# + +# +# SoC +# +CONFIG_CHIPSET_DEVICETREE="northbridge/intel/sandybridge/chipset.cb" +CONFIG_CBFS_MCACHE_SIZE=0x4000 +CONFIG_ROMSTAGE_ADDR=0x2000000 +CONFIG_VERSTAGE_ADDR=0x2000000 +CONFIG_SMM_TSEG_SIZE=0x800000 +CONFIG_SMM_RESERVED_SIZE=0x100000 +CONFIG_SMM_MODULE_STACK_SIZE=0x400 +# CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 +CONFIG_SERIRQ_CONTINUOUS_MODE=y +CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 +CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 +CONFIG_EHCI_BAR=0xfef00000 +CONFIG_ACPI_CPU_STRING="CP%02X" +CONFIG_STACK_SIZE=0x2000 +CONFIG_IED_REGION_SIZE=0x400000 +CONFIG_INTEL_GMA_BCLV_OFFSET=0x48254 +CONFIG_INTEL_GMA_BCLV_WIDTH=16 +CONFIG_INTEL_GMA_BCLM_OFFSET=0xc8256 +CONFIG_INTEL_GMA_BCLM_WIDTH=16 +CONFIG_BOOTBLOCK_IN_CBFS=y +CONFIG_DCACHE_RAM_MRC_VAR_SIZE=0x0 +CONFIG_HPET_MIN_TICKS=0x80 +CONFIG_FIXED_MCHBAR_MMIO_BASE=0xfed10000 +CONFIG_FIXED_DMIBAR_MMIO_BASE=0xfed18000 +CONFIG_FIXED_EPBAR_MMIO_BASE=0xfed19000 +CONFIG_PCIEXP_COMMON_CLOCK=y +CONFIG_SOC_PHYSICAL_ADDRESS_WIDTH=0 +# CONFIG_ALWAYS_ALLOW_ABOVE_4G_ALLOCATION is not set +CONFIG_FIXED_SMBUS_IO_BASE=0x400 +CONFIG_CBFS_CACHE_ALIGN=8 + +# +# CPU +# +CONFIG_CPU_INTEL_MODEL_206AX=y +CONFIG_CPU_INTEL_COMMON=y +CONFIG_ENABLE_VMX=y +CONFIG_SET_IA32_FC_LOCK_BIT=y +CONFIG_SET_MSR_AESNI_LOCK_BIT=y +CONFIG_CPU_INTEL_COMMON_TIMEBASE=y +CONFIG_CPU_INTEL_COMMON_SMM=y +CONFIG_MICROCODE_UPDATE_PRE_RAM=y +CONFIG_PARALLEL_MP=y +CONFIG_XAPIC_ONLY=y +# CONFIG_X2APIC_ONLY is not set +# CONFIG_X2APIC_RUNTIME is not set +# CONFIG_X2APIC_LATE_WORKAROUND is not set +CONFIG_UDELAY_TSC=y +CONFIG_TSC_MONOTONIC_TIMER=y +CONFIG_TSC_SYNC_MFENCE=y +CONFIG_HAVE_SMI_HANDLER=y +CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y +CONFIG_SMM_TSEG=y +CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 +CONFIG_AP_STACK_SIZE=0x800 +CONFIG_SMP=y +CONFIG_SSE=y +CONFIG_SSE2=y +CONFIG_SUPPORT_CPU_UCODE_IN_CBFS=y +CONFIG_USE_CPU_MICROCODE_CBFS_BINS=y +CONFIG_CPU_MICROCODE_CBFS_DEFAULT_BINS=y +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS is not set +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER is not set +# CONFIG_CPU_MICROCODE_CBFS_NONE is not set + +# +# Northbridge +# +CONFIG_USE_NATIVE_RAMINIT=y +CONFIG_NORTHBRIDGE_INTEL_SANDYBRIDGE=y +# CONFIG_NATIVE_RAMINIT_IGNORE_MAX_MEM_FUSES is not set +# CONFIG_NATIVE_RAMINIT_IGNORE_XMP_MAX_DIMMS is not set +# CONFIG_NATIVE_RAMINIT_IGNORE_XMP_REQUESTED_VOLTAGE is not set +# CONFIG_RAMINIT_ALWAYS_ALLOW_DLL_OFF is not set +CONFIG_RAMINIT_ENABLE_ECC=y +CONFIG_IGD_DEFAULT_UMA_SIZE_32MB=y +# CONFIG_IGD_DEFAULT_UMA_SIZE_64MB is not set +# CONFIG_IGD_DEFAULT_UMA_SIZE_96MB is not set +# CONFIG_IGD_DEFAULT_UMA_SIZE_128MB is not set +CONFIG_IGD_DEFAULT_UMA_INDEX=0 + +# +# Southbridge +# +CONFIG_SOUTHBRIDGE_INTEL_BD82X6X_COMMON=y +CONFIG_SOUTHBRIDGE_INTEL_BD82X6X=y +CONFIG_HIDE_MEI_ON_ERROR=y +CONFIG_PCIEXP_HOTPLUG=y +CONFIG_INTEL_DESCRIPTOR_MODE_REQUIRED=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RESET=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RTC=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMCLIB=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMBASE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_GPIO=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_ME=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_EARLY_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI_ICH9=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PIRQ_ACPI_GEN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RCBA_PIRQ=y +CONFIG_HAVE_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMM=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_FINALIZE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_USB_DEBUG=y +CONFIG_INTEL_DESCRIPTOR_MODE_CAPABLE=y +# CONFIG_VALIDATE_INTEL_DESCRIPTOR is not set +CONFIG_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_TCO_SPACE_NOT_YET_SPLIT=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_WATCHDOG=y +CONFIG_FIXED_RCBA_MMIO_BASE=0xfed1c000 +CONFIG_RCBA_LENGTH=0x4000 + +# +# Super I/O +# +CONFIG_SUPERIO_ITE_COMMON_PRE_RAM=y +CONFIG_SUPERIO_ITE_COMMON_GPIO_PRE_RAM=y +CONFIG_SUPERIO_ITE_COMMON_NUM_GPIO_SETS=6 +CONFIG_SUPERIO_ITE_ENV_CTRL=y +CONFIG_SUPERIO_ITE_ENV_CTRL_8BIT_PWM=y +CONFIG_SUPERIO_ITE_ENV_CTRL_PWM_FREQ2=y +CONFIG_SUPERIO_ITE_ENV_CTRL_7BIT_SLOPE_REG=y +CONFIG_SUPERIO_ITE_ENV_CTRL_EXT_ANY_TMPIN=y +CONFIG_SUPERIO_ITE_ENV_CTRL_NO_FULLSPEED_SETTING=y +CONFIG_SUPERIO_ITE_ENV_CTRL_FAN_VECTOR=y +CONFIG_SUPERIO_ITE_ENV_CTRL_FAN_VECTOR_RANGED=y +CONFIG_SUPERIO_ITE_IT8772F=y + +# +# Embedded Controllers +# + +# +# Intel Firmware +# +CONFIG_HAVE_ME_BIN=y +# CONFIG_STITCH_ME_BIN is not set +# CONFIG_CHECK_ME is not set +# CONFIG_ME_REGION_ALLOW_CPU_READ_ACCESS is not set +# CONFIG_USE_ME_CLEANER is not set +# CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION is not set +# CONFIG_LOCK_MANAGEMENT_ENGINE is not set +CONFIG_UNLOCK_FLASH_REGIONS=y +CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 +CONFIG_ARCH_X86=y +CONFIG_ARCH_BOOTBLOCK_X86_32=y +CONFIG_ARCH_VERSTAGE_X86_32=y +CONFIG_ARCH_ROMSTAGE_X86_32=y +CONFIG_ARCH_POSTCAR_X86_32=y +CONFIG_ARCH_RAMSTAGE_X86_32=y +CONFIG_ARCH_ALL_STAGES_X86_32=y +CONFIG_HAVE_X86_64_SUPPORT=y +CONFIG_RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT=y +CONFIG_X86_TOP4G_BOOTMEDIA_MAP=y +CONFIG_POSTRAM_CBFS_CACHE_IN_BSS=y +CONFIG_RAMSTAGE_CBFS_CACHE_SIZE=0x4000 +CONFIG_PC80_SYSTEM=y +CONFIG_HAVE_CMOS_DEFAULT=y +CONFIG_POSTCAR_STAGE=y +CONFIG_BOOTBLOCK_SIMPLE=y +# CONFIG_BOOTBLOCK_NORMAL is not set +CONFIG_COLLECT_TIMESTAMPS_TSC=y +CONFIG_HAVE_CF9_RESET=y +CONFIG_DEBUG_HW_BREAKPOINTS=y +CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS=y +# CONFIG_DUMP_SMBIOS_TYPE17 is not set +CONFIG_X86_BOOTBLOCK_EXTRA_PROGRAM_SZ=0 +CONFIG_DEFAULT_EBDA_LOWMEM=0x100000 +CONFIG_DEFAULT_EBDA_SEGMENT=0xF600 +CONFIG_DEFAULT_EBDA_SIZE=0x400 +# end of Chipset + +# +# Devices +# +CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y +CONFIG_HAVE_LINEAR_FRAMEBUFFER=y +CONFIG_MAINBOARD_HAS_LIBGFXINIT=y +CONFIG_MAINBOARD_USE_LIBGFXINIT=y +# CONFIG_VGA_ROM_RUN is not set +# CONFIG_NO_GFX_INIT is not set +CONFIG_NO_EARLY_GFX_INIT=y + +# +# Display +# +CONFIG_VGA_TEXT_FRAMEBUFFER=y +# CONFIG_GENERIC_LINEAR_FRAMEBUFFER is not set +CONFIG_DEFAULT_SCREEN_ROTATION_INT=0 +# end of Display + +CONFIG_PCI=y +CONFIG_ECAM_MMCONF_SUPPORT=y +CONFIG_PCIX_PLUGIN_SUPPORT=y +CONFIG_AZALIA_HDA_CODEC_SUPPORT=y +CONFIG_PCIEXP_PLUGIN_SUPPORT=y +CONFIG_ECAM_MMCONF_LENGTH=0x04000000 +CONFIG_PCI_ALLOW_BUS_MASTER=y +CONFIG_PCI_SET_BUS_MASTER_PCI_BRIDGES=y +CONFIG_PCI_ALLOW_BUS_MASTER_ANY_DEVICE=y +# CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS is not set +# CONFIG_PCIEXP_LANE_ERR_STAT_CLEAR is not set +CONFIG_PCIEXP_HOTPLUG_PREFETCH_MEM_ABOVE_4G=y +# CONFIG_PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G is not set +CONFIG_PCIEXP_HOTPLUG_IO=0x800 +# CONFIG_EARLY_PCI_BRIDGE is not set +CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 +CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 +CONFIG_INTEL_GMA_HAVE_VBT=y +CONFIG_INTEL_GMA_ADD_VBT=y +# CONFIG_SOFTWARE_I2C is not set +CONFIG_I2C_TRANSFER_TIMEOUT_US=500000 +CONFIG_RESOURCE_ALLOCATION_TOP_DOWN=y +CONFIG_USE_DDR3=y +# end of Devices + +# +# Generic Drivers +# +CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set +# CONFIG_ELOG is not set +CONFIG_CACHE_MRC_SETTINGS=y +# CONFIG_MRC_SETTINGS_PROTECT is not set +# CONFIG_DRIVERS_OPTION_CFR is not set +# CONFIG_SMMSTORE is not set +CONFIG_SPI_FLASH=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY=y +# CONFIG_SPI_FLASH_NO_FAST_READ is not set +CONFIG_SPI_FLASH_ADESTO=y +CONFIG_SPI_FLASH_AMIC=y +CONFIG_SPI_FLASH_ATMEL=y +CONFIG_SPI_FLASH_EON=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_SST=y +CONFIG_SPI_FLASH_ISSI=y +CONFIG_NO_UART_ON_SUPERIO=y +# CONFIG_DRIVERS_UART_OXPCIE is not set +CONFIG_HAVE_USBDEBUG=y +CONFIG_HAVE_USBDEBUG_OPTIONS=y +# CONFIG_USBDEBUG is not set +# CONFIG_VPD is not set +# CONFIG_DRIVERS_EMULATION_QEMU_FW_CFG is not set +# CONFIG_DRIVERS_GENERIC_CBFS_SERIAL is not set +# CONFIG_DRIVERS_GENERIC_CBFS_UUID is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9750 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9755 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9763E is not set +# CONFIG_DRIVERS_I2C_MAX98396 is not set +CONFIG_INTEL_GMA_ACPI=y +CONFIG_VBT_CBFS_COMPRESSION_LZMA=y +# CONFIG_VBT_CBFS_COMPRESSION_LZ4 is not set +# CONFIG_VBT_CBFS_COMPRESSION_NONE is not set +CONFIG_VBT_CBFS_COMPRESSION_ALGORITHM="lzma" +CONFIG_GFX_GMA=y +CONFIG_GFX_GMA_DYN_CPU=y +CONFIG_GFX_GMA_GENERATION="Ironlake" +CONFIG_GFX_GMA_PCH="Cougar_Point" +CONFIG_GFX_GMA_PANEL_2_PORT="Disabled" +CONFIG_GFX_GMA_ANALOG_I2C_PORT="PCH_DAC" +# CONFIG_DRIVERS_NXP_UWB_SR1XX is not set +# CONFIG_DRIVERS_PS2_KEYBOARD is not set +CONFIG_DRIVERS_MC146818=y +# CONFIG_USE_PC_CMOS_ALTCENTURY is not set +CONFIG_PC_CMOS_BASE_PORT_BANK0=0x70 +CONFIG_VGA=y +# CONFIG_DRIVERS_SIL_3114 is not set +CONFIG_DRIVERS_WIFI_GENERIC=y +CONFIG_DRIVERS_MTK_WIFI=y +# end of Generic Drivers + +# +# Security +# + +# +# CBFS verification +# +# CONFIG_CBFS_VERIFICATION is not set +# end of CBFS verification + +# +# Verified Boot (vboot) +# +# end of Verified Boot (vboot) + +# +# Trusted Platform Module +# +CONFIG_NO_TPM=y +CONFIG_PCR_BOOT_MODE=1 +CONFIG_PCR_HWID=1 +CONFIG_PCR_SRTM=2 +CONFIG_PCR_FW_VER=10 +CONFIG_PCR_RUNTIME_DATA=3 +# end of Trusted Platform Module + +# +# Memory initialization +# +CONFIG_PLATFORM_HAS_DRAM_CLEAR=y +CONFIG_SECURITY_CLEAR_DRAM_ON_REGULAR_BOOT=y +# end of Memory initialization + +# CONFIG_STM is not set +CONFIG_BOOTMEDIA_LOCK_NONE=y +# CONFIG_BOOTMEDIA_LOCK_CONTROLLER is not set +# CONFIG_BOOTMEDIA_LOCK_CHIP is not set +# CONFIG_BOOTMEDIA_SMM_BWP is not set +# end of Security + +CONFIG_ACPI_HAVE_PCAT_8259=y +CONFIG_ACPI_INTEL_HARDWARE_SLEEP_VALUES=y +CONFIG_ACPI_SOC_NVS=y +CONFIG_ACPI_NO_CUSTOM_MADT=y +CONFIG_ACPI_COMMON_MADT_LAPIC=y +CONFIG_ACPI_COMMON_MADT_IOAPIC=y +CONFIG_HAVE_ACPI_TABLES=y +CONFIG_BOOT_DEVICE_SPI_FLASH=y +CONFIG_BOOT_DEVICE_MEMORY_MAPPED=y +CONFIG_BOOT_DEVICE_SUPPORTS_WRITES=y +CONFIG_RTC=y + +# +# Console +# +CONFIG_BOOTBLOCK_CONSOLE=y +CONFIG_POSTCAR_CONSOLE=y +CONFIG_SQUELCH_EARLY_SMP=y +# CONFIG_SPKMODEM is not set +# CONFIG_CONSOLE_NE2K is not set +CONFIG_CONSOLE_CBMEM=y +# CONFIG_CONSOLE_CBMEM_DUMP_TO_UART is not set +# CONFIG_CONSOLE_SPI_FLASH is not set +# CONFIG_CONSOLE_I2C_SMBUS is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL_7=y +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_6 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_5 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_4 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_2 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_1 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL=7 +CONFIG_CONSOLE_USE_LOGLEVEL_PREFIX=y +CONFIG_CONSOLE_USE_ANSI_ESCAPES=y +# CONFIG_CMOS_POST is not set +CONFIG_POST_DEVICE_NONE=y +# CONFIG_POST_DEVICE_LPC is not set +# CONFIG_POST_DEVICE_PCI_PCIE is not set +CONFIG_POST_IO_PORT=0x80 +CONFIG_HWBASE_DEBUG_CB=y +# end of Console + +CONFIG_HAVE_ACPI_RESUME=y +CONFIG_RESUME_PATH_SAME_AS_BOOT=y +CONFIG_HAVE_MONOTONIC_TIMER=y +CONFIG_HAVE_OPTION_TABLE=y +CONFIG_IOAPIC=y +CONFIG_USE_WATCHDOG_ON_BOOT=y + +# +# System tables +# +CONFIG_GENERATE_SMBIOS_TABLES=y +CONFIG_BIOS_VENDOR="coreboot" +CONFIG_MAINBOARD_SERIAL_NUMBER="123456789" +# end of System tables + +# +# Payload +# +CONFIG_PAYLOAD_NONE=y +# end of Payload + +# +# Debugging +# + +# +# CPU Debug Settings +# +# CONFIG_DISPLAY_MTRRS is not set + +# +# Vendorcode Debug Settings +# + +# +# BLOB Debug Settings +# + +# +# 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 +# CONFIG_DEBUG_CONSOLE_INIT is not set +# CONFIG_DEBUG_SPI_FLASH is not set +# CONFIG_DEBUG_BOOT_STATE is not set +# CONFIG_DEBUG_ADA_CODE is not set +CONFIG_HAVE_EM100_SUPPORT=y +# CONFIG_EM100 is not set +# CONFIG_DEBUG_ACPICA_COMPATIBLE is not set +# end of Debugging + +CONFIG_RAMSTAGE_ADA=y +CONFIG_RAMSTAGE_LIBHWBASE=y +CONFIG_HWBASE_DYNAMIC_MMIO=y +CONFIG_HWBASE_DEFAULT_MMCONF=0xf0000000 +CONFIG_HWBASE_DIRECT_PCIDEV=y +CONFIG_DECOMPRESS_OFAST=y + +# +# Boot Logo Configuration +# +# CONFIG_BMP_LOGO is not set +# end of Boot Logo Configuration + +CONFIG_WARNINGS_ARE_ERRORS=y +CONFIG_MAX_REBOOT_CNT=3 +CONFIG_RELOCATABLE_MODULES=y +CONFIG_HAVE_BOOTBLOCK=y +CONFIG_HAVE_ROMSTAGE=y +CONFIG_HAVE_RAMSTAGE=y diff --git a/config/coreboot/hppro3500series_8mb/target.cfg b/config/coreboot/hppro3500series_8mb/target.cfg new file mode 100644 index 00000000..4d4031d2 --- /dev/null +++ b/config/coreboot/hppro3500series_8mb/target.cfg @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +tree="default" +xarch="i386-elf" +payload_seabios="y" +payload_grub="y" +payload_memtest="y" +grub_scan_disk="nvme ahci" +grubtree="nvme" +vcfg="hppro3500series" +build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" +payload_uboot="amd64" diff --git a/config/coreboot/kcma_d8_16mb/target.cfg b/config/coreboot/kcma_d8_16mb/target.cfg index 112c101f..75955f7e 100644 --- a/config/coreboot/kcma_d8_16mb/target.cfg +++ b/config/coreboot/kcma_d8_16mb/target.cfg @@ -9,4 +9,4 @@ xlang="c" grub_scan_disk="nvme ahci" grubtree="nvme" build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/kcma_d8_2mb/target.cfg b/config/coreboot/kcma_d8_2mb/target.cfg index 112c101f..75955f7e 100644 --- a/config/coreboot/kcma_d8_2mb/target.cfg +++ b/config/coreboot/kcma_d8_2mb/target.cfg @@ -9,4 +9,4 @@ xlang="c" grub_scan_disk="nvme ahci" grubtree="nvme" build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/kfsn4_dre_1mb/target.cfg b/config/coreboot/kfsn4_dre_1mb/target.cfg index a87ac1ad..c4536856 100644 --- a/config/coreboot/kfsn4_dre_1mb/target.cfg +++ b/config/coreboot/kfsn4_dre_1mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_memtest="y" xlang="c" build_depend="seabios/default memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/kfsn4_dre_2mb/target.cfg b/config/coreboot/kfsn4_dre_2mb/target.cfg index 17021b47..f942604b 100644 --- a/config/coreboot/kfsn4_dre_2mb/target.cfg +++ b/config/coreboot/kfsn4_dre_2mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" xlang="c" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/kgpe_d16_16mb/target.cfg b/config/coreboot/kgpe_d16_16mb/target.cfg index 112c101f..75955f7e 100644 --- a/config/coreboot/kgpe_d16_16mb/target.cfg +++ b/config/coreboot/kgpe_d16_16mb/target.cfg @@ -9,4 +9,4 @@ xlang="c" grub_scan_disk="nvme ahci" grubtree="nvme" build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/kgpe_d16_2mb/target.cfg b/config/coreboot/kgpe_d16_2mb/target.cfg index 112c101f..75955f7e 100644 --- a/config/coreboot/kgpe_d16_2mb/target.cfg +++ b/config/coreboot/kgpe_d16_2mb/target.cfg @@ -9,4 +9,4 @@ xlang="c" grub_scan_disk="nvme ahci" grubtree="nvme" build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/macbook11/config/libgfxinit_corebootfb b/config/coreboot/macbook11/config/libgfxinit_corebootfb index 05adff10..c71d938f 100644 --- a/config/coreboot/macbook11/config/libgfxinit_corebootfb +++ b/config/coreboot/macbook11/config/libgfxinit_corebootfb @@ -219,6 +219,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -266,7 +267,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -323,7 +323,6 @@ CONFIG_RCBA_LENGTH=0x4000 # CONFIG_EC_ACPI=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -401,6 +400,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/macbook11/config/libgfxinit_txtmode b/config/coreboot/macbook11/config/libgfxinit_txtmode index eeeec636..5b44561f 100644 --- a/config/coreboot/macbook11/config/libgfxinit_txtmode +++ b/config/coreboot/macbook11/config/libgfxinit_txtmode @@ -219,6 +219,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -266,7 +267,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -323,7 +323,6 @@ CONFIG_RCBA_LENGTH=0x4000 # CONFIG_EC_ACPI=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -399,6 +398,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/macbook11/target.cfg b/config/coreboot/macbook11/target.cfg index c1e3a3c6..f41e3fe9 100644 --- a/config/coreboot/macbook11/target.cfg +++ b/config/coreboot/macbook11/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" grub_scan_disk="ahci" build_depend="seabios/default grub/default u-boot/i386coreboot" -payload_uboot_i386="y" +payload_uboot="i386" diff --git a/config/coreboot/macbook11_16mb/config/libgfxinit_corebootfb b/config/coreboot/macbook11_16mb/config/libgfxinit_corebootfb index fb59ec23..3e945c4a 100644 --- a/config/coreboot/macbook11_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/macbook11_16mb/config/libgfxinit_corebootfb @@ -218,6 +218,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -265,7 +266,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -322,7 +322,6 @@ CONFIG_RCBA_LENGTH=0x4000 # CONFIG_EC_ACPI=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -400,6 +399,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/macbook11_16mb/config/libgfxinit_txtmode b/config/coreboot/macbook11_16mb/config/libgfxinit_txtmode index 85bf19a5..a9b76a5e 100644 --- a/config/coreboot/macbook11_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/macbook11_16mb/config/libgfxinit_txtmode @@ -218,6 +218,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -265,7 +266,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -322,7 +322,6 @@ CONFIG_RCBA_LENGTH=0x4000 # CONFIG_EC_ACPI=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -398,6 +397,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/macbook11_16mb/target.cfg b/config/coreboot/macbook11_16mb/target.cfg index e0d1afbf..ff2498eb 100644 --- a/config/coreboot/macbook11_16mb/target.cfg +++ b/config/coreboot/macbook11_16mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" scan_scan_disk="ahci" build_depend="seabios/default grub/default u-boot/i386coreboot" -payload_uboot_i386="y" +payload_uboot="i386" diff --git a/config/coreboot/macbook21/config/libgfxinit_corebootfb b/config/coreboot/macbook21/config/libgfxinit_corebootfb index b0c91265..3b9525b5 100644 --- a/config/coreboot/macbook21/config/libgfxinit_corebootfb +++ b/config/coreboot/macbook21/config/libgfxinit_corebootfb @@ -219,6 +219,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -266,7 +267,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -323,7 +323,6 @@ CONFIG_RCBA_LENGTH=0x4000 # CONFIG_EC_ACPI=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -401,6 +400,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/macbook21/config/libgfxinit_txtmode b/config/coreboot/macbook21/config/libgfxinit_txtmode index b3394b50..c567cef1 100644 --- a/config/coreboot/macbook21/config/libgfxinit_txtmode +++ b/config/coreboot/macbook21/config/libgfxinit_txtmode @@ -219,6 +219,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -266,7 +267,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -323,7 +323,6 @@ CONFIG_RCBA_LENGTH=0x4000 # CONFIG_EC_ACPI=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -399,6 +398,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/macbook21/target.cfg b/config/coreboot/macbook21/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/macbook21/target.cfg +++ b/config/coreboot/macbook21/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/macbook21_16mb/config/libgfxinit_corebootfb b/config/coreboot/macbook21_16mb/config/libgfxinit_corebootfb index ba14e7cc..55e87d7e 100644 --- a/config/coreboot/macbook21_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/macbook21_16mb/config/libgfxinit_corebootfb @@ -218,6 +218,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -265,7 +266,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -322,7 +322,6 @@ CONFIG_RCBA_LENGTH=0x4000 # CONFIG_EC_ACPI=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -400,6 +399,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/macbook21_16mb/config/libgfxinit_txtmode b/config/coreboot/macbook21_16mb/config/libgfxinit_txtmode index e2036017..9740da5a 100644 --- a/config/coreboot/macbook21_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/macbook21_16mb/config/libgfxinit_txtmode @@ -218,6 +218,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -265,7 +266,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -322,7 +322,6 @@ CONFIG_RCBA_LENGTH=0x4000 # CONFIG_EC_ACPI=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -398,6 +397,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/macbook21_16mb/target.cfg b/config/coreboot/macbook21_16mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/macbook21_16mb/target.cfg +++ b/config/coreboot/macbook21_16mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/q45t_am/config/libgfxinit_txtmode b/config/coreboot/q45t_am/config/libgfxinit_txtmode index 9f29191a..afa26ff3 100644 --- a/config/coreboot/q45t_am/config/libgfxinit_txtmode +++ b/config/coreboot/q45t_am/config/libgfxinit_txtmode @@ -226,6 +226,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -272,7 +273,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -343,7 +343,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -423,6 +422,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/q45t_am/target.cfg b/config/coreboot/q45t_am/target.cfg index 3379b716..357eee9a 100644 --- a/config/coreboot/q45t_am/target.cfg +++ b/config/coreboot/q45t_am/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_memtest="y" grubtree="nvme" build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/qemu_arm64_12mb/config/libgfxinit_corebootfb b/config/coreboot/qemu_arm64_12mb/config/libgfxinit_corebootfb index 2a1f9f08..82954305 100644 --- a/config/coreboot/qemu_arm64_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/qemu_arm64_12mb/config/libgfxinit_corebootfb @@ -226,7 +226,6 @@ CONFIG_RCBA_LENGTH=0x4000 # Embedded Controllers # CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_ARM64=y CONFIG_ARCH_BOOTBLOCK_ARM64=y CONFIG_ARCH_VERSTAGE_ARM64=y @@ -281,12 +280,17 @@ CONFIG_I2C_TRANSFER_TIMEOUT_US=500000 # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_DRIVERS_OPTION_CFR is not set CONFIG_DRIVERS_UART=y CONFIG_HAVE_UART_SPECIAL=y # CONFIG_DRIVERS_UART_OXPCIE is not set CONFIG_DRIVERS_UART_PL011=y # CONFIG_VPD is not set +CONFIG_DRIVERS_EMULATION_QEMU_BOCHS=y +CONFIG_DRIVERS_EMULATION_QEMU_XRES=800 +CONFIG_DRIVERS_EMULATION_QEMU_YRES=600 # CONFIG_DRIVERS_EMULATION_QEMU_FW_CFG is not set # CONFIG_DRIVERS_GENERIC_CBFS_SERIAL is not set # CONFIG_DRIVERS_GENERIC_CBFS_UUID is not set @@ -295,6 +299,7 @@ CONFIG_DRIVERS_UART_PL011=y # CONFIG_DRIVERS_GENESYSLOGIC_GL9763E is not set # CONFIG_DRIVERS_NXP_UWB_SR1XX is not set CONFIG_PC_CMOS_BASE_PORT_BANK0=0x70 +CONFIG_VGA=y # CONFIG_DRIVERS_SIL_3114 is not set CONFIG_DRIVERS_WIFI_GENERIC=y CONFIG_DRIVERS_MTK_WIFI=y diff --git a/config/coreboot/qemu_arm64_12mb/target.cfg b/config/coreboot/qemu_arm64_12mb/target.cfg index 5d8f0db2..2ea9482f 100644 --- a/config/coreboot/qemu_arm64_12mb/target.cfg +++ b/config/coreboot/qemu_arm64_12mb/target.cfg @@ -2,5 +2,5 @@ tree="default" xarch="aarch64-elf arm-eabi" -payload_uboot="y" +payload_uboot="arm64" build_depend="u-boot/qemu_arm64_12mb" diff --git a/config/coreboot/qemu_x86_12mb/config/libgfxinit_corebootfb b/config/coreboot/qemu_x86_12mb/config/libgfxinit_corebootfb index c13b2214..bd6bf444 100644 --- a/config/coreboot/qemu_x86_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/qemu_x86_12mb/config/libgfxinit_corebootfb @@ -211,6 +211,7 @@ CONFIG_CBFS_MCACHE_SIZE=0x4000 CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfe000000 CONFIG_ACPI_CPU_STRING="CP%02X" @@ -240,7 +241,6 @@ CONFIG_UNKNOWN_TSC_RATE=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_NO_SMM=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 CONFIG_SMP=y @@ -268,7 +268,6 @@ CONFIG_RCBA_LENGTH=0x4000 # Embedded Controllers # CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -342,6 +341,8 @@ CONFIG_I2C_TRANSFER_TIMEOUT_US=500000 # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set CONFIG_DRIVERS_UART=y diff --git a/config/coreboot/qemu_x86_12mb/config/libgfxinit_txtmode b/config/coreboot/qemu_x86_12mb/config/libgfxinit_txtmode index e09b9ca6..a80263e4 100644 --- a/config/coreboot/qemu_x86_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/qemu_x86_12mb/config/libgfxinit_txtmode @@ -211,6 +211,7 @@ CONFIG_CBFS_MCACHE_SIZE=0x4000 CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfe000000 CONFIG_ACPI_CPU_STRING="CP%02X" @@ -240,7 +241,6 @@ CONFIG_UNKNOWN_TSC_RATE=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_NO_SMM=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 CONFIG_SMP=y @@ -268,7 +268,6 @@ CONFIG_RCBA_LENGTH=0x4000 # Embedded Controllers # CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -340,6 +339,8 @@ CONFIG_I2C_TRANSFER_TIMEOUT_US=500000 # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set CONFIG_DRIVERS_UART=y diff --git a/config/coreboot/qemu_x86_12mb/target.cfg b/config/coreboot/qemu_x86_12mb/target.cfg index 2074beca..476a98cb 100644 --- a/config/coreboot/qemu_x86_12mb/target.cfg +++ b/config/coreboot/qemu_x86_12mb/target.cfg @@ -6,4 +6,4 @@ payload_grub="y" payload_seabios="y" payload_memtest="y" build_depend="seabios/default grub/default memtest86plus u-boot/i386coreboot" -payload_uboot_i386="y" +payload_uboot="i386" diff --git a/config/coreboot/qemu_x86_64_12mb/config/libgfxinit_corebootfb b/config/coreboot/qemu_x86_64_12mb/config/libgfxinit_corebootfb index c13b2214..bd6bf444 100644 --- a/config/coreboot/qemu_x86_64_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/qemu_x86_64_12mb/config/libgfxinit_corebootfb @@ -211,6 +211,7 @@ CONFIG_CBFS_MCACHE_SIZE=0x4000 CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfe000000 CONFIG_ACPI_CPU_STRING="CP%02X" @@ -240,7 +241,6 @@ CONFIG_UNKNOWN_TSC_RATE=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_NO_SMM=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 CONFIG_SMP=y @@ -268,7 +268,6 @@ CONFIG_RCBA_LENGTH=0x4000 # Embedded Controllers # CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -342,6 +341,8 @@ CONFIG_I2C_TRANSFER_TIMEOUT_US=500000 # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set CONFIG_DRIVERS_UART=y diff --git a/config/coreboot/qemu_x86_64_12mb/config/libgfxinit_txtmode b/config/coreboot/qemu_x86_64_12mb/config/libgfxinit_txtmode index e09b9ca6..a80263e4 100644 --- a/config/coreboot/qemu_x86_64_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/qemu_x86_64_12mb/config/libgfxinit_txtmode @@ -211,6 +211,7 @@ CONFIG_CBFS_MCACHE_SIZE=0x4000 CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfe000000 CONFIG_ACPI_CPU_STRING="CP%02X" @@ -240,7 +241,6 @@ CONFIG_UNKNOWN_TSC_RATE=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_NO_SMM=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 CONFIG_SMP=y @@ -268,7 +268,6 @@ CONFIG_RCBA_LENGTH=0x4000 # Embedded Controllers # CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -340,6 +339,8 @@ CONFIG_I2C_TRANSFER_TIMEOUT_US=500000 # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set CONFIG_DRIVERS_UART=y diff --git a/config/coreboot/qemu_x86_64_12mb/target.cfg b/config/coreboot/qemu_x86_64_12mb/target.cfg index 7855bd6f..61ae6299 100644 --- a/config/coreboot/qemu_x86_64_12mb/target.cfg +++ b/config/coreboot/qemu_x86_64_12mb/target.cfg @@ -5,4 +5,4 @@ xarch="i386-elf" payload_grub="y" payload_seabios="y" payload_memtest="y" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/r400_16mb/config/libgfxinit_corebootfb b/config/coreboot/r400_16mb/config/libgfxinit_corebootfb index a144c477..f4dd091b 100644 --- a/config/coreboot/r400_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/r400_16mb/config/libgfxinit_corebootfb @@ -274,6 +274,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -318,7 +319,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -379,6 +379,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -392,7 +394,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -473,6 +474,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/r400_16mb/config/libgfxinit_txtmode b/config/coreboot/r400_16mb/config/libgfxinit_txtmode index 5c7163ad..cefb2e7f 100644 --- a/config/coreboot/r400_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/r400_16mb/config/libgfxinit_txtmode @@ -272,6 +272,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -316,7 +317,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -377,6 +377,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -390,7 +392,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -469,6 +470,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/r400_16mb/target.cfg b/config/coreboot/r400_16mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/r400_16mb/target.cfg +++ b/config/coreboot/r400_16mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/r400_4mb/config/libgfxinit_corebootfb b/config/coreboot/r400_4mb/config/libgfxinit_corebootfb index 6ace7143..3406c4f8 100644 --- a/config/coreboot/r400_4mb/config/libgfxinit_corebootfb +++ b/config/coreboot/r400_4mb/config/libgfxinit_corebootfb @@ -274,6 +274,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -318,7 +319,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -379,6 +379,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -392,7 +394,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -473,6 +474,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/r400_4mb/config/libgfxinit_txtmode b/config/coreboot/r400_4mb/config/libgfxinit_txtmode index f69d4999..b0aecef9 100644 --- a/config/coreboot/r400_4mb/config/libgfxinit_txtmode +++ b/config/coreboot/r400_4mb/config/libgfxinit_txtmode @@ -272,6 +272,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -316,7 +317,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -377,6 +377,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -390,7 +392,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -469,6 +470,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/r400_4mb/target.cfg b/config/coreboot/r400_4mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/r400_4mb/target.cfg +++ b/config/coreboot/r400_4mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/r400_8mb/config/libgfxinit_corebootfb b/config/coreboot/r400_8mb/config/libgfxinit_corebootfb index 2885b89a..73ea948f 100644 --- a/config/coreboot/r400_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/r400_8mb/config/libgfxinit_corebootfb @@ -274,6 +274,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -318,7 +319,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -379,6 +379,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -392,7 +394,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -473,6 +474,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/r400_8mb/config/libgfxinit_txtmode b/config/coreboot/r400_8mb/config/libgfxinit_txtmode index ed35d89d..856780d3 100644 --- a/config/coreboot/r400_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/r400_8mb/config/libgfxinit_txtmode @@ -272,6 +272,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -316,7 +317,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -377,6 +377,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -390,7 +392,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -469,6 +470,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/r400_8mb/target.cfg b/config/coreboot/r400_8mb/target.cfg index ef878ea1..23bfb335 100644 --- a/config/coreboot/r400_8mb/target.cfg +++ b/config/coreboot/r400_8mb/target.cfg @@ -5,4 +5,4 @@ xarch="i386-elf" payload_seabios="y" payload_grub="y" payload_memtest="y" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/r500_4mb/config/libgfxinit_corebootfb b/config/coreboot/r500_4mb/config/libgfxinit_corebootfb index 275e67b9..5969b55b 100644 --- a/config/coreboot/r500_4mb/config/libgfxinit_corebootfb +++ b/config/coreboot/r500_4mb/config/libgfxinit_corebootfb @@ -273,6 +273,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -317,7 +318,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -378,6 +378,7 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -389,7 +390,6 @@ CONFIG_EC_LENOVO_PMH7=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -470,6 +470,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/r500_4mb/config/libgfxinit_txtmode b/config/coreboot/r500_4mb/config/libgfxinit_txtmode index ff6c5236..5bae0f85 100644 --- a/config/coreboot/r500_4mb/config/libgfxinit_txtmode +++ b/config/coreboot/r500_4mb/config/libgfxinit_txtmode @@ -271,6 +271,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -315,7 +316,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -376,6 +376,7 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -387,7 +388,6 @@ CONFIG_EC_LENOVO_PMH7=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -466,6 +466,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/r500_4mb/target.cfg b/config/coreboot/r500_4mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/r500_4mb/target.cfg +++ b/config/coreboot/r500_4mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/t1650_12mb/config/libgfxinit_txtmode b/config/coreboot/t1650_12mb/config/libgfxinit_txtmode index f4b4b092..7db420a2 100644 --- a/config/coreboot/t1650_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/t1650_12mb/config/libgfxinit_txtmode @@ -154,9 +154,9 @@ CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" CONFIG_MAX_SOCKET=1 CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 CONFIG_TPM_PIRQ=0x0 -# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_E4300 is not set # CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set # CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set # CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set @@ -255,6 +255,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -299,7 +300,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -384,7 +384,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -461,6 +460,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/t1650_12mb/target.cfg b/config/coreboot/t1650_12mb/target.cfg index de6a8af8..34865f86 100644 --- a/config/coreboot/t1650_12mb/target.cfg +++ b/config/coreboot/t1650_12mb/target.cfg @@ -9,4 +9,4 @@ grub_scan_disk="nvme ahci" grubtree="nvme" vcfg="t1650" build_depend="seabios/default grub/nvme memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/t1700mt_bmrc_12mb/config/libgfxinit_corebootfb b/config/coreboot/t1700mt_bmrc_12mb/config/libgfxinit_corebootfb new file mode 100644 index 00000000..52eea8ea --- /dev/null +++ b/config/coreboot/t1700mt_bmrc_12mb/config/libgfxinit_corebootfb @@ -0,0 +1,692 @@ +# +# Automatically generated file; DO NOT EDIT. +# coreboot configuration +# + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_CBFS_PREFIX="fallback" +CONFIG_COMPILER_GCC=y +# CONFIG_COMPILER_LLVM_CLANG is not set +# CONFIG_ANY_TOOLCHAIN is not set +# CONFIG_CCACHE is not set +# CONFIG_LTO is not set +# CONFIG_IWYU is not set +# CONFIG_FMD_GENPARSER is not set +# CONFIG_UTIL_GENPARSER is not set +# CONFIG_OPTION_BACKEND_NONE is not set +CONFIG_USE_OPTION_TABLE=y +# CONFIG_USE_CBFS_FILE_OPTION_BACKEND is not set +CONFIG_STATIC_OPTION_TABLE=y +CONFIG_COMPRESS_RAMSTAGE_LZMA=y +# CONFIG_COMPRESS_RAMSTAGE_LZ4 is not set +CONFIG_SEPARATE_ROMSTAGE=y +CONFIG_INCLUDE_CONFIG_FILE=y +CONFIG_COLLECT_TIMESTAMPS=y +# CONFIG_TIMESTAMPS_ON_CONSOLE is not set +CONFIG_USE_BLOBS=y +# CONFIG_USE_AMD_BLOBS is not set +# CONFIG_USE_QC_BLOBS is not set +# CONFIG_COVERAGE is not set +# CONFIG_UBSAN is not set +CONFIG_HAVE_ASAN_IN_ROMSTAGE=y +CONFIG_HAVE_ASAN_IN_RAMSTAGE=y +# CONFIG_ASAN is not set +CONFIG_NO_STAGE_CACHE=y +# CONFIG_TSEG_STAGE_CACHE is not set +# CONFIG_UPDATE_IMAGE is not set +# CONFIG_BOOTSPLASH_IMAGE is not set + +# +# Software Bill Of Materials (SBOM) +# +# CONFIG_SBOM is not set +# end of Software Bill Of Materials (SBOM) +# end of General setup + +# +# Mainboard +# + +# +# Important: Run 'make distclean' before switching boards +# +# CONFIG_VENDOR_51NB is not set +# CONFIG_VENDOR_ACER is not set +# CONFIG_VENDOR_AMD is not set +# CONFIG_VENDOR_AOOSTAR is not set +# CONFIG_VENDOR_AOPEN is not set +# CONFIG_VENDOR_APPLE is not set +# CONFIG_VENDOR_ARM is not set +# CONFIG_VENDOR_ASROCK is not set +# CONFIG_VENDOR_ASUS is not set +# CONFIG_VENDOR_BIOSTAR is not set +# CONFIG_VENDOR_BOSTENTECH is not set +# CONFIG_VENDOR_BYTEDANCE is not set +# CONFIG_VENDOR_CAVIUM is not set +# CONFIG_VENDOR_CLEVO is not set +# CONFIG_VENDOR_COMPULAB is not set +# CONFIG_VENDOR_CWWK is not set +CONFIG_VENDOR_DELL=y +# CONFIG_VENDOR_EMULATION is not set +# CONFIG_VENDOR_ERYING is not set +# CONFIG_VENDOR_EXAMPLE is not set +# CONFIG_VENDOR_FACEBOOK is not set +# CONFIG_VENDOR_FOXCONN is not set +# CONFIG_VENDOR_FRAMEWORK is not set +# CONFIG_VENDOR_GETAC is not set +# CONFIG_VENDOR_GIGABYTE is not set +# CONFIG_VENDOR_GOOGLE is not set +# CONFIG_VENDOR_HARDKERNEL is not set +# CONFIG_VENDOR_HP is not set +# CONFIG_VENDOR_IBASE is not set +# CONFIG_VENDOR_IBM is not set +# CONFIG_VENDOR_INTEL is not set +# CONFIG_VENDOR_INVENTEC is not set +# CONFIG_VENDOR_KONTRON is not set +# CONFIG_VENDOR_LATTEPANDA is not set +# CONFIG_VENDOR_LENOVO is not set +# CONFIG_VENDOR_LIBRETREND is not set +# CONFIG_VENDOR_MITAC_COMPUTING is not set +# CONFIG_VENDOR_MSI is not set +# CONFIG_VENDOR_NOVACUSTOM is not set +# CONFIG_VENDOR_OCP is not set +# CONFIG_VENDOR_OPENCELLULAR is not set +# CONFIG_VENDOR_PACKARDBELL is not set +# CONFIG_VENDOR_PCENGINES is not set +# CONFIG_VENDOR_PINE64 is not set +# CONFIG_VENDOR_PORTWELL is not set +# CONFIG_VENDOR_PRODRIVE is not set +# CONFIG_VENDOR_PROTECTLI is not set +# CONFIG_VENDOR_PURISM is not set +# CONFIG_VENDOR_RAPTOR_CS is not set +# CONFIG_VENDOR_RAZER is not set +# CONFIG_VENDOR_RODA is not set +# CONFIG_VENDOR_SAMSUNG is not set +# CONFIG_VENDOR_SAPPHIRE is not set +# CONFIG_VENDOR_SIEMENS is not set +# CONFIG_VENDOR_SIFIVE is not set +# CONFIG_VENDOR_STARLABS is not set +# CONFIG_VENDOR_SUPERMICRO is not set +# CONFIG_VENDOR_SYSTEM76 is not set +# CONFIG_VENDOR_TI is not set +# CONFIG_VENDOR_TOPTON is not set +# CONFIG_VENDOR_UP is not set +# CONFIG_VENDOR_VIA is not set +CONFIG_BOARD_SPECIFIC_OPTIONS=y +CONFIG_MAINBOARD_PART_NUMBER="Precision T1700 MT" +CONFIG_MAINBOARD_VERSION="1.0" +CONFIG_MAINBOARD_DIR="dell/optiplex_9020" +CONFIG_VGA_BIOS_ID="8086,0166" +CONFIG_DIMM_MAX=4 +CONFIG_DIMM_SPD_SIZE=256 +CONFIG_FMDFILE="" +# CONFIG_NO_POST is not set +CONFIG_MAINBOARD_VENDOR="Dell Inc." +CONFIG_CBFS_SIZE=0x800000 +CONFIG_CONSOLE_SERIAL=y +CONFIG_LINEAR_FRAMEBUFFER_MAX_HEIGHT=2160 +CONFIG_LINEAR_FRAMEBUFFER_MAX_WIDTH=3840 +CONFIG_MAX_CPUS=8 +# CONFIG_ONBOARD_VGA_IS_PRIMARY is not set +CONFIG_POST_DEVICE=y +CONFIG_POST_IO=y +CONFIG_UART_FOR_CONSOLE=0 +CONFIG_OVERRIDE_DEVICETREE="overridetree_mt.cb" +CONFIG_DEVICETREE="devicetree.cb" +# CONFIG_VBOOT is not set +# CONFIG_VGA_BIOS is not set +CONFIG_PCIEXP_ASPM=y +CONFIG_PCIEXP_L1_SUB_STATE=y +CONFIG_PCIEXP_CLK_PM=y +CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Dell Inc." +CONFIG_ECAM_MMCONF_BASE_ADDRESS=0xf0000000 +CONFIG_ECAM_MMCONF_BUS_NUMBER=64 +CONFIG_MEMLAYOUT_LD_FILE="src/arch/x86/memlayout.ld" +# CONFIG_FATAL_ASSERTS is not set +CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/data.vbt" +CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00 +CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME="OptiPlex 7020/9020 SFF" +# CONFIG_CONSOLE_POST is not set +CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" +CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" +CONFIG_MAX_SOCKET=1 +CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 +CONFIG_TPM_PIRQ=0x0 +# CONFIG_BOARD_DELL_E4300 is not set +# CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set +# CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set +# CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set +# CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set +# CONFIG_BOARD_DELL_OPTIPLEX_9020_SFF is not set +CONFIG_BOARD_DELL_OPTIPLEX_9020_MT=y +# CONFIG_BOARD_DELL_LATITUDE_E5420 is not set +# CONFIG_BOARD_DELL_LATITUDE_E5520 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6220 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6320 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6420 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6520 is not set +# CONFIG_BOARD_DELL_LATITUDE_E5530 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6230 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6330 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6430 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6530 is not set +# CONFIG_BOARD_DELL_OPTIPLEX_9010 is not set +# CONFIG_BOARD_DELL_PRECISION_T1650 is not set +# CONFIG_BOARD_DELL_XPS_8300 is not set +CONFIG_DCACHE_RAM_BASE=0xff7c0000 +CONFIG_DCACHE_RAM_SIZE=0x10000 +CONFIG_C_ENV_BOOTBLOCK_SIZE=0x40000 +CONFIG_DCACHE_BSP_STACK_SIZE=0x2000 +CONFIG_MAX_ACPI_TABLE_SIZE_KB=144 +CONFIG_HAVE_INTEL_FIRMWARE=y +CONFIG_MRC_SETTINGS_CACHE_SIZE=0x10000 +CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_DRIVERS_INTEL_WIFI=y +CONFIG_IFD_BIN_PATH="../../../config/ifd/dell9020mt/12_ifd" +CONFIG_ME_BIN_PATH="../../../vendorfiles/t440p/me.bin" +CONFIG_GBE_BIN_PATH="../../../config/ifd/dell9020mt/gbe" +CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 +# CONFIG_ENABLE_DDR_2X_REFRESH is not set +CONFIG_PCIEXP_AER=y +CONFIG_CARDBUS_PLUGIN_SUPPORT=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_DEBUG_SMI is not set +CONFIG_HAVE_IFD_BIN=y +CONFIG_PS2K_EISAID="PNP0303" +CONFIG_PS2M_EISAID="PNP0F13" +CONFIG_GFX_GMA_PANEL_1_PORT="eDP" +CONFIG_TTYS0_BAUD=115200 +CONFIG_D3COLD_SUPPORT=y +CONFIG_GFX_GMA_PANEL_1_ON_EDP=y +CONFIG_DRIVERS_UART_8250IO=y +CONFIG_PC_CMOS_BASE_PORT_BANK1=0x72 +CONFIG_HEAP_SIZE=0x100000 +CONFIG_EC_GPE_SCI=0x50 +CONFIG_EC_STARLABS_BATTERY_MODEL="Unknown" +CONFIG_EC_STARLABS_BATTERY_TYPE="LION" +CONFIG_EC_STARLABS_BATTERY_OEM="Unknown" +# CONFIG_TPM_MEASURED_BOOT is not set +CONFIG_BOARD_ROMSIZE_KB_12288=y +# CONFIG_COREBOOT_ROMSIZE_KB_256 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_512 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_1024 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_2048 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_4096 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_5120 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_6144 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_8192 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_10240 is not set +CONFIG_COREBOOT_ROMSIZE_KB_12288=y +# CONFIG_COREBOOT_ROMSIZE_KB_16384 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_24576 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_32768 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_65536 is not set +CONFIG_COREBOOT_ROMSIZE_KB=12288 +CONFIG_ROM_SIZE=0x00c00000 +CONFIG_HAVE_POWER_STATE_AFTER_FAILURE=y +CONFIG_HAVE_POWER_STATE_PREVIOUS_AFTER_FAILURE=y +CONFIG_POWER_STATE_OFF_AFTER_FAILURE=y +# CONFIG_POWER_STATE_ON_AFTER_FAILURE is not set +# CONFIG_POWER_STATE_PREVIOUS_AFTER_FAILURE is not set +CONFIG_MAINBOARD_POWER_FAILURE_STATE=0 +# end of Mainboard + +# +# Chipset +# + +# +# SoC +# +CONFIG_CHIPSET_DEVICETREE="" +CONFIG_CBFS_MCACHE_SIZE=0x4000 +CONFIG_ROMSTAGE_ADDR=0x2000000 +CONFIG_VERSTAGE_ADDR=0x2000000 +CONFIG_SMM_TSEG_SIZE=0x800000 +CONFIG_SMM_RESERVED_SIZE=0x100000 +CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=512 +CONFIG_SERIRQ_CONTINUOUS_MODE=y +CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 +CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 +CONFIG_EHCI_BAR=0xd8000000 +CONFIG_ACPI_CPU_STRING="CP%02X" +CONFIG_STACK_SIZE=0x2000 +CONFIG_IED_REGION_SIZE=0x400000 +CONFIG_INTEL_GMA_BCLV_OFFSET=0x48254 +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="../../../mrc/broadwell/mrc.bin" +CONFIG_DCACHE_RAM_MRC_VAR_SIZE=0x30000 +CONFIG_HPET_MIN_TICKS=0x80 +CONFIG_FIXED_MCHBAR_MMIO_BASE=0xfed10000 +CONFIG_FIXED_DMIBAR_MMIO_BASE=0xfed18000 +CONFIG_FIXED_EPBAR_MMIO_BASE=0xfed19000 +CONFIG_PCIEXP_COMMON_CLOCK=y +CONFIG_DISABLE_ME_PCI=y +CONFIG_CPU_INTEL_NUM_FIT_ENTRIES=6 +CONFIG_SOC_PHYSICAL_ADDRESS_WIDTH=0 +# CONFIG_ALWAYS_ALLOW_ABOVE_4G_ALLOCATION is not set +CONFIG_FIXED_SMBUS_IO_BASE=0x400 +CONFIG_CBFS_CACHE_ALIGN=8 + +# +# CPU +# +CONFIG_CPU_INTEL_HASWELL=y +CONFIG_CPU_INTEL_FIRMWARE_INTERFACE_TABLE=y +CONFIG_CPU_INTEL_COMMON=y +CONFIG_ENABLE_VMX=y +CONFIG_SET_IA32_FC_LOCK_BIT=y +CONFIG_SET_MSR_AESNI_LOCK_BIT=y +CONFIG_CPU_INTEL_COMMON_TIMEBASE=y +CONFIG_CPU_INTEL_COMMON_VOLTAGE=y +CONFIG_CPU_INTEL_COMMON_SMM=y +CONFIG_PARALLEL_MP=y +CONFIG_XAPIC_ONLY=y +# CONFIG_X2APIC_ONLY is not set +# CONFIG_X2APIC_RUNTIME is not set +# CONFIG_X2APIC_LATE_WORKAROUND is not set +CONFIG_UDELAY_TSC=y +CONFIG_TSC_MONOTONIC_TIMER=y +CONFIG_TSC_SYNC_MFENCE=y +CONFIG_HAVE_SMI_HANDLER=y +CONFIG_SMM_TSEG=y +CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 +CONFIG_AP_STACK_SIZE=0x800 +CONFIG_SMP=y +CONFIG_SSE=y +CONFIG_SSE2=y +CONFIG_SUPPORT_CPU_UCODE_IN_CBFS=y +CONFIG_USE_CPU_MICROCODE_CBFS_BINS=y +CONFIG_CPU_MICROCODE_CBFS_DEFAULT_BINS=y +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS is not set +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER is not set +# CONFIG_CPU_MICROCODE_CBFS_NONE is not set + +# +# Northbridge +# +CONFIG_NORTHBRIDGE_INTEL_HASWELL=y +# CONFIG_USE_NATIVE_RAMINIT is not set +CONFIG_USE_BROADWELL_MRC=y +# CONFIG_HASWELL_HIDE_PEG_FROM_MRC is not set + +# +# Southbridge +# +# CONFIG_PCIEXP_HOTPLUG is not set +CONFIG_INTEL_DESCRIPTOR_MODE_REQUIRED=y +CONFIG_SOUTHBRIDGE_INTEL_LYNXPOINT=y +CONFIG_FINALIZE_USB_ROUTE_XHCI=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RESET=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RTC=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMCLIB=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMBASE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_GPIO=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_EARLY_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI_ICH9=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PIRQ_ACPI_GEN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RCBA_PIRQ=y +CONFIG_HAVE_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_FINALIZE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_USB_DEBUG=y +CONFIG_INTEL_DESCRIPTOR_MODE_CAPABLE=y +# CONFIG_VALIDATE_INTEL_DESCRIPTOR is not set +CONFIG_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_TCO_SPACE_NOT_YET_SPLIT=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_WATCHDOG=y +CONFIG_FIXED_RCBA_MMIO_BASE=0xfed1c000 +CONFIG_RCBA_LENGTH=0x4000 + +# +# Super I/O +# +CONFIG_SUPERIO_SMSC_SCH555x=y + +# +# Embedded Controllers +# + +# +# Intel Firmware +# +CONFIG_HAVE_ME_BIN=y +# CONFIG_STITCH_ME_BIN is not set +# CONFIG_CHECK_ME is not set +# CONFIG_ME_REGION_ALLOW_CPU_READ_ACCESS is not set +# CONFIG_USE_ME_CLEANER is not set +CONFIG_MAINBOARD_USES_IFD_GBE_REGION=y +CONFIG_HAVE_GBE_BIN=y +# CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION is not set +# CONFIG_LOCK_MANAGEMENT_ENGINE is not set +CONFIG_UNLOCK_FLASH_REGIONS=y +CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 +CONFIG_ARCH_X86=y +CONFIG_ARCH_BOOTBLOCK_X86_32=y +CONFIG_ARCH_VERSTAGE_X86_32=y +CONFIG_ARCH_ROMSTAGE_X86_32=y +CONFIG_ARCH_POSTCAR_X86_32=y +CONFIG_ARCH_RAMSTAGE_X86_32=y +CONFIG_ARCH_ALL_STAGES_X86_32=y +CONFIG_RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT=y +CONFIG_X86_TOP4G_BOOTMEDIA_MAP=y +CONFIG_POSTRAM_CBFS_CACHE_IN_BSS=y +CONFIG_RAMSTAGE_CBFS_CACHE_SIZE=0x4000 +CONFIG_PC80_SYSTEM=y +CONFIG_HAVE_CMOS_DEFAULT=y +CONFIG_POSTCAR_STAGE=y +CONFIG_BOOTBLOCK_SIMPLE=y +# CONFIG_BOOTBLOCK_NORMAL is not set +CONFIG_COLLECT_TIMESTAMPS_TSC=y +CONFIG_HAVE_CF9_RESET=y +CONFIG_DEBUG_HW_BREAKPOINTS=y +CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS=y +# CONFIG_DUMP_SMBIOS_TYPE17 is not set +CONFIG_X86_BOOTBLOCK_EXTRA_PROGRAM_SZ=0 +CONFIG_DEFAULT_EBDA_LOWMEM=0x100000 +CONFIG_DEFAULT_EBDA_SEGMENT=0xF600 +CONFIG_DEFAULT_EBDA_SIZE=0x400 +# end of Chipset + +# +# Devices +# +CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y +CONFIG_HAVE_LINEAR_FRAMEBUFFER=y +CONFIG_MAINBOARD_HAS_LIBGFXINIT=y +CONFIG_MAINBOARD_USE_LIBGFXINIT=y +# CONFIG_VGA_ROM_RUN is not set +# CONFIG_NO_GFX_INIT is not set +CONFIG_NO_EARLY_GFX_INIT=y + +# +# Display +# +# CONFIG_VGA_TEXT_FRAMEBUFFER is not set +CONFIG_GENERIC_LINEAR_FRAMEBUFFER=y +CONFIG_LINEAR_FRAMEBUFFER=y +# CONFIG_BOOTSPLASH is not set +CONFIG_DEFAULT_SCREEN_ROTATION_INT=0 +# end of Display + +CONFIG_PCI=y +CONFIG_ECAM_MMCONF_SUPPORT=y +CONFIG_PCIX_PLUGIN_SUPPORT=y +CONFIG_AZALIA_HDA_CODEC_SUPPORT=y +CONFIG_PCIEXP_PLUGIN_SUPPORT=y +CONFIG_ECAM_MMCONF_LENGTH=0x04000000 +CONFIG_PCI_ALLOW_BUS_MASTER=y +CONFIG_PCI_SET_BUS_MASTER_PCI_BRIDGES=y +CONFIG_PCI_ALLOW_BUS_MASTER_ANY_DEVICE=y +# CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS is not set +# CONFIG_PCIEXP_LANE_ERR_STAT_CLEAR is not set +# CONFIG_EARLY_PCI_BRIDGE is not set +CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 +CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 +CONFIG_INTEL_GMA_HAVE_VBT=y +CONFIG_INTEL_GMA_ADD_VBT=y +# CONFIG_SOFTWARE_I2C is not set +CONFIG_I2C_TRANSFER_TIMEOUT_US=500000 +CONFIG_RESOURCE_ALLOCATION_TOP_DOWN=y +CONFIG_USE_DDR3=y +# end of Devices + +# +# Generic Drivers +# +CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set +# CONFIG_ELOG is not set +CONFIG_CACHE_MRC_SETTINGS=y +# CONFIG_MRC_SETTINGS_PROTECT is not set +# CONFIG_DRIVERS_OPTION_CFR is not set +# CONFIG_SMMSTORE is not set +CONFIG_SPI_FLASH=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY=y +# CONFIG_SPI_FLASH_NO_FAST_READ is not set +CONFIG_SPI_FLASH_ADESTO=y +CONFIG_SPI_FLASH_AMIC=y +CONFIG_SPI_FLASH_ATMEL=y +CONFIG_SPI_FLASH_EON=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_SST=y +CONFIG_SPI_FLASH_ISSI=y +CONFIG_HAVE_EM100PRO_SPI_CONSOLE_SUPPORT=y +CONFIG_TPM_INIT_RAMSTAGE=y +# CONFIG_TPM_PPI is not set +CONFIG_DRIVERS_UART=y +# CONFIG_DRIVERS_UART_OXPCIE is not set +CONFIG_HAVE_USBDEBUG=y +CONFIG_HAVE_USBDEBUG_OPTIONS=y +# CONFIG_USBDEBUG is not set +# CONFIG_VPD is not set +# CONFIG_DRIVERS_EMULATION_QEMU_FW_CFG is not set +# CONFIG_DRIVERS_GENERIC_CBFS_SERIAL is not set +# CONFIG_DRIVERS_GENERIC_CBFS_UUID is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9750 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9755 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9763E is not set +# CONFIG_DRIVERS_I2C_MAX98396 is not set +CONFIG_INTEL_DDI=y +CONFIG_INTEL_INT15=y +CONFIG_INTEL_GMA_ACPI=y +CONFIG_VBT_CBFS_COMPRESSION_LZMA=y +# CONFIG_VBT_CBFS_COMPRESSION_LZ4 is not set +# CONFIG_VBT_CBFS_COMPRESSION_NONE is not set +CONFIG_VBT_CBFS_COMPRESSION_ALGORITHM="lzma" +CONFIG_GFX_GMA=y +CONFIG_GFX_GMA_DYN_CPU=y +CONFIG_GFX_GMA_GENERATION="Haswell" +CONFIG_GFX_GMA_PCH="Lynx_Point" +CONFIG_GFX_GMA_PANEL_2_PORT="Disabled" +CONFIG_GFX_GMA_ANALOG_I2C_PORT="PCH_DAC" +# CONFIG_DRIVERS_NXP_UWB_SR1XX is not set +# CONFIG_DRIVERS_PS2_KEYBOARD is not set +CONFIG_DRIVERS_MC146818=y +# CONFIG_USE_PC_CMOS_ALTCENTURY is not set +CONFIG_PC_CMOS_BASE_PORT_BANK0=0x70 +CONFIG_MEMORY_MAPPED_TPM=y +CONFIG_TPM_TIS_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_SIL_3114 is not set +CONFIG_DRIVERS_WIFI_GENERIC=y +CONFIG_DRIVERS_MTK_WIFI=y +# end of Generic Drivers + +# +# Security +# + +# +# CBFS verification +# +# CONFIG_CBFS_VERIFICATION is not set +# end of CBFS verification + +# +# Verified Boot (vboot) +# +# end of Verified Boot (vboot) + +# +# Trusted Platform Module +# +CONFIG_TPM1=y +# CONFIG_TPM2 is not set +CONFIG_TPM=y +CONFIG_MAINBOARD_HAS_TPM1=y +# CONFIG_TPM_DEACTIVATE is not set +# CONFIG_DEBUG_TPM is not set +CONFIG_PCR_BOOT_MODE=1 +CONFIG_PCR_HWID=1 +CONFIG_PCR_SRTM=2 +CONFIG_PCR_FW_VER=10 +CONFIG_PCR_RUNTIME_DATA=3 +# end of Trusted Platform Module + +# +# Memory initialization +# +CONFIG_PLATFORM_HAS_DRAM_CLEAR=y +CONFIG_SECURITY_CLEAR_DRAM_ON_REGULAR_BOOT=y +# end of Memory initialization + +# CONFIG_INTEL_TXT is not set +# CONFIG_STM is not set +# CONFIG_INTEL_CBNT_SUPPORT is not set +CONFIG_BOOTMEDIA_LOCK_NONE=y +# CONFIG_BOOTMEDIA_LOCK_CONTROLLER is not set +# CONFIG_BOOTMEDIA_LOCK_CHIP is not set +# CONFIG_BOOTMEDIA_SMM_BWP is not set +# end of Security + +CONFIG_ACPI_HAVE_PCAT_8259=y +CONFIG_ACPI_INTEL_HARDWARE_SLEEP_VALUES=y +CONFIG_ACPI_SOC_NVS=y +CONFIG_ACPI_NO_CUSTOM_MADT=y +CONFIG_ACPI_COMMON_MADT_LAPIC=y +CONFIG_ACPI_COMMON_MADT_IOAPIC=y +CONFIG_HAVE_ACPI_TABLES=y +CONFIG_BOOT_DEVICE_SPI_FLASH=y +CONFIG_BOOT_DEVICE_MEMORY_MAPPED=y +CONFIG_BOOT_DEVICE_SUPPORTS_WRITES=y +CONFIG_RTC=y + +# +# Console +# +CONFIG_BOOTBLOCK_CONSOLE=y +CONFIG_POSTCAR_CONSOLE=y +CONFIG_SQUELCH_EARLY_SMP=y + +# +# I/O mapped, 8250-compatible +# +CONFIG_TTYS0_BASE=0x3f8 + +# +# Serial port base address = 0x3f8 +# +# CONFIG_CONSOLE_SERIAL_921600 is not set +# CONFIG_CONSOLE_SERIAL_460800 is not set +# CONFIG_CONSOLE_SERIAL_230400 is not set +CONFIG_CONSOLE_SERIAL_115200=y +# CONFIG_CONSOLE_SERIAL_57600 is not set +# CONFIG_CONSOLE_SERIAL_38400 is not set +# CONFIG_CONSOLE_SERIAL_19200 is not set +# CONFIG_CONSOLE_SERIAL_9600 is not set +CONFIG_TTYS0_LCS=3 +# CONFIG_SPKMODEM is not set +# CONFIG_CONSOLE_NE2K is not set +CONFIG_CONSOLE_CBMEM=y +# CONFIG_CONSOLE_SPI_FLASH is not set +# CONFIG_CONSOLE_I2C_SMBUS is not set +# CONFIG_EM100PRO_SPI_CONSOLE is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL_7=y +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_6 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_5 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_4 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_2 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_1 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL=7 +CONFIG_CONSOLE_USE_LOGLEVEL_PREFIX=y +CONFIG_CONSOLE_USE_ANSI_ESCAPES=y +# CONFIG_CMOS_POST is not set +CONFIG_POST_DEVICE_NONE=y +# CONFIG_POST_DEVICE_LPC is not set +# CONFIG_POST_DEVICE_PCI_PCIE is not set +CONFIG_POST_IO_PORT=0x80 +CONFIG_HWBASE_DEBUG_CB=y +# end of Console + +CONFIG_HAVE_ACPI_RESUME=y +CONFIG_RESUME_PATH_SAME_AS_BOOT=y +CONFIG_HAVE_MONOTONIC_TIMER=y +CONFIG_HAVE_OPTION_TABLE=y +CONFIG_IOAPIC=y +CONFIG_USE_WATCHDOG_ON_BOOT=y + +# +# System tables +# +CONFIG_GENERATE_SMBIOS_TABLES=y +CONFIG_BIOS_VENDOR="coreboot" +CONFIG_MAINBOARD_SERIAL_NUMBER="123456789" +# end of System tables + +# +# Payload +# +CONFIG_PAYLOAD_NONE=y +# end of Payload + +# +# Debugging +# + +# +# CPU Debug Settings +# +# CONFIG_DISPLAY_MTRRS is not set + +# +# Vendorcode Debug Settings +# + +# +# BLOB Debug Settings +# + +# +# General Debug Settings +# +# CONFIG_GDB_STUB is not set +# CONFIG_DEBUG_CBFS is not set +CONFIG_HAVE_DEBUG_SMBUS=y +# CONFIG_DEBUG_SMBUS is not set +# CONFIG_DEBUG_MALLOC is not set +# CONFIG_DEBUG_CONSOLE_INIT is not set +# CONFIG_DEBUG_SPI_FLASH is not set +# CONFIG_DEBUG_BOOT_STATE is not set +# CONFIG_DEBUG_ADA_CODE is not set +CONFIG_HAVE_EM100_SUPPORT=y +# CONFIG_EM100 is not set +# CONFIG_DEBUG_ACPICA_COMPATIBLE is not set +# end of Debugging + +CONFIG_RAMSTAGE_ADA=y +CONFIG_RAMSTAGE_LIBHWBASE=y +CONFIG_HWBASE_DYNAMIC_MMIO=y +CONFIG_HWBASE_DEFAULT_MMCONF=0xf0000000 +CONFIG_HWBASE_DIRECT_PCIDEV=y +CONFIG_DECOMPRESS_OFAST=y + +# +# Boot Logo Configuration +# +# CONFIG_BMP_LOGO is not set +# end of Boot Logo Configuration + +CONFIG_WARNINGS_ARE_ERRORS=y +CONFIG_MAX_REBOOT_CNT=3 +CONFIG_RELOCATABLE_MODULES=y +CONFIG_HAVE_BOOTBLOCK=y +CONFIG_HAVE_ROMSTAGE=y +CONFIG_HAVE_RAMSTAGE=y diff --git a/config/coreboot/t1700mt_bmrc_12mb/config/libgfxinit_txtmode b/config/coreboot/t1700mt_bmrc_12mb/config/libgfxinit_txtmode new file mode 100644 index 00000000..0fe8a3ec --- /dev/null +++ b/config/coreboot/t1700mt_bmrc_12mb/config/libgfxinit_txtmode @@ -0,0 +1,689 @@ +# +# Automatically generated file; DO NOT EDIT. +# coreboot configuration +# + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_CBFS_PREFIX="fallback" +CONFIG_COMPILER_GCC=y +# CONFIG_COMPILER_LLVM_CLANG is not set +# CONFIG_ANY_TOOLCHAIN is not set +# CONFIG_CCACHE is not set +# CONFIG_LTO is not set +# CONFIG_IWYU is not set +# CONFIG_FMD_GENPARSER is not set +# CONFIG_UTIL_GENPARSER is not set +# CONFIG_OPTION_BACKEND_NONE is not set +CONFIG_USE_OPTION_TABLE=y +# CONFIG_USE_CBFS_FILE_OPTION_BACKEND is not set +CONFIG_STATIC_OPTION_TABLE=y +CONFIG_COMPRESS_RAMSTAGE_LZMA=y +# CONFIG_COMPRESS_RAMSTAGE_LZ4 is not set +CONFIG_SEPARATE_ROMSTAGE=y +CONFIG_INCLUDE_CONFIG_FILE=y +CONFIG_COLLECT_TIMESTAMPS=y +# CONFIG_TIMESTAMPS_ON_CONSOLE is not set +CONFIG_USE_BLOBS=y +# CONFIG_USE_AMD_BLOBS is not set +# CONFIG_USE_QC_BLOBS is not set +# CONFIG_COVERAGE is not set +# CONFIG_UBSAN is not set +CONFIG_HAVE_ASAN_IN_ROMSTAGE=y +CONFIG_HAVE_ASAN_IN_RAMSTAGE=y +# CONFIG_ASAN is not set +CONFIG_NO_STAGE_CACHE=y +# CONFIG_TSEG_STAGE_CACHE is not set +# CONFIG_UPDATE_IMAGE is not set +# CONFIG_BOOTSPLASH_IMAGE is not set + +# +# Software Bill Of Materials (SBOM) +# +# CONFIG_SBOM is not set +# end of Software Bill Of Materials (SBOM) +# end of General setup + +# +# Mainboard +# + +# +# Important: Run 'make distclean' before switching boards +# +# CONFIG_VENDOR_51NB is not set +# CONFIG_VENDOR_ACER is not set +# CONFIG_VENDOR_AMD is not set +# CONFIG_VENDOR_AOOSTAR is not set +# CONFIG_VENDOR_AOPEN is not set +# CONFIG_VENDOR_APPLE is not set +# CONFIG_VENDOR_ARM is not set +# CONFIG_VENDOR_ASROCK is not set +# CONFIG_VENDOR_ASUS is not set +# CONFIG_VENDOR_BIOSTAR is not set +# CONFIG_VENDOR_BOSTENTECH is not set +# CONFIG_VENDOR_BYTEDANCE is not set +# CONFIG_VENDOR_CAVIUM is not set +# CONFIG_VENDOR_CLEVO is not set +# CONFIG_VENDOR_COMPULAB is not set +# CONFIG_VENDOR_CWWK is not set +CONFIG_VENDOR_DELL=y +# CONFIG_VENDOR_EMULATION is not set +# CONFIG_VENDOR_ERYING is not set +# CONFIG_VENDOR_EXAMPLE is not set +# CONFIG_VENDOR_FACEBOOK is not set +# CONFIG_VENDOR_FOXCONN is not set +# CONFIG_VENDOR_FRAMEWORK is not set +# CONFIG_VENDOR_GETAC is not set +# CONFIG_VENDOR_GIGABYTE is not set +# CONFIG_VENDOR_GOOGLE is not set +# CONFIG_VENDOR_HARDKERNEL is not set +# CONFIG_VENDOR_HP is not set +# CONFIG_VENDOR_IBASE is not set +# CONFIG_VENDOR_IBM is not set +# CONFIG_VENDOR_INTEL is not set +# CONFIG_VENDOR_INVENTEC is not set +# CONFIG_VENDOR_KONTRON is not set +# CONFIG_VENDOR_LATTEPANDA is not set +# CONFIG_VENDOR_LENOVO is not set +# CONFIG_VENDOR_LIBRETREND is not set +# CONFIG_VENDOR_MITAC_COMPUTING is not set +# CONFIG_VENDOR_MSI is not set +# CONFIG_VENDOR_NOVACUSTOM is not set +# CONFIG_VENDOR_OCP is not set +# CONFIG_VENDOR_OPENCELLULAR is not set +# CONFIG_VENDOR_PACKARDBELL is not set +# CONFIG_VENDOR_PCENGINES is not set +# CONFIG_VENDOR_PINE64 is not set +# CONFIG_VENDOR_PORTWELL is not set +# CONFIG_VENDOR_PRODRIVE is not set +# CONFIG_VENDOR_PROTECTLI is not set +# CONFIG_VENDOR_PURISM is not set +# CONFIG_VENDOR_RAPTOR_CS is not set +# CONFIG_VENDOR_RAZER is not set +# CONFIG_VENDOR_RODA is not set +# CONFIG_VENDOR_SAMSUNG is not set +# CONFIG_VENDOR_SAPPHIRE is not set +# CONFIG_VENDOR_SIEMENS is not set +# CONFIG_VENDOR_SIFIVE is not set +# CONFIG_VENDOR_STARLABS is not set +# CONFIG_VENDOR_SUPERMICRO is not set +# CONFIG_VENDOR_SYSTEM76 is not set +# CONFIG_VENDOR_TI is not set +# CONFIG_VENDOR_TOPTON is not set +# CONFIG_VENDOR_UP is not set +# CONFIG_VENDOR_VIA is not set +CONFIG_BOARD_SPECIFIC_OPTIONS=y +CONFIG_MAINBOARD_PART_NUMBER="Precision T1700 MT" +CONFIG_MAINBOARD_VERSION="1.0" +CONFIG_MAINBOARD_DIR="dell/optiplex_9020" +CONFIG_VGA_BIOS_ID="8086,0166" +CONFIG_DIMM_MAX=4 +CONFIG_DIMM_SPD_SIZE=256 +CONFIG_FMDFILE="" +# CONFIG_NO_POST is not set +CONFIG_MAINBOARD_VENDOR="Dell Inc." +CONFIG_CBFS_SIZE=0x800000 +CONFIG_CONSOLE_SERIAL=y +CONFIG_MAX_CPUS=8 +# CONFIG_ONBOARD_VGA_IS_PRIMARY is not set +CONFIG_POST_DEVICE=y +CONFIG_POST_IO=y +CONFIG_UART_FOR_CONSOLE=0 +CONFIG_OVERRIDE_DEVICETREE="overridetree_mt.cb" +CONFIG_DEVICETREE="devicetree.cb" +# CONFIG_VBOOT is not set +# CONFIG_VGA_BIOS is not set +CONFIG_PCIEXP_ASPM=y +CONFIG_PCIEXP_L1_SUB_STATE=y +CONFIG_PCIEXP_CLK_PM=y +CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Dell Inc." +CONFIG_ECAM_MMCONF_BASE_ADDRESS=0xf0000000 +CONFIG_ECAM_MMCONF_BUS_NUMBER=64 +CONFIG_MEMLAYOUT_LD_FILE="src/arch/x86/memlayout.ld" +# CONFIG_FATAL_ASSERTS is not set +CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/data.vbt" +CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00 +CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME="OptiPlex 7020/9020 SFF" +# CONFIG_CONSOLE_POST is not set +CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" +CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" +CONFIG_MAX_SOCKET=1 +CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 +CONFIG_TPM_PIRQ=0x0 +# CONFIG_BOARD_DELL_E4300 is not set +# CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set +# CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set +# CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set +# CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set +# CONFIG_BOARD_DELL_OPTIPLEX_9020_SFF is not set +CONFIG_BOARD_DELL_OPTIPLEX_9020_MT=y +# CONFIG_BOARD_DELL_LATITUDE_E5420 is not set +# CONFIG_BOARD_DELL_LATITUDE_E5520 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6220 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6320 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6420 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6520 is not set +# CONFIG_BOARD_DELL_LATITUDE_E5530 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6230 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6330 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6430 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6530 is not set +# CONFIG_BOARD_DELL_OPTIPLEX_9010 is not set +# CONFIG_BOARD_DELL_PRECISION_T1650 is not set +# CONFIG_BOARD_DELL_XPS_8300 is not set +CONFIG_DCACHE_RAM_BASE=0xff7c0000 +CONFIG_DCACHE_RAM_SIZE=0x10000 +CONFIG_C_ENV_BOOTBLOCK_SIZE=0x40000 +CONFIG_DCACHE_BSP_STACK_SIZE=0x2000 +CONFIG_MAX_ACPI_TABLE_SIZE_KB=144 +CONFIG_HAVE_INTEL_FIRMWARE=y +CONFIG_MRC_SETTINGS_CACHE_SIZE=0x10000 +CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_DRIVERS_INTEL_WIFI=y +CONFIG_IFD_BIN_PATH="../../../config/ifd/dell9020mt/12_ifd" +CONFIG_ME_BIN_PATH="../../../vendorfiles/t440p/me.bin" +CONFIG_GBE_BIN_PATH="../../../config/ifd/dell9020mt/gbe" +CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 +# CONFIG_ENABLE_DDR_2X_REFRESH is not set +CONFIG_PCIEXP_AER=y +CONFIG_CARDBUS_PLUGIN_SUPPORT=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_DEBUG_SMI is not set +CONFIG_HAVE_IFD_BIN=y +CONFIG_PS2K_EISAID="PNP0303" +CONFIG_PS2M_EISAID="PNP0F13" +CONFIG_GFX_GMA_PANEL_1_PORT="eDP" +CONFIG_TTYS0_BAUD=115200 +CONFIG_D3COLD_SUPPORT=y +CONFIG_GFX_GMA_PANEL_1_ON_EDP=y +CONFIG_DRIVERS_UART_8250IO=y +CONFIG_PC_CMOS_BASE_PORT_BANK1=0x72 +CONFIG_HEAP_SIZE=0x100000 +CONFIG_EC_GPE_SCI=0x50 +CONFIG_EC_STARLABS_BATTERY_MODEL="Unknown" +CONFIG_EC_STARLABS_BATTERY_TYPE="LION" +CONFIG_EC_STARLABS_BATTERY_OEM="Unknown" +# CONFIG_TPM_MEASURED_BOOT is not set +CONFIG_BOARD_ROMSIZE_KB_12288=y +# CONFIG_COREBOOT_ROMSIZE_KB_256 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_512 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_1024 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_2048 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_4096 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_5120 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_6144 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_8192 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_10240 is not set +CONFIG_COREBOOT_ROMSIZE_KB_12288=y +# CONFIG_COREBOOT_ROMSIZE_KB_16384 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_24576 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_32768 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_65536 is not set +CONFIG_COREBOOT_ROMSIZE_KB=12288 +CONFIG_ROM_SIZE=0x00c00000 +CONFIG_HAVE_POWER_STATE_AFTER_FAILURE=y +CONFIG_HAVE_POWER_STATE_PREVIOUS_AFTER_FAILURE=y +CONFIG_POWER_STATE_OFF_AFTER_FAILURE=y +# CONFIG_POWER_STATE_ON_AFTER_FAILURE is not set +# CONFIG_POWER_STATE_PREVIOUS_AFTER_FAILURE is not set +CONFIG_MAINBOARD_POWER_FAILURE_STATE=0 +# end of Mainboard + +# +# Chipset +# + +# +# SoC +# +CONFIG_CHIPSET_DEVICETREE="" +CONFIG_CBFS_MCACHE_SIZE=0x4000 +CONFIG_ROMSTAGE_ADDR=0x2000000 +CONFIG_VERSTAGE_ADDR=0x2000000 +CONFIG_SMM_TSEG_SIZE=0x800000 +CONFIG_SMM_RESERVED_SIZE=0x100000 +CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=512 +CONFIG_SERIRQ_CONTINUOUS_MODE=y +CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 +CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 +CONFIG_EHCI_BAR=0xd8000000 +CONFIG_ACPI_CPU_STRING="CP%02X" +CONFIG_STACK_SIZE=0x2000 +CONFIG_IED_REGION_SIZE=0x400000 +CONFIG_INTEL_GMA_BCLV_OFFSET=0x48254 +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="../../../mrc/broadwell/mrc.bin" +CONFIG_DCACHE_RAM_MRC_VAR_SIZE=0x30000 +CONFIG_HPET_MIN_TICKS=0x80 +CONFIG_FIXED_MCHBAR_MMIO_BASE=0xfed10000 +CONFIG_FIXED_DMIBAR_MMIO_BASE=0xfed18000 +CONFIG_FIXED_EPBAR_MMIO_BASE=0xfed19000 +CONFIG_PCIEXP_COMMON_CLOCK=y +CONFIG_DISABLE_ME_PCI=y +CONFIG_CPU_INTEL_NUM_FIT_ENTRIES=6 +CONFIG_SOC_PHYSICAL_ADDRESS_WIDTH=0 +# CONFIG_ALWAYS_ALLOW_ABOVE_4G_ALLOCATION is not set +CONFIG_FIXED_SMBUS_IO_BASE=0x400 +CONFIG_CBFS_CACHE_ALIGN=8 + +# +# CPU +# +CONFIG_CPU_INTEL_HASWELL=y +CONFIG_CPU_INTEL_FIRMWARE_INTERFACE_TABLE=y +CONFIG_CPU_INTEL_COMMON=y +CONFIG_ENABLE_VMX=y +CONFIG_SET_IA32_FC_LOCK_BIT=y +CONFIG_SET_MSR_AESNI_LOCK_BIT=y +CONFIG_CPU_INTEL_COMMON_TIMEBASE=y +CONFIG_CPU_INTEL_COMMON_VOLTAGE=y +CONFIG_CPU_INTEL_COMMON_SMM=y +CONFIG_PARALLEL_MP=y +CONFIG_XAPIC_ONLY=y +# CONFIG_X2APIC_ONLY is not set +# CONFIG_X2APIC_RUNTIME is not set +# CONFIG_X2APIC_LATE_WORKAROUND is not set +CONFIG_UDELAY_TSC=y +CONFIG_TSC_MONOTONIC_TIMER=y +CONFIG_TSC_SYNC_MFENCE=y +CONFIG_HAVE_SMI_HANDLER=y +CONFIG_SMM_TSEG=y +CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 +CONFIG_AP_STACK_SIZE=0x800 +CONFIG_SMP=y +CONFIG_SSE=y +CONFIG_SSE2=y +CONFIG_SUPPORT_CPU_UCODE_IN_CBFS=y +CONFIG_USE_CPU_MICROCODE_CBFS_BINS=y +CONFIG_CPU_MICROCODE_CBFS_DEFAULT_BINS=y +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS is not set +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER is not set +# CONFIG_CPU_MICROCODE_CBFS_NONE is not set + +# +# Northbridge +# +CONFIG_NORTHBRIDGE_INTEL_HASWELL=y +# CONFIG_USE_NATIVE_RAMINIT is not set +CONFIG_USE_BROADWELL_MRC=y +# CONFIG_HASWELL_HIDE_PEG_FROM_MRC is not set + +# +# Southbridge +# +# CONFIG_PCIEXP_HOTPLUG is not set +CONFIG_INTEL_DESCRIPTOR_MODE_REQUIRED=y +CONFIG_SOUTHBRIDGE_INTEL_LYNXPOINT=y +CONFIG_FINALIZE_USB_ROUTE_XHCI=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RESET=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RTC=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMCLIB=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMBASE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_GPIO=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_EARLY_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI_ICH9=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PIRQ_ACPI_GEN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RCBA_PIRQ=y +CONFIG_HAVE_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_FINALIZE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_USB_DEBUG=y +CONFIG_INTEL_DESCRIPTOR_MODE_CAPABLE=y +# CONFIG_VALIDATE_INTEL_DESCRIPTOR is not set +CONFIG_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_TCO_SPACE_NOT_YET_SPLIT=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_WATCHDOG=y +CONFIG_FIXED_RCBA_MMIO_BASE=0xfed1c000 +CONFIG_RCBA_LENGTH=0x4000 + +# +# Super I/O +# +CONFIG_SUPERIO_SMSC_SCH555x=y + +# +# Embedded Controllers +# + +# +# Intel Firmware +# +CONFIG_HAVE_ME_BIN=y +# CONFIG_STITCH_ME_BIN is not set +# CONFIG_CHECK_ME is not set +# CONFIG_ME_REGION_ALLOW_CPU_READ_ACCESS is not set +# CONFIG_USE_ME_CLEANER is not set +CONFIG_MAINBOARD_USES_IFD_GBE_REGION=y +CONFIG_HAVE_GBE_BIN=y +# CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION is not set +# CONFIG_LOCK_MANAGEMENT_ENGINE is not set +CONFIG_UNLOCK_FLASH_REGIONS=y +CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 +CONFIG_ARCH_X86=y +CONFIG_ARCH_BOOTBLOCK_X86_32=y +CONFIG_ARCH_VERSTAGE_X86_32=y +CONFIG_ARCH_ROMSTAGE_X86_32=y +CONFIG_ARCH_POSTCAR_X86_32=y +CONFIG_ARCH_RAMSTAGE_X86_32=y +CONFIG_ARCH_ALL_STAGES_X86_32=y +CONFIG_RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT=y +CONFIG_X86_TOP4G_BOOTMEDIA_MAP=y +CONFIG_POSTRAM_CBFS_CACHE_IN_BSS=y +CONFIG_RAMSTAGE_CBFS_CACHE_SIZE=0x4000 +CONFIG_PC80_SYSTEM=y +CONFIG_HAVE_CMOS_DEFAULT=y +CONFIG_POSTCAR_STAGE=y +CONFIG_BOOTBLOCK_SIMPLE=y +# CONFIG_BOOTBLOCK_NORMAL is not set +CONFIG_COLLECT_TIMESTAMPS_TSC=y +CONFIG_HAVE_CF9_RESET=y +CONFIG_DEBUG_HW_BREAKPOINTS=y +CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS=y +# CONFIG_DUMP_SMBIOS_TYPE17 is not set +CONFIG_X86_BOOTBLOCK_EXTRA_PROGRAM_SZ=0 +CONFIG_DEFAULT_EBDA_LOWMEM=0x100000 +CONFIG_DEFAULT_EBDA_SEGMENT=0xF600 +CONFIG_DEFAULT_EBDA_SIZE=0x400 +# end of Chipset + +# +# Devices +# +CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y +CONFIG_HAVE_LINEAR_FRAMEBUFFER=y +CONFIG_MAINBOARD_HAS_LIBGFXINIT=y +CONFIG_MAINBOARD_USE_LIBGFXINIT=y +# CONFIG_VGA_ROM_RUN is not set +# CONFIG_NO_GFX_INIT is not set +CONFIG_NO_EARLY_GFX_INIT=y + +# +# Display +# +CONFIG_VGA_TEXT_FRAMEBUFFER=y +# CONFIG_GENERIC_LINEAR_FRAMEBUFFER is not set +CONFIG_DEFAULT_SCREEN_ROTATION_INT=0 +# end of Display + +CONFIG_PCI=y +CONFIG_ECAM_MMCONF_SUPPORT=y +CONFIG_PCIX_PLUGIN_SUPPORT=y +CONFIG_AZALIA_HDA_CODEC_SUPPORT=y +CONFIG_PCIEXP_PLUGIN_SUPPORT=y +CONFIG_ECAM_MMCONF_LENGTH=0x04000000 +CONFIG_PCI_ALLOW_BUS_MASTER=y +CONFIG_PCI_SET_BUS_MASTER_PCI_BRIDGES=y +CONFIG_PCI_ALLOW_BUS_MASTER_ANY_DEVICE=y +# CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS is not set +# CONFIG_PCIEXP_LANE_ERR_STAT_CLEAR is not set +# CONFIG_EARLY_PCI_BRIDGE is not set +CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 +CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 +CONFIG_INTEL_GMA_HAVE_VBT=y +CONFIG_INTEL_GMA_ADD_VBT=y +# CONFIG_SOFTWARE_I2C is not set +CONFIG_I2C_TRANSFER_TIMEOUT_US=500000 +CONFIG_RESOURCE_ALLOCATION_TOP_DOWN=y +CONFIG_USE_DDR3=y +# end of Devices + +# +# Generic Drivers +# +CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set +# CONFIG_ELOG is not set +CONFIG_CACHE_MRC_SETTINGS=y +# CONFIG_MRC_SETTINGS_PROTECT is not set +# CONFIG_DRIVERS_OPTION_CFR is not set +# CONFIG_SMMSTORE is not set +CONFIG_SPI_FLASH=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY=y +# CONFIG_SPI_FLASH_NO_FAST_READ is not set +CONFIG_SPI_FLASH_ADESTO=y +CONFIG_SPI_FLASH_AMIC=y +CONFIG_SPI_FLASH_ATMEL=y +CONFIG_SPI_FLASH_EON=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_SST=y +CONFIG_SPI_FLASH_ISSI=y +CONFIG_HAVE_EM100PRO_SPI_CONSOLE_SUPPORT=y +CONFIG_TPM_INIT_RAMSTAGE=y +# CONFIG_TPM_PPI is not set +CONFIG_DRIVERS_UART=y +# CONFIG_DRIVERS_UART_OXPCIE is not set +CONFIG_HAVE_USBDEBUG=y +CONFIG_HAVE_USBDEBUG_OPTIONS=y +# CONFIG_USBDEBUG is not set +# CONFIG_VPD is not set +# CONFIG_DRIVERS_EMULATION_QEMU_FW_CFG is not set +# CONFIG_DRIVERS_GENERIC_CBFS_SERIAL is not set +# CONFIG_DRIVERS_GENERIC_CBFS_UUID is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9750 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9755 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9763E is not set +# CONFIG_DRIVERS_I2C_MAX98396 is not set +CONFIG_INTEL_DDI=y +CONFIG_INTEL_INT15=y +CONFIG_INTEL_GMA_ACPI=y +CONFIG_VBT_CBFS_COMPRESSION_LZMA=y +# CONFIG_VBT_CBFS_COMPRESSION_LZ4 is not set +# CONFIG_VBT_CBFS_COMPRESSION_NONE is not set +CONFIG_VBT_CBFS_COMPRESSION_ALGORITHM="lzma" +CONFIG_GFX_GMA=y +CONFIG_GFX_GMA_DYN_CPU=y +CONFIG_GFX_GMA_GENERATION="Haswell" +CONFIG_GFX_GMA_PCH="Lynx_Point" +CONFIG_GFX_GMA_PANEL_2_PORT="Disabled" +CONFIG_GFX_GMA_ANALOG_I2C_PORT="PCH_DAC" +# CONFIG_DRIVERS_NXP_UWB_SR1XX is not set +# CONFIG_DRIVERS_PS2_KEYBOARD is not set +CONFIG_DRIVERS_MC146818=y +# CONFIG_USE_PC_CMOS_ALTCENTURY is not set +CONFIG_PC_CMOS_BASE_PORT_BANK0=0x70 +CONFIG_MEMORY_MAPPED_TPM=y +CONFIG_TPM_TIS_BASE_ADDRESS=0xfed40000 +CONFIG_VGA=y +# CONFIG_DRIVERS_SIL_3114 is not set +CONFIG_DRIVERS_WIFI_GENERIC=y +CONFIG_DRIVERS_MTK_WIFI=y +# end of Generic Drivers + +# +# Security +# + +# +# CBFS verification +# +# CONFIG_CBFS_VERIFICATION is not set +# end of CBFS verification + +# +# Verified Boot (vboot) +# +# end of Verified Boot (vboot) + +# +# Trusted Platform Module +# +CONFIG_TPM1=y +# CONFIG_TPM2 is not set +CONFIG_TPM=y +CONFIG_MAINBOARD_HAS_TPM1=y +# CONFIG_TPM_DEACTIVATE is not set +# CONFIG_DEBUG_TPM is not set +CONFIG_PCR_BOOT_MODE=1 +CONFIG_PCR_HWID=1 +CONFIG_PCR_SRTM=2 +CONFIG_PCR_FW_VER=10 +CONFIG_PCR_RUNTIME_DATA=3 +# end of Trusted Platform Module + +# +# Memory initialization +# +CONFIG_PLATFORM_HAS_DRAM_CLEAR=y +CONFIG_SECURITY_CLEAR_DRAM_ON_REGULAR_BOOT=y +# end of Memory initialization + +# CONFIG_INTEL_TXT is not set +# CONFIG_STM is not set +# CONFIG_INTEL_CBNT_SUPPORT is not set +CONFIG_BOOTMEDIA_LOCK_NONE=y +# CONFIG_BOOTMEDIA_LOCK_CONTROLLER is not set +# CONFIG_BOOTMEDIA_LOCK_CHIP is not set +# CONFIG_BOOTMEDIA_SMM_BWP is not set +# end of Security + +CONFIG_ACPI_HAVE_PCAT_8259=y +CONFIG_ACPI_INTEL_HARDWARE_SLEEP_VALUES=y +CONFIG_ACPI_SOC_NVS=y +CONFIG_ACPI_NO_CUSTOM_MADT=y +CONFIG_ACPI_COMMON_MADT_LAPIC=y +CONFIG_ACPI_COMMON_MADT_IOAPIC=y +CONFIG_HAVE_ACPI_TABLES=y +CONFIG_BOOT_DEVICE_SPI_FLASH=y +CONFIG_BOOT_DEVICE_MEMORY_MAPPED=y +CONFIG_BOOT_DEVICE_SUPPORTS_WRITES=y +CONFIG_RTC=y + +# +# Console +# +CONFIG_BOOTBLOCK_CONSOLE=y +CONFIG_POSTCAR_CONSOLE=y +CONFIG_SQUELCH_EARLY_SMP=y + +# +# I/O mapped, 8250-compatible +# +CONFIG_TTYS0_BASE=0x3f8 + +# +# Serial port base address = 0x3f8 +# +# CONFIG_CONSOLE_SERIAL_921600 is not set +# CONFIG_CONSOLE_SERIAL_460800 is not set +# CONFIG_CONSOLE_SERIAL_230400 is not set +CONFIG_CONSOLE_SERIAL_115200=y +# CONFIG_CONSOLE_SERIAL_57600 is not set +# CONFIG_CONSOLE_SERIAL_38400 is not set +# CONFIG_CONSOLE_SERIAL_19200 is not set +# CONFIG_CONSOLE_SERIAL_9600 is not set +CONFIG_TTYS0_LCS=3 +# CONFIG_SPKMODEM is not set +# CONFIG_CONSOLE_NE2K is not set +CONFIG_CONSOLE_CBMEM=y +# CONFIG_CONSOLE_SPI_FLASH is not set +# CONFIG_CONSOLE_I2C_SMBUS is not set +# CONFIG_EM100PRO_SPI_CONSOLE is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL_7=y +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_6 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_5 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_4 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_2 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_1 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL=7 +CONFIG_CONSOLE_USE_LOGLEVEL_PREFIX=y +CONFIG_CONSOLE_USE_ANSI_ESCAPES=y +# CONFIG_CMOS_POST is not set +CONFIG_POST_DEVICE_NONE=y +# CONFIG_POST_DEVICE_LPC is not set +# CONFIG_POST_DEVICE_PCI_PCIE is not set +CONFIG_POST_IO_PORT=0x80 +CONFIG_HWBASE_DEBUG_CB=y +# end of Console + +CONFIG_HAVE_ACPI_RESUME=y +CONFIG_RESUME_PATH_SAME_AS_BOOT=y +CONFIG_HAVE_MONOTONIC_TIMER=y +CONFIG_HAVE_OPTION_TABLE=y +CONFIG_IOAPIC=y +CONFIG_USE_WATCHDOG_ON_BOOT=y + +# +# System tables +# +CONFIG_GENERATE_SMBIOS_TABLES=y +CONFIG_BIOS_VENDOR="coreboot" +CONFIG_MAINBOARD_SERIAL_NUMBER="123456789" +# end of System tables + +# +# Payload +# +CONFIG_PAYLOAD_NONE=y +# end of Payload + +# +# Debugging +# + +# +# CPU Debug Settings +# +# CONFIG_DISPLAY_MTRRS is not set + +# +# Vendorcode Debug Settings +# + +# +# BLOB Debug Settings +# + +# +# General Debug Settings +# +# CONFIG_GDB_STUB is not set +# CONFIG_DEBUG_CBFS is not set +CONFIG_HAVE_DEBUG_SMBUS=y +# CONFIG_DEBUG_SMBUS is not set +# CONFIG_DEBUG_MALLOC is not set +# CONFIG_DEBUG_CONSOLE_INIT is not set +# CONFIG_DEBUG_SPI_FLASH is not set +# CONFIG_DEBUG_BOOT_STATE is not set +# CONFIG_DEBUG_ADA_CODE is not set +CONFIG_HAVE_EM100_SUPPORT=y +# CONFIG_EM100 is not set +# CONFIG_DEBUG_ACPICA_COMPATIBLE is not set +# end of Debugging + +CONFIG_RAMSTAGE_ADA=y +CONFIG_RAMSTAGE_LIBHWBASE=y +CONFIG_HWBASE_DYNAMIC_MMIO=y +CONFIG_HWBASE_DEFAULT_MMCONF=0xf0000000 +CONFIG_HWBASE_DIRECT_PCIDEV=y +CONFIG_DECOMPRESS_OFAST=y + +# +# Boot Logo Configuration +# +# CONFIG_BMP_LOGO is not set +# end of Boot Logo Configuration + +CONFIG_WARNINGS_ARE_ERRORS=y +CONFIG_MAX_REBOOT_CNT=3 +CONFIG_RELOCATABLE_MODULES=y +CONFIG_HAVE_BOOTBLOCK=y +CONFIG_HAVE_ROMSTAGE=y +CONFIG_HAVE_RAMSTAGE=y diff --git a/config/coreboot/t1700mt_bmrc_12mb/target.cfg b/config/coreboot/t1700mt_bmrc_12mb/target.cfg new file mode 100644 index 00000000..a2d591d1 --- /dev/null +++ b/config/coreboot/t1700mt_bmrc_12mb/target.cfg @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +tree="default" +xarch="i386-elf" +payload_seabios="y" +payload_grub="y" +payload_memtest="y" +grub_scan_disk="nvme ahci" +grubtree="xhci_nvme" +vcfg="t1700" +build_depend="seabios/default grub/xhci_nvme memtest86plus u-boot/amd64coreboot" +payload_uboot="amd64" diff --git a/config/coreboot/t1700sff_bmrc_12mb/config/libgfxinit_corebootfb b/config/coreboot/t1700sff_bmrc_12mb/config/libgfxinit_corebootfb new file mode 100644 index 00000000..b068a09f --- /dev/null +++ b/config/coreboot/t1700sff_bmrc_12mb/config/libgfxinit_corebootfb @@ -0,0 +1,692 @@ +# +# Automatically generated file; DO NOT EDIT. +# coreboot configuration +# + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_CBFS_PREFIX="fallback" +CONFIG_COMPILER_GCC=y +# CONFIG_COMPILER_LLVM_CLANG is not set +# CONFIG_ANY_TOOLCHAIN is not set +# CONFIG_CCACHE is not set +# CONFIG_LTO is not set +# CONFIG_IWYU is not set +# CONFIG_FMD_GENPARSER is not set +# CONFIG_UTIL_GENPARSER is not set +# CONFIG_OPTION_BACKEND_NONE is not set +CONFIG_USE_OPTION_TABLE=y +# CONFIG_USE_CBFS_FILE_OPTION_BACKEND is not set +CONFIG_STATIC_OPTION_TABLE=y +CONFIG_COMPRESS_RAMSTAGE_LZMA=y +# CONFIG_COMPRESS_RAMSTAGE_LZ4 is not set +CONFIG_SEPARATE_ROMSTAGE=y +CONFIG_INCLUDE_CONFIG_FILE=y +CONFIG_COLLECT_TIMESTAMPS=y +# CONFIG_TIMESTAMPS_ON_CONSOLE is not set +CONFIG_USE_BLOBS=y +# CONFIG_USE_AMD_BLOBS is not set +# CONFIG_USE_QC_BLOBS is not set +# CONFIG_COVERAGE is not set +# CONFIG_UBSAN is not set +CONFIG_HAVE_ASAN_IN_ROMSTAGE=y +CONFIG_HAVE_ASAN_IN_RAMSTAGE=y +# CONFIG_ASAN is not set +CONFIG_NO_STAGE_CACHE=y +# CONFIG_TSEG_STAGE_CACHE is not set +# CONFIG_UPDATE_IMAGE is not set +# CONFIG_BOOTSPLASH_IMAGE is not set + +# +# Software Bill Of Materials (SBOM) +# +# CONFIG_SBOM is not set +# end of Software Bill Of Materials (SBOM) +# end of General setup + +# +# Mainboard +# + +# +# Important: Run 'make distclean' before switching boards +# +# CONFIG_VENDOR_51NB is not set +# CONFIG_VENDOR_ACER is not set +# CONFIG_VENDOR_AMD is not set +# CONFIG_VENDOR_AOOSTAR is not set +# CONFIG_VENDOR_AOPEN is not set +# CONFIG_VENDOR_APPLE is not set +# CONFIG_VENDOR_ARM is not set +# CONFIG_VENDOR_ASROCK is not set +# CONFIG_VENDOR_ASUS is not set +# CONFIG_VENDOR_BIOSTAR is not set +# CONFIG_VENDOR_BOSTENTECH is not set +# CONFIG_VENDOR_BYTEDANCE is not set +# CONFIG_VENDOR_CAVIUM is not set +# CONFIG_VENDOR_CLEVO is not set +# CONFIG_VENDOR_COMPULAB is not set +# CONFIG_VENDOR_CWWK is not set +CONFIG_VENDOR_DELL=y +# CONFIG_VENDOR_EMULATION is not set +# CONFIG_VENDOR_ERYING is not set +# CONFIG_VENDOR_EXAMPLE is not set +# CONFIG_VENDOR_FACEBOOK is not set +# CONFIG_VENDOR_FOXCONN is not set +# CONFIG_VENDOR_FRAMEWORK is not set +# CONFIG_VENDOR_GETAC is not set +# CONFIG_VENDOR_GIGABYTE is not set +# CONFIG_VENDOR_GOOGLE is not set +# CONFIG_VENDOR_HARDKERNEL is not set +# CONFIG_VENDOR_HP is not set +# CONFIG_VENDOR_IBASE is not set +# CONFIG_VENDOR_IBM is not set +# CONFIG_VENDOR_INTEL is not set +# CONFIG_VENDOR_INVENTEC is not set +# CONFIG_VENDOR_KONTRON is not set +# CONFIG_VENDOR_LATTEPANDA is not set +# CONFIG_VENDOR_LENOVO is not set +# CONFIG_VENDOR_LIBRETREND is not set +# CONFIG_VENDOR_MITAC_COMPUTING is not set +# CONFIG_VENDOR_MSI is not set +# CONFIG_VENDOR_NOVACUSTOM is not set +# CONFIG_VENDOR_OCP is not set +# CONFIG_VENDOR_OPENCELLULAR is not set +# CONFIG_VENDOR_PACKARDBELL is not set +# CONFIG_VENDOR_PCENGINES is not set +# CONFIG_VENDOR_PINE64 is not set +# CONFIG_VENDOR_PORTWELL is not set +# CONFIG_VENDOR_PRODRIVE is not set +# CONFIG_VENDOR_PROTECTLI is not set +# CONFIG_VENDOR_PURISM is not set +# CONFIG_VENDOR_RAPTOR_CS is not set +# CONFIG_VENDOR_RAZER is not set +# CONFIG_VENDOR_RODA is not set +# CONFIG_VENDOR_SAMSUNG is not set +# CONFIG_VENDOR_SAPPHIRE is not set +# CONFIG_VENDOR_SIEMENS is not set +# CONFIG_VENDOR_SIFIVE is not set +# CONFIG_VENDOR_STARLABS is not set +# CONFIG_VENDOR_SUPERMICRO is not set +# CONFIG_VENDOR_SYSTEM76 is not set +# CONFIG_VENDOR_TI is not set +# CONFIG_VENDOR_TOPTON is not set +# CONFIG_VENDOR_UP is not set +# CONFIG_VENDOR_VIA is not set +CONFIG_BOARD_SPECIFIC_OPTIONS=y +CONFIG_MAINBOARD_PART_NUMBER="Precision T1700 SFF" +CONFIG_MAINBOARD_VERSION="1.0" +CONFIG_MAINBOARD_DIR="dell/optiplex_9020" +CONFIG_VGA_BIOS_ID="8086,0166" +CONFIG_DIMM_MAX=4 +CONFIG_DIMM_SPD_SIZE=256 +CONFIG_FMDFILE="" +# CONFIG_NO_POST is not set +CONFIG_MAINBOARD_VENDOR="Dell Inc." +CONFIG_CBFS_SIZE=0x800000 +CONFIG_CONSOLE_SERIAL=y +CONFIG_LINEAR_FRAMEBUFFER_MAX_HEIGHT=2160 +CONFIG_LINEAR_FRAMEBUFFER_MAX_WIDTH=3840 +CONFIG_MAX_CPUS=8 +# CONFIG_ONBOARD_VGA_IS_PRIMARY is not set +CONFIG_POST_DEVICE=y +CONFIG_POST_IO=y +CONFIG_UART_FOR_CONSOLE=0 +CONFIG_OVERRIDE_DEVICETREE="" +CONFIG_DEVICETREE="devicetree.cb" +# CONFIG_VBOOT is not set +# CONFIG_VGA_BIOS is not set +CONFIG_PCIEXP_ASPM=y +CONFIG_PCIEXP_L1_SUB_STATE=y +CONFIG_PCIEXP_CLK_PM=y +CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Dell Inc." +CONFIG_ECAM_MMCONF_BASE_ADDRESS=0xf0000000 +CONFIG_ECAM_MMCONF_BUS_NUMBER=64 +CONFIG_MEMLAYOUT_LD_FILE="src/arch/x86/memlayout.ld" +# CONFIG_FATAL_ASSERTS is not set +CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/data.vbt" +CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00 +CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME="OptiPlex 7020/9020 SFF" +# CONFIG_CONSOLE_POST is not set +CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" +CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" +CONFIG_MAX_SOCKET=1 +CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 +CONFIG_TPM_PIRQ=0x0 +# CONFIG_BOARD_DELL_E4300 is not set +# CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set +# CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set +# CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set +# CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set +CONFIG_BOARD_DELL_OPTIPLEX_9020_SFF=y +# CONFIG_BOARD_DELL_OPTIPLEX_9020_MT is not set +# CONFIG_BOARD_DELL_LATITUDE_E5420 is not set +# CONFIG_BOARD_DELL_LATITUDE_E5520 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6220 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6320 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6420 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6520 is not set +# CONFIG_BOARD_DELL_LATITUDE_E5530 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6230 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6330 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6430 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6530 is not set +# CONFIG_BOARD_DELL_OPTIPLEX_9010 is not set +# CONFIG_BOARD_DELL_PRECISION_T1650 is not set +# CONFIG_BOARD_DELL_XPS_8300 is not set +CONFIG_DCACHE_RAM_BASE=0xff7c0000 +CONFIG_DCACHE_RAM_SIZE=0x10000 +CONFIG_C_ENV_BOOTBLOCK_SIZE=0x40000 +CONFIG_DCACHE_BSP_STACK_SIZE=0x2000 +CONFIG_MAX_ACPI_TABLE_SIZE_KB=144 +CONFIG_HAVE_INTEL_FIRMWARE=y +CONFIG_MRC_SETTINGS_CACHE_SIZE=0x10000 +CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_DRIVERS_INTEL_WIFI=y +CONFIG_IFD_BIN_PATH="../../../config/ifd/dell9020mt/12_ifd" +CONFIG_ME_BIN_PATH="../../../vendorfiles/t440p/me.bin" +CONFIG_GBE_BIN_PATH="../../../config/ifd/dell9020mt/gbe" +CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 +# CONFIG_ENABLE_DDR_2X_REFRESH is not set +CONFIG_PCIEXP_AER=y +CONFIG_CARDBUS_PLUGIN_SUPPORT=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_DEBUG_SMI is not set +CONFIG_HAVE_IFD_BIN=y +CONFIG_PS2K_EISAID="PNP0303" +CONFIG_PS2M_EISAID="PNP0F13" +CONFIG_GFX_GMA_PANEL_1_PORT="eDP" +CONFIG_TTYS0_BAUD=115200 +CONFIG_D3COLD_SUPPORT=y +CONFIG_GFX_GMA_PANEL_1_ON_EDP=y +CONFIG_DRIVERS_UART_8250IO=y +CONFIG_PC_CMOS_BASE_PORT_BANK1=0x72 +CONFIG_HEAP_SIZE=0x100000 +CONFIG_EC_GPE_SCI=0x50 +CONFIG_EC_STARLABS_BATTERY_MODEL="Unknown" +CONFIG_EC_STARLABS_BATTERY_TYPE="LION" +CONFIG_EC_STARLABS_BATTERY_OEM="Unknown" +# CONFIG_TPM_MEASURED_BOOT is not set +CONFIG_BOARD_ROMSIZE_KB_12288=y +# CONFIG_COREBOOT_ROMSIZE_KB_256 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_512 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_1024 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_2048 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_4096 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_5120 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_6144 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_8192 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_10240 is not set +CONFIG_COREBOOT_ROMSIZE_KB_12288=y +# CONFIG_COREBOOT_ROMSIZE_KB_16384 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_24576 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_32768 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_65536 is not set +CONFIG_COREBOOT_ROMSIZE_KB=12288 +CONFIG_ROM_SIZE=0x00c00000 +CONFIG_HAVE_POWER_STATE_AFTER_FAILURE=y +CONFIG_HAVE_POWER_STATE_PREVIOUS_AFTER_FAILURE=y +CONFIG_POWER_STATE_OFF_AFTER_FAILURE=y +# CONFIG_POWER_STATE_ON_AFTER_FAILURE is not set +# CONFIG_POWER_STATE_PREVIOUS_AFTER_FAILURE is not set +CONFIG_MAINBOARD_POWER_FAILURE_STATE=0 +# end of Mainboard + +# +# Chipset +# + +# +# SoC +# +CONFIG_CHIPSET_DEVICETREE="" +CONFIG_CBFS_MCACHE_SIZE=0x4000 +CONFIG_ROMSTAGE_ADDR=0x2000000 +CONFIG_VERSTAGE_ADDR=0x2000000 +CONFIG_SMM_TSEG_SIZE=0x800000 +CONFIG_SMM_RESERVED_SIZE=0x100000 +CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=512 +CONFIG_SERIRQ_CONTINUOUS_MODE=y +CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 +CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 +CONFIG_EHCI_BAR=0xd8000000 +CONFIG_ACPI_CPU_STRING="CP%02X" +CONFIG_STACK_SIZE=0x2000 +CONFIG_IED_REGION_SIZE=0x400000 +CONFIG_INTEL_GMA_BCLV_OFFSET=0x48254 +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="../../../mrc/broadwell/mrc.bin" +CONFIG_DCACHE_RAM_MRC_VAR_SIZE=0x30000 +CONFIG_HPET_MIN_TICKS=0x80 +CONFIG_FIXED_MCHBAR_MMIO_BASE=0xfed10000 +CONFIG_FIXED_DMIBAR_MMIO_BASE=0xfed18000 +CONFIG_FIXED_EPBAR_MMIO_BASE=0xfed19000 +CONFIG_PCIEXP_COMMON_CLOCK=y +CONFIG_DISABLE_ME_PCI=y +CONFIG_CPU_INTEL_NUM_FIT_ENTRIES=6 +CONFIG_SOC_PHYSICAL_ADDRESS_WIDTH=0 +# CONFIG_ALWAYS_ALLOW_ABOVE_4G_ALLOCATION is not set +CONFIG_FIXED_SMBUS_IO_BASE=0x400 +CONFIG_CBFS_CACHE_ALIGN=8 + +# +# CPU +# +CONFIG_CPU_INTEL_HASWELL=y +CONFIG_CPU_INTEL_FIRMWARE_INTERFACE_TABLE=y +CONFIG_CPU_INTEL_COMMON=y +CONFIG_ENABLE_VMX=y +CONFIG_SET_IA32_FC_LOCK_BIT=y +CONFIG_SET_MSR_AESNI_LOCK_BIT=y +CONFIG_CPU_INTEL_COMMON_TIMEBASE=y +CONFIG_CPU_INTEL_COMMON_VOLTAGE=y +CONFIG_CPU_INTEL_COMMON_SMM=y +CONFIG_PARALLEL_MP=y +CONFIG_XAPIC_ONLY=y +# CONFIG_X2APIC_ONLY is not set +# CONFIG_X2APIC_RUNTIME is not set +# CONFIG_X2APIC_LATE_WORKAROUND is not set +CONFIG_UDELAY_TSC=y +CONFIG_TSC_MONOTONIC_TIMER=y +CONFIG_TSC_SYNC_MFENCE=y +CONFIG_HAVE_SMI_HANDLER=y +CONFIG_SMM_TSEG=y +CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 +CONFIG_AP_STACK_SIZE=0x800 +CONFIG_SMP=y +CONFIG_SSE=y +CONFIG_SSE2=y +CONFIG_SUPPORT_CPU_UCODE_IN_CBFS=y +CONFIG_USE_CPU_MICROCODE_CBFS_BINS=y +CONFIG_CPU_MICROCODE_CBFS_DEFAULT_BINS=y +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS is not set +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER is not set +# CONFIG_CPU_MICROCODE_CBFS_NONE is not set + +# +# Northbridge +# +CONFIG_NORTHBRIDGE_INTEL_HASWELL=y +# CONFIG_USE_NATIVE_RAMINIT is not set +CONFIG_USE_BROADWELL_MRC=y +# CONFIG_HASWELL_HIDE_PEG_FROM_MRC is not set + +# +# Southbridge +# +# CONFIG_PCIEXP_HOTPLUG is not set +CONFIG_INTEL_DESCRIPTOR_MODE_REQUIRED=y +CONFIG_SOUTHBRIDGE_INTEL_LYNXPOINT=y +CONFIG_FINALIZE_USB_ROUTE_XHCI=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RESET=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RTC=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMCLIB=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMBASE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_GPIO=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_EARLY_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI_ICH9=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PIRQ_ACPI_GEN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RCBA_PIRQ=y +CONFIG_HAVE_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_FINALIZE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_USB_DEBUG=y +CONFIG_INTEL_DESCRIPTOR_MODE_CAPABLE=y +# CONFIG_VALIDATE_INTEL_DESCRIPTOR is not set +CONFIG_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_TCO_SPACE_NOT_YET_SPLIT=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_WATCHDOG=y +CONFIG_FIXED_RCBA_MMIO_BASE=0xfed1c000 +CONFIG_RCBA_LENGTH=0x4000 + +# +# Super I/O +# +CONFIG_SUPERIO_SMSC_SCH555x=y + +# +# Embedded Controllers +# + +# +# Intel Firmware +# +CONFIG_HAVE_ME_BIN=y +# CONFIG_STITCH_ME_BIN is not set +# CONFIG_CHECK_ME is not set +# CONFIG_ME_REGION_ALLOW_CPU_READ_ACCESS is not set +# CONFIG_USE_ME_CLEANER is not set +CONFIG_MAINBOARD_USES_IFD_GBE_REGION=y +CONFIG_HAVE_GBE_BIN=y +# CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION is not set +# CONFIG_LOCK_MANAGEMENT_ENGINE is not set +CONFIG_UNLOCK_FLASH_REGIONS=y +CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 +CONFIG_ARCH_X86=y +CONFIG_ARCH_BOOTBLOCK_X86_32=y +CONFIG_ARCH_VERSTAGE_X86_32=y +CONFIG_ARCH_ROMSTAGE_X86_32=y +CONFIG_ARCH_POSTCAR_X86_32=y +CONFIG_ARCH_RAMSTAGE_X86_32=y +CONFIG_ARCH_ALL_STAGES_X86_32=y +CONFIG_RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT=y +CONFIG_X86_TOP4G_BOOTMEDIA_MAP=y +CONFIG_POSTRAM_CBFS_CACHE_IN_BSS=y +CONFIG_RAMSTAGE_CBFS_CACHE_SIZE=0x4000 +CONFIG_PC80_SYSTEM=y +CONFIG_HAVE_CMOS_DEFAULT=y +CONFIG_POSTCAR_STAGE=y +CONFIG_BOOTBLOCK_SIMPLE=y +# CONFIG_BOOTBLOCK_NORMAL is not set +CONFIG_COLLECT_TIMESTAMPS_TSC=y +CONFIG_HAVE_CF9_RESET=y +CONFIG_DEBUG_HW_BREAKPOINTS=y +CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS=y +# CONFIG_DUMP_SMBIOS_TYPE17 is not set +CONFIG_X86_BOOTBLOCK_EXTRA_PROGRAM_SZ=0 +CONFIG_DEFAULT_EBDA_LOWMEM=0x100000 +CONFIG_DEFAULT_EBDA_SEGMENT=0xF600 +CONFIG_DEFAULT_EBDA_SIZE=0x400 +# end of Chipset + +# +# Devices +# +CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y +CONFIG_HAVE_LINEAR_FRAMEBUFFER=y +CONFIG_MAINBOARD_HAS_LIBGFXINIT=y +CONFIG_MAINBOARD_USE_LIBGFXINIT=y +# CONFIG_VGA_ROM_RUN is not set +# CONFIG_NO_GFX_INIT is not set +CONFIG_NO_EARLY_GFX_INIT=y + +# +# Display +# +# CONFIG_VGA_TEXT_FRAMEBUFFER is not set +CONFIG_GENERIC_LINEAR_FRAMEBUFFER=y +CONFIG_LINEAR_FRAMEBUFFER=y +# CONFIG_BOOTSPLASH is not set +CONFIG_DEFAULT_SCREEN_ROTATION_INT=0 +# end of Display + +CONFIG_PCI=y +CONFIG_ECAM_MMCONF_SUPPORT=y +CONFIG_PCIX_PLUGIN_SUPPORT=y +CONFIG_AZALIA_HDA_CODEC_SUPPORT=y +CONFIG_PCIEXP_PLUGIN_SUPPORT=y +CONFIG_ECAM_MMCONF_LENGTH=0x04000000 +CONFIG_PCI_ALLOW_BUS_MASTER=y +CONFIG_PCI_SET_BUS_MASTER_PCI_BRIDGES=y +CONFIG_PCI_ALLOW_BUS_MASTER_ANY_DEVICE=y +# CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS is not set +# CONFIG_PCIEXP_LANE_ERR_STAT_CLEAR is not set +# CONFIG_EARLY_PCI_BRIDGE is not set +CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 +CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 +CONFIG_INTEL_GMA_HAVE_VBT=y +CONFIG_INTEL_GMA_ADD_VBT=y +# CONFIG_SOFTWARE_I2C is not set +CONFIG_I2C_TRANSFER_TIMEOUT_US=500000 +CONFIG_RESOURCE_ALLOCATION_TOP_DOWN=y +CONFIG_USE_DDR3=y +# end of Devices + +# +# Generic Drivers +# +CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set +# CONFIG_ELOG is not set +CONFIG_CACHE_MRC_SETTINGS=y +# CONFIG_MRC_SETTINGS_PROTECT is not set +# CONFIG_DRIVERS_OPTION_CFR is not set +# CONFIG_SMMSTORE is not set +CONFIG_SPI_FLASH=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY=y +# CONFIG_SPI_FLASH_NO_FAST_READ is not set +CONFIG_SPI_FLASH_ADESTO=y +CONFIG_SPI_FLASH_AMIC=y +CONFIG_SPI_FLASH_ATMEL=y +CONFIG_SPI_FLASH_EON=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_SST=y +CONFIG_SPI_FLASH_ISSI=y +CONFIG_HAVE_EM100PRO_SPI_CONSOLE_SUPPORT=y +CONFIG_TPM_INIT_RAMSTAGE=y +# CONFIG_TPM_PPI is not set +CONFIG_DRIVERS_UART=y +# CONFIG_DRIVERS_UART_OXPCIE is not set +CONFIG_HAVE_USBDEBUG=y +CONFIG_HAVE_USBDEBUG_OPTIONS=y +# CONFIG_USBDEBUG is not set +# CONFIG_VPD is not set +# CONFIG_DRIVERS_EMULATION_QEMU_FW_CFG is not set +# CONFIG_DRIVERS_GENERIC_CBFS_SERIAL is not set +# CONFIG_DRIVERS_GENERIC_CBFS_UUID is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9750 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9755 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9763E is not set +# CONFIG_DRIVERS_I2C_MAX98396 is not set +CONFIG_INTEL_DDI=y +CONFIG_INTEL_INT15=y +CONFIG_INTEL_GMA_ACPI=y +CONFIG_VBT_CBFS_COMPRESSION_LZMA=y +# CONFIG_VBT_CBFS_COMPRESSION_LZ4 is not set +# CONFIG_VBT_CBFS_COMPRESSION_NONE is not set +CONFIG_VBT_CBFS_COMPRESSION_ALGORITHM="lzma" +CONFIG_GFX_GMA=y +CONFIG_GFX_GMA_DYN_CPU=y +CONFIG_GFX_GMA_GENERATION="Haswell" +CONFIG_GFX_GMA_PCH="Lynx_Point" +CONFIG_GFX_GMA_PANEL_2_PORT="Disabled" +CONFIG_GFX_GMA_ANALOG_I2C_PORT="PCH_DAC" +# CONFIG_DRIVERS_NXP_UWB_SR1XX is not set +# CONFIG_DRIVERS_PS2_KEYBOARD is not set +CONFIG_DRIVERS_MC146818=y +# CONFIG_USE_PC_CMOS_ALTCENTURY is not set +CONFIG_PC_CMOS_BASE_PORT_BANK0=0x70 +CONFIG_MEMORY_MAPPED_TPM=y +CONFIG_TPM_TIS_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_SIL_3114 is not set +CONFIG_DRIVERS_WIFI_GENERIC=y +CONFIG_DRIVERS_MTK_WIFI=y +# end of Generic Drivers + +# +# Security +# + +# +# CBFS verification +# +# CONFIG_CBFS_VERIFICATION is not set +# end of CBFS verification + +# +# Verified Boot (vboot) +# +# end of Verified Boot (vboot) + +# +# Trusted Platform Module +# +CONFIG_TPM1=y +# CONFIG_TPM2 is not set +CONFIG_TPM=y +CONFIG_MAINBOARD_HAS_TPM1=y +# CONFIG_TPM_DEACTIVATE is not set +# CONFIG_DEBUG_TPM is not set +CONFIG_PCR_BOOT_MODE=1 +CONFIG_PCR_HWID=1 +CONFIG_PCR_SRTM=2 +CONFIG_PCR_FW_VER=10 +CONFIG_PCR_RUNTIME_DATA=3 +# end of Trusted Platform Module + +# +# Memory initialization +# +CONFIG_PLATFORM_HAS_DRAM_CLEAR=y +CONFIG_SECURITY_CLEAR_DRAM_ON_REGULAR_BOOT=y +# end of Memory initialization + +# CONFIG_INTEL_TXT is not set +# CONFIG_STM is not set +# CONFIG_INTEL_CBNT_SUPPORT is not set +CONFIG_BOOTMEDIA_LOCK_NONE=y +# CONFIG_BOOTMEDIA_LOCK_CONTROLLER is not set +# CONFIG_BOOTMEDIA_LOCK_CHIP is not set +# CONFIG_BOOTMEDIA_SMM_BWP is not set +# end of Security + +CONFIG_ACPI_HAVE_PCAT_8259=y +CONFIG_ACPI_INTEL_HARDWARE_SLEEP_VALUES=y +CONFIG_ACPI_SOC_NVS=y +CONFIG_ACPI_NO_CUSTOM_MADT=y +CONFIG_ACPI_COMMON_MADT_LAPIC=y +CONFIG_ACPI_COMMON_MADT_IOAPIC=y +CONFIG_HAVE_ACPI_TABLES=y +CONFIG_BOOT_DEVICE_SPI_FLASH=y +CONFIG_BOOT_DEVICE_MEMORY_MAPPED=y +CONFIG_BOOT_DEVICE_SUPPORTS_WRITES=y +CONFIG_RTC=y + +# +# Console +# +CONFIG_BOOTBLOCK_CONSOLE=y +CONFIG_POSTCAR_CONSOLE=y +CONFIG_SQUELCH_EARLY_SMP=y + +# +# I/O mapped, 8250-compatible +# +CONFIG_TTYS0_BASE=0x3f8 + +# +# Serial port base address = 0x3f8 +# +# CONFIG_CONSOLE_SERIAL_921600 is not set +# CONFIG_CONSOLE_SERIAL_460800 is not set +# CONFIG_CONSOLE_SERIAL_230400 is not set +CONFIG_CONSOLE_SERIAL_115200=y +# CONFIG_CONSOLE_SERIAL_57600 is not set +# CONFIG_CONSOLE_SERIAL_38400 is not set +# CONFIG_CONSOLE_SERIAL_19200 is not set +# CONFIG_CONSOLE_SERIAL_9600 is not set +CONFIG_TTYS0_LCS=3 +# CONFIG_SPKMODEM is not set +# CONFIG_CONSOLE_NE2K is not set +CONFIG_CONSOLE_CBMEM=y +# CONFIG_CONSOLE_SPI_FLASH is not set +# CONFIG_CONSOLE_I2C_SMBUS is not set +# CONFIG_EM100PRO_SPI_CONSOLE is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL_7=y +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_6 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_5 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_4 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_2 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_1 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL=7 +CONFIG_CONSOLE_USE_LOGLEVEL_PREFIX=y +CONFIG_CONSOLE_USE_ANSI_ESCAPES=y +# CONFIG_CMOS_POST is not set +CONFIG_POST_DEVICE_NONE=y +# CONFIG_POST_DEVICE_LPC is not set +# CONFIG_POST_DEVICE_PCI_PCIE is not set +CONFIG_POST_IO_PORT=0x80 +CONFIG_HWBASE_DEBUG_CB=y +# end of Console + +CONFIG_HAVE_ACPI_RESUME=y +CONFIG_RESUME_PATH_SAME_AS_BOOT=y +CONFIG_HAVE_MONOTONIC_TIMER=y +CONFIG_HAVE_OPTION_TABLE=y +CONFIG_IOAPIC=y +CONFIG_USE_WATCHDOG_ON_BOOT=y + +# +# System tables +# +CONFIG_GENERATE_SMBIOS_TABLES=y +CONFIG_BIOS_VENDOR="coreboot" +CONFIG_MAINBOARD_SERIAL_NUMBER="123456789" +# end of System tables + +# +# Payload +# +CONFIG_PAYLOAD_NONE=y +# end of Payload + +# +# Debugging +# + +# +# CPU Debug Settings +# +# CONFIG_DISPLAY_MTRRS is not set + +# +# Vendorcode Debug Settings +# + +# +# BLOB Debug Settings +# + +# +# General Debug Settings +# +# CONFIG_GDB_STUB is not set +# CONFIG_DEBUG_CBFS is not set +CONFIG_HAVE_DEBUG_SMBUS=y +# CONFIG_DEBUG_SMBUS is not set +# CONFIG_DEBUG_MALLOC is not set +# CONFIG_DEBUG_CONSOLE_INIT is not set +# CONFIG_DEBUG_SPI_FLASH is not set +# CONFIG_DEBUG_BOOT_STATE is not set +# CONFIG_DEBUG_ADA_CODE is not set +CONFIG_HAVE_EM100_SUPPORT=y +# CONFIG_EM100 is not set +# CONFIG_DEBUG_ACPICA_COMPATIBLE is not set +# end of Debugging + +CONFIG_RAMSTAGE_ADA=y +CONFIG_RAMSTAGE_LIBHWBASE=y +CONFIG_HWBASE_DYNAMIC_MMIO=y +CONFIG_HWBASE_DEFAULT_MMCONF=0xf0000000 +CONFIG_HWBASE_DIRECT_PCIDEV=y +CONFIG_DECOMPRESS_OFAST=y + +# +# Boot Logo Configuration +# +# CONFIG_BMP_LOGO is not set +# end of Boot Logo Configuration + +CONFIG_WARNINGS_ARE_ERRORS=y +CONFIG_MAX_REBOOT_CNT=3 +CONFIG_RELOCATABLE_MODULES=y +CONFIG_HAVE_BOOTBLOCK=y +CONFIG_HAVE_ROMSTAGE=y +CONFIG_HAVE_RAMSTAGE=y diff --git a/config/coreboot/t1700sff_bmrc_12mb/config/libgfxinit_txtmode b/config/coreboot/t1700sff_bmrc_12mb/config/libgfxinit_txtmode new file mode 100644 index 00000000..2f595fd1 --- /dev/null +++ b/config/coreboot/t1700sff_bmrc_12mb/config/libgfxinit_txtmode @@ -0,0 +1,689 @@ +# +# Automatically generated file; DO NOT EDIT. +# coreboot configuration +# + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_CBFS_PREFIX="fallback" +CONFIG_COMPILER_GCC=y +# CONFIG_COMPILER_LLVM_CLANG is not set +# CONFIG_ANY_TOOLCHAIN is not set +# CONFIG_CCACHE is not set +# CONFIG_LTO is not set +# CONFIG_IWYU is not set +# CONFIG_FMD_GENPARSER is not set +# CONFIG_UTIL_GENPARSER is not set +# CONFIG_OPTION_BACKEND_NONE is not set +CONFIG_USE_OPTION_TABLE=y +# CONFIG_USE_CBFS_FILE_OPTION_BACKEND is not set +CONFIG_STATIC_OPTION_TABLE=y +CONFIG_COMPRESS_RAMSTAGE_LZMA=y +# CONFIG_COMPRESS_RAMSTAGE_LZ4 is not set +CONFIG_SEPARATE_ROMSTAGE=y +CONFIG_INCLUDE_CONFIG_FILE=y +CONFIG_COLLECT_TIMESTAMPS=y +# CONFIG_TIMESTAMPS_ON_CONSOLE is not set +CONFIG_USE_BLOBS=y +# CONFIG_USE_AMD_BLOBS is not set +# CONFIG_USE_QC_BLOBS is not set +# CONFIG_COVERAGE is not set +# CONFIG_UBSAN is not set +CONFIG_HAVE_ASAN_IN_ROMSTAGE=y +CONFIG_HAVE_ASAN_IN_RAMSTAGE=y +# CONFIG_ASAN is not set +CONFIG_NO_STAGE_CACHE=y +# CONFIG_TSEG_STAGE_CACHE is not set +# CONFIG_UPDATE_IMAGE is not set +# CONFIG_BOOTSPLASH_IMAGE is not set + +# +# Software Bill Of Materials (SBOM) +# +# CONFIG_SBOM is not set +# end of Software Bill Of Materials (SBOM) +# end of General setup + +# +# Mainboard +# + +# +# Important: Run 'make distclean' before switching boards +# +# CONFIG_VENDOR_51NB is not set +# CONFIG_VENDOR_ACER is not set +# CONFIG_VENDOR_AMD is not set +# CONFIG_VENDOR_AOOSTAR is not set +# CONFIG_VENDOR_AOPEN is not set +# CONFIG_VENDOR_APPLE is not set +# CONFIG_VENDOR_ARM is not set +# CONFIG_VENDOR_ASROCK is not set +# CONFIG_VENDOR_ASUS is not set +# CONFIG_VENDOR_BIOSTAR is not set +# CONFIG_VENDOR_BOSTENTECH is not set +# CONFIG_VENDOR_BYTEDANCE is not set +# CONFIG_VENDOR_CAVIUM is not set +# CONFIG_VENDOR_CLEVO is not set +# CONFIG_VENDOR_COMPULAB is not set +# CONFIG_VENDOR_CWWK is not set +CONFIG_VENDOR_DELL=y +# CONFIG_VENDOR_EMULATION is not set +# CONFIG_VENDOR_ERYING is not set +# CONFIG_VENDOR_EXAMPLE is not set +# CONFIG_VENDOR_FACEBOOK is not set +# CONFIG_VENDOR_FOXCONN is not set +# CONFIG_VENDOR_FRAMEWORK is not set +# CONFIG_VENDOR_GETAC is not set +# CONFIG_VENDOR_GIGABYTE is not set +# CONFIG_VENDOR_GOOGLE is not set +# CONFIG_VENDOR_HARDKERNEL is not set +# CONFIG_VENDOR_HP is not set +# CONFIG_VENDOR_IBASE is not set +# CONFIG_VENDOR_IBM is not set +# CONFIG_VENDOR_INTEL is not set +# CONFIG_VENDOR_INVENTEC is not set +# CONFIG_VENDOR_KONTRON is not set +# CONFIG_VENDOR_LATTEPANDA is not set +# CONFIG_VENDOR_LENOVO is not set +# CONFIG_VENDOR_LIBRETREND is not set +# CONFIG_VENDOR_MITAC_COMPUTING is not set +# CONFIG_VENDOR_MSI is not set +# CONFIG_VENDOR_NOVACUSTOM is not set +# CONFIG_VENDOR_OCP is not set +# CONFIG_VENDOR_OPENCELLULAR is not set +# CONFIG_VENDOR_PACKARDBELL is not set +# CONFIG_VENDOR_PCENGINES is not set +# CONFIG_VENDOR_PINE64 is not set +# CONFIG_VENDOR_PORTWELL is not set +# CONFIG_VENDOR_PRODRIVE is not set +# CONFIG_VENDOR_PROTECTLI is not set +# CONFIG_VENDOR_PURISM is not set +# CONFIG_VENDOR_RAPTOR_CS is not set +# CONFIG_VENDOR_RAZER is not set +# CONFIG_VENDOR_RODA is not set +# CONFIG_VENDOR_SAMSUNG is not set +# CONFIG_VENDOR_SAPPHIRE is not set +# CONFIG_VENDOR_SIEMENS is not set +# CONFIG_VENDOR_SIFIVE is not set +# CONFIG_VENDOR_STARLABS is not set +# CONFIG_VENDOR_SUPERMICRO is not set +# CONFIG_VENDOR_SYSTEM76 is not set +# CONFIG_VENDOR_TI is not set +# CONFIG_VENDOR_TOPTON is not set +# CONFIG_VENDOR_UP is not set +# CONFIG_VENDOR_VIA is not set +CONFIG_BOARD_SPECIFIC_OPTIONS=y +CONFIG_MAINBOARD_PART_NUMBER="Precision T1700 SFF" +CONFIG_MAINBOARD_VERSION="1.0" +CONFIG_MAINBOARD_DIR="dell/optiplex_9020" +CONFIG_VGA_BIOS_ID="8086,0166" +CONFIG_DIMM_MAX=4 +CONFIG_DIMM_SPD_SIZE=256 +CONFIG_FMDFILE="" +# CONFIG_NO_POST is not set +CONFIG_MAINBOARD_VENDOR="Dell Inc." +CONFIG_CBFS_SIZE=0x800000 +CONFIG_CONSOLE_SERIAL=y +CONFIG_MAX_CPUS=8 +# CONFIG_ONBOARD_VGA_IS_PRIMARY is not set +CONFIG_POST_DEVICE=y +CONFIG_POST_IO=y +CONFIG_UART_FOR_CONSOLE=0 +CONFIG_OVERRIDE_DEVICETREE="" +CONFIG_DEVICETREE="devicetree.cb" +# CONFIG_VBOOT is not set +# CONFIG_VGA_BIOS is not set +CONFIG_PCIEXP_ASPM=y +CONFIG_PCIEXP_L1_SUB_STATE=y +CONFIG_PCIEXP_CLK_PM=y +CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Dell Inc." +CONFIG_ECAM_MMCONF_BASE_ADDRESS=0xf0000000 +CONFIG_ECAM_MMCONF_BUS_NUMBER=64 +CONFIG_MEMLAYOUT_LD_FILE="src/arch/x86/memlayout.ld" +# CONFIG_FATAL_ASSERTS is not set +CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/data.vbt" +CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00 +CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME="OptiPlex 7020/9020 SFF" +# CONFIG_CONSOLE_POST is not set +CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" +CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" +CONFIG_MAX_SOCKET=1 +CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 +CONFIG_TPM_PIRQ=0x0 +# CONFIG_BOARD_DELL_E4300 is not set +# CONFIG_BOARD_DELL_E6400 is not set +# CONFIG_BOARD_DELL_LATITUDE_E7240 is not set +# CONFIG_BOARD_DELL_OPTIPLEX_3050 is not set +# CONFIG_BOARD_DELL_OPTIPLEX_780_MT is not set +# CONFIG_BOARD_DELL_OPTIPLEX_780_USFF is not set +CONFIG_BOARD_DELL_OPTIPLEX_9020_SFF=y +# CONFIG_BOARD_DELL_OPTIPLEX_9020_MT is not set +# CONFIG_BOARD_DELL_LATITUDE_E5420 is not set +# CONFIG_BOARD_DELL_LATITUDE_E5520 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6220 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6320 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6420 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6520 is not set +# CONFIG_BOARD_DELL_LATITUDE_E5530 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6230 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6330 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6430 is not set +# CONFIG_BOARD_DELL_LATITUDE_E6530 is not set +# CONFIG_BOARD_DELL_OPTIPLEX_9010 is not set +# CONFIG_BOARD_DELL_PRECISION_T1650 is not set +# CONFIG_BOARD_DELL_XPS_8300 is not set +CONFIG_DCACHE_RAM_BASE=0xff7c0000 +CONFIG_DCACHE_RAM_SIZE=0x10000 +CONFIG_C_ENV_BOOTBLOCK_SIZE=0x40000 +CONFIG_DCACHE_BSP_STACK_SIZE=0x2000 +CONFIG_MAX_ACPI_TABLE_SIZE_KB=144 +CONFIG_HAVE_INTEL_FIRMWARE=y +CONFIG_MRC_SETTINGS_CACHE_SIZE=0x10000 +CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_DRIVERS_INTEL_WIFI=y +CONFIG_IFD_BIN_PATH="../../../config/ifd/dell9020mt/12_ifd" +CONFIG_ME_BIN_PATH="../../../vendorfiles/t440p/me.bin" +CONFIG_GBE_BIN_PATH="../../../config/ifd/dell9020mt/gbe" +CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 +# CONFIG_ENABLE_DDR_2X_REFRESH is not set +CONFIG_PCIEXP_AER=y +CONFIG_CARDBUS_PLUGIN_SUPPORT=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_DEBUG_SMI is not set +CONFIG_HAVE_IFD_BIN=y +CONFIG_PS2K_EISAID="PNP0303" +CONFIG_PS2M_EISAID="PNP0F13" +CONFIG_GFX_GMA_PANEL_1_PORT="eDP" +CONFIG_TTYS0_BAUD=115200 +CONFIG_D3COLD_SUPPORT=y +CONFIG_GFX_GMA_PANEL_1_ON_EDP=y +CONFIG_DRIVERS_UART_8250IO=y +CONFIG_PC_CMOS_BASE_PORT_BANK1=0x72 +CONFIG_HEAP_SIZE=0x100000 +CONFIG_EC_GPE_SCI=0x50 +CONFIG_EC_STARLABS_BATTERY_MODEL="Unknown" +CONFIG_EC_STARLABS_BATTERY_TYPE="LION" +CONFIG_EC_STARLABS_BATTERY_OEM="Unknown" +# CONFIG_TPM_MEASURED_BOOT is not set +CONFIG_BOARD_ROMSIZE_KB_12288=y +# CONFIG_COREBOOT_ROMSIZE_KB_256 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_512 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_1024 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_2048 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_4096 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_5120 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_6144 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_8192 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_10240 is not set +CONFIG_COREBOOT_ROMSIZE_KB_12288=y +# CONFIG_COREBOOT_ROMSIZE_KB_16384 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_24576 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_32768 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_65536 is not set +CONFIG_COREBOOT_ROMSIZE_KB=12288 +CONFIG_ROM_SIZE=0x00c00000 +CONFIG_HAVE_POWER_STATE_AFTER_FAILURE=y +CONFIG_HAVE_POWER_STATE_PREVIOUS_AFTER_FAILURE=y +CONFIG_POWER_STATE_OFF_AFTER_FAILURE=y +# CONFIG_POWER_STATE_ON_AFTER_FAILURE is not set +# CONFIG_POWER_STATE_PREVIOUS_AFTER_FAILURE is not set +CONFIG_MAINBOARD_POWER_FAILURE_STATE=0 +# end of Mainboard + +# +# Chipset +# + +# +# SoC +# +CONFIG_CHIPSET_DEVICETREE="" +CONFIG_CBFS_MCACHE_SIZE=0x4000 +CONFIG_ROMSTAGE_ADDR=0x2000000 +CONFIG_VERSTAGE_ADDR=0x2000000 +CONFIG_SMM_TSEG_SIZE=0x800000 +CONFIG_SMM_RESERVED_SIZE=0x100000 +CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=512 +CONFIG_SERIRQ_CONTINUOUS_MODE=y +CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 +CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 +CONFIG_EHCI_BAR=0xd8000000 +CONFIG_ACPI_CPU_STRING="CP%02X" +CONFIG_STACK_SIZE=0x2000 +CONFIG_IED_REGION_SIZE=0x400000 +CONFIG_INTEL_GMA_BCLV_OFFSET=0x48254 +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="../../../mrc/broadwell/mrc.bin" +CONFIG_DCACHE_RAM_MRC_VAR_SIZE=0x30000 +CONFIG_HPET_MIN_TICKS=0x80 +CONFIG_FIXED_MCHBAR_MMIO_BASE=0xfed10000 +CONFIG_FIXED_DMIBAR_MMIO_BASE=0xfed18000 +CONFIG_FIXED_EPBAR_MMIO_BASE=0xfed19000 +CONFIG_PCIEXP_COMMON_CLOCK=y +CONFIG_DISABLE_ME_PCI=y +CONFIG_CPU_INTEL_NUM_FIT_ENTRIES=6 +CONFIG_SOC_PHYSICAL_ADDRESS_WIDTH=0 +# CONFIG_ALWAYS_ALLOW_ABOVE_4G_ALLOCATION is not set +CONFIG_FIXED_SMBUS_IO_BASE=0x400 +CONFIG_CBFS_CACHE_ALIGN=8 + +# +# CPU +# +CONFIG_CPU_INTEL_HASWELL=y +CONFIG_CPU_INTEL_FIRMWARE_INTERFACE_TABLE=y +CONFIG_CPU_INTEL_COMMON=y +CONFIG_ENABLE_VMX=y +CONFIG_SET_IA32_FC_LOCK_BIT=y +CONFIG_SET_MSR_AESNI_LOCK_BIT=y +CONFIG_CPU_INTEL_COMMON_TIMEBASE=y +CONFIG_CPU_INTEL_COMMON_VOLTAGE=y +CONFIG_CPU_INTEL_COMMON_SMM=y +CONFIG_PARALLEL_MP=y +CONFIG_XAPIC_ONLY=y +# CONFIG_X2APIC_ONLY is not set +# CONFIG_X2APIC_RUNTIME is not set +# CONFIG_X2APIC_LATE_WORKAROUND is not set +CONFIG_UDELAY_TSC=y +CONFIG_TSC_MONOTONIC_TIMER=y +CONFIG_TSC_SYNC_MFENCE=y +CONFIG_HAVE_SMI_HANDLER=y +CONFIG_SMM_TSEG=y +CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 +CONFIG_AP_STACK_SIZE=0x800 +CONFIG_SMP=y +CONFIG_SSE=y +CONFIG_SSE2=y +CONFIG_SUPPORT_CPU_UCODE_IN_CBFS=y +CONFIG_USE_CPU_MICROCODE_CBFS_BINS=y +CONFIG_CPU_MICROCODE_CBFS_DEFAULT_BINS=y +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS is not set +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER is not set +# CONFIG_CPU_MICROCODE_CBFS_NONE is not set + +# +# Northbridge +# +CONFIG_NORTHBRIDGE_INTEL_HASWELL=y +# CONFIG_USE_NATIVE_RAMINIT is not set +CONFIG_USE_BROADWELL_MRC=y +# CONFIG_HASWELL_HIDE_PEG_FROM_MRC is not set + +# +# Southbridge +# +# CONFIG_PCIEXP_HOTPLUG is not set +CONFIG_INTEL_DESCRIPTOR_MODE_REQUIRED=y +CONFIG_SOUTHBRIDGE_INTEL_LYNXPOINT=y +CONFIG_FINALIZE_USB_ROUTE_XHCI=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RESET=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RTC=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMCLIB=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMBASE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_GPIO=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_EARLY_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI_ICH9=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PIRQ_ACPI_GEN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RCBA_PIRQ=y +CONFIG_HAVE_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_FINALIZE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_USB_DEBUG=y +CONFIG_INTEL_DESCRIPTOR_MODE_CAPABLE=y +# CONFIG_VALIDATE_INTEL_DESCRIPTOR is not set +CONFIG_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_TCO_SPACE_NOT_YET_SPLIT=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_WATCHDOG=y +CONFIG_FIXED_RCBA_MMIO_BASE=0xfed1c000 +CONFIG_RCBA_LENGTH=0x4000 + +# +# Super I/O +# +CONFIG_SUPERIO_SMSC_SCH555x=y + +# +# Embedded Controllers +# + +# +# Intel Firmware +# +CONFIG_HAVE_ME_BIN=y +# CONFIG_STITCH_ME_BIN is not set +# CONFIG_CHECK_ME is not set +# CONFIG_ME_REGION_ALLOW_CPU_READ_ACCESS is not set +# CONFIG_USE_ME_CLEANER is not set +CONFIG_MAINBOARD_USES_IFD_GBE_REGION=y +CONFIG_HAVE_GBE_BIN=y +# CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION is not set +# CONFIG_LOCK_MANAGEMENT_ENGINE is not set +CONFIG_UNLOCK_FLASH_REGIONS=y +CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 +CONFIG_ARCH_X86=y +CONFIG_ARCH_BOOTBLOCK_X86_32=y +CONFIG_ARCH_VERSTAGE_X86_32=y +CONFIG_ARCH_ROMSTAGE_X86_32=y +CONFIG_ARCH_POSTCAR_X86_32=y +CONFIG_ARCH_RAMSTAGE_X86_32=y +CONFIG_ARCH_ALL_STAGES_X86_32=y +CONFIG_RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT=y +CONFIG_X86_TOP4G_BOOTMEDIA_MAP=y +CONFIG_POSTRAM_CBFS_CACHE_IN_BSS=y +CONFIG_RAMSTAGE_CBFS_CACHE_SIZE=0x4000 +CONFIG_PC80_SYSTEM=y +CONFIG_HAVE_CMOS_DEFAULT=y +CONFIG_POSTCAR_STAGE=y +CONFIG_BOOTBLOCK_SIMPLE=y +# CONFIG_BOOTBLOCK_NORMAL is not set +CONFIG_COLLECT_TIMESTAMPS_TSC=y +CONFIG_HAVE_CF9_RESET=y +CONFIG_DEBUG_HW_BREAKPOINTS=y +CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS=y +# CONFIG_DUMP_SMBIOS_TYPE17 is not set +CONFIG_X86_BOOTBLOCK_EXTRA_PROGRAM_SZ=0 +CONFIG_DEFAULT_EBDA_LOWMEM=0x100000 +CONFIG_DEFAULT_EBDA_SEGMENT=0xF600 +CONFIG_DEFAULT_EBDA_SIZE=0x400 +# end of Chipset + +# +# Devices +# +CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y +CONFIG_HAVE_LINEAR_FRAMEBUFFER=y +CONFIG_MAINBOARD_HAS_LIBGFXINIT=y +CONFIG_MAINBOARD_USE_LIBGFXINIT=y +# CONFIG_VGA_ROM_RUN is not set +# CONFIG_NO_GFX_INIT is not set +CONFIG_NO_EARLY_GFX_INIT=y + +# +# Display +# +CONFIG_VGA_TEXT_FRAMEBUFFER=y +# CONFIG_GENERIC_LINEAR_FRAMEBUFFER is not set +CONFIG_DEFAULT_SCREEN_ROTATION_INT=0 +# end of Display + +CONFIG_PCI=y +CONFIG_ECAM_MMCONF_SUPPORT=y +CONFIG_PCIX_PLUGIN_SUPPORT=y +CONFIG_AZALIA_HDA_CODEC_SUPPORT=y +CONFIG_PCIEXP_PLUGIN_SUPPORT=y +CONFIG_ECAM_MMCONF_LENGTH=0x04000000 +CONFIG_PCI_ALLOW_BUS_MASTER=y +CONFIG_PCI_SET_BUS_MASTER_PCI_BRIDGES=y +CONFIG_PCI_ALLOW_BUS_MASTER_ANY_DEVICE=y +# CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS is not set +# CONFIG_PCIEXP_LANE_ERR_STAT_CLEAR is not set +# CONFIG_EARLY_PCI_BRIDGE is not set +CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 +CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 +CONFIG_INTEL_GMA_HAVE_VBT=y +CONFIG_INTEL_GMA_ADD_VBT=y +# CONFIG_SOFTWARE_I2C is not set +CONFIG_I2C_TRANSFER_TIMEOUT_US=500000 +CONFIG_RESOURCE_ALLOCATION_TOP_DOWN=y +CONFIG_USE_DDR3=y +# end of Devices + +# +# Generic Drivers +# +CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set +# CONFIG_ELOG is not set +CONFIG_CACHE_MRC_SETTINGS=y +# CONFIG_MRC_SETTINGS_PROTECT is not set +# CONFIG_DRIVERS_OPTION_CFR is not set +# CONFIG_SMMSTORE is not set +CONFIG_SPI_FLASH=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY=y +# CONFIG_SPI_FLASH_NO_FAST_READ is not set +CONFIG_SPI_FLASH_ADESTO=y +CONFIG_SPI_FLASH_AMIC=y +CONFIG_SPI_FLASH_ATMEL=y +CONFIG_SPI_FLASH_EON=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_SST=y +CONFIG_SPI_FLASH_ISSI=y +CONFIG_HAVE_EM100PRO_SPI_CONSOLE_SUPPORT=y +CONFIG_TPM_INIT_RAMSTAGE=y +# CONFIG_TPM_PPI is not set +CONFIG_DRIVERS_UART=y +# CONFIG_DRIVERS_UART_OXPCIE is not set +CONFIG_HAVE_USBDEBUG=y +CONFIG_HAVE_USBDEBUG_OPTIONS=y +# CONFIG_USBDEBUG is not set +# CONFIG_VPD is not set +# CONFIG_DRIVERS_EMULATION_QEMU_FW_CFG is not set +# CONFIG_DRIVERS_GENERIC_CBFS_SERIAL is not set +# CONFIG_DRIVERS_GENERIC_CBFS_UUID is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9750 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9755 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9763E is not set +# CONFIG_DRIVERS_I2C_MAX98396 is not set +CONFIG_INTEL_DDI=y +CONFIG_INTEL_INT15=y +CONFIG_INTEL_GMA_ACPI=y +CONFIG_VBT_CBFS_COMPRESSION_LZMA=y +# CONFIG_VBT_CBFS_COMPRESSION_LZ4 is not set +# CONFIG_VBT_CBFS_COMPRESSION_NONE is not set +CONFIG_VBT_CBFS_COMPRESSION_ALGORITHM="lzma" +CONFIG_GFX_GMA=y +CONFIG_GFX_GMA_DYN_CPU=y +CONFIG_GFX_GMA_GENERATION="Haswell" +CONFIG_GFX_GMA_PCH="Lynx_Point" +CONFIG_GFX_GMA_PANEL_2_PORT="Disabled" +CONFIG_GFX_GMA_ANALOG_I2C_PORT="PCH_DAC" +# CONFIG_DRIVERS_NXP_UWB_SR1XX is not set +# CONFIG_DRIVERS_PS2_KEYBOARD is not set +CONFIG_DRIVERS_MC146818=y +# CONFIG_USE_PC_CMOS_ALTCENTURY is not set +CONFIG_PC_CMOS_BASE_PORT_BANK0=0x70 +CONFIG_MEMORY_MAPPED_TPM=y +CONFIG_TPM_TIS_BASE_ADDRESS=0xfed40000 +CONFIG_VGA=y +# CONFIG_DRIVERS_SIL_3114 is not set +CONFIG_DRIVERS_WIFI_GENERIC=y +CONFIG_DRIVERS_MTK_WIFI=y +# end of Generic Drivers + +# +# Security +# + +# +# CBFS verification +# +# CONFIG_CBFS_VERIFICATION is not set +# end of CBFS verification + +# +# Verified Boot (vboot) +# +# end of Verified Boot (vboot) + +# +# Trusted Platform Module +# +CONFIG_TPM1=y +# CONFIG_TPM2 is not set +CONFIG_TPM=y +CONFIG_MAINBOARD_HAS_TPM1=y +# CONFIG_TPM_DEACTIVATE is not set +# CONFIG_DEBUG_TPM is not set +CONFIG_PCR_BOOT_MODE=1 +CONFIG_PCR_HWID=1 +CONFIG_PCR_SRTM=2 +CONFIG_PCR_FW_VER=10 +CONFIG_PCR_RUNTIME_DATA=3 +# end of Trusted Platform Module + +# +# Memory initialization +# +CONFIG_PLATFORM_HAS_DRAM_CLEAR=y +CONFIG_SECURITY_CLEAR_DRAM_ON_REGULAR_BOOT=y +# end of Memory initialization + +# CONFIG_INTEL_TXT is not set +# CONFIG_STM is not set +# CONFIG_INTEL_CBNT_SUPPORT is not set +CONFIG_BOOTMEDIA_LOCK_NONE=y +# CONFIG_BOOTMEDIA_LOCK_CONTROLLER is not set +# CONFIG_BOOTMEDIA_LOCK_CHIP is not set +# CONFIG_BOOTMEDIA_SMM_BWP is not set +# end of Security + +CONFIG_ACPI_HAVE_PCAT_8259=y +CONFIG_ACPI_INTEL_HARDWARE_SLEEP_VALUES=y +CONFIG_ACPI_SOC_NVS=y +CONFIG_ACPI_NO_CUSTOM_MADT=y +CONFIG_ACPI_COMMON_MADT_LAPIC=y +CONFIG_ACPI_COMMON_MADT_IOAPIC=y +CONFIG_HAVE_ACPI_TABLES=y +CONFIG_BOOT_DEVICE_SPI_FLASH=y +CONFIG_BOOT_DEVICE_MEMORY_MAPPED=y +CONFIG_BOOT_DEVICE_SUPPORTS_WRITES=y +CONFIG_RTC=y + +# +# Console +# +CONFIG_BOOTBLOCK_CONSOLE=y +CONFIG_POSTCAR_CONSOLE=y +CONFIG_SQUELCH_EARLY_SMP=y + +# +# I/O mapped, 8250-compatible +# +CONFIG_TTYS0_BASE=0x3f8 + +# +# Serial port base address = 0x3f8 +# +# CONFIG_CONSOLE_SERIAL_921600 is not set +# CONFIG_CONSOLE_SERIAL_460800 is not set +# CONFIG_CONSOLE_SERIAL_230400 is not set +CONFIG_CONSOLE_SERIAL_115200=y +# CONFIG_CONSOLE_SERIAL_57600 is not set +# CONFIG_CONSOLE_SERIAL_38400 is not set +# CONFIG_CONSOLE_SERIAL_19200 is not set +# CONFIG_CONSOLE_SERIAL_9600 is not set +CONFIG_TTYS0_LCS=3 +# CONFIG_SPKMODEM is not set +# CONFIG_CONSOLE_NE2K is not set +CONFIG_CONSOLE_CBMEM=y +# CONFIG_CONSOLE_SPI_FLASH is not set +# CONFIG_CONSOLE_I2C_SMBUS is not set +# CONFIG_EM100PRO_SPI_CONSOLE is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL_7=y +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_6 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_5 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_4 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_2 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_1 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL=7 +CONFIG_CONSOLE_USE_LOGLEVEL_PREFIX=y +CONFIG_CONSOLE_USE_ANSI_ESCAPES=y +# CONFIG_CMOS_POST is not set +CONFIG_POST_DEVICE_NONE=y +# CONFIG_POST_DEVICE_LPC is not set +# CONFIG_POST_DEVICE_PCI_PCIE is not set +CONFIG_POST_IO_PORT=0x80 +CONFIG_HWBASE_DEBUG_CB=y +# end of Console + +CONFIG_HAVE_ACPI_RESUME=y +CONFIG_RESUME_PATH_SAME_AS_BOOT=y +CONFIG_HAVE_MONOTONIC_TIMER=y +CONFIG_HAVE_OPTION_TABLE=y +CONFIG_IOAPIC=y +CONFIG_USE_WATCHDOG_ON_BOOT=y + +# +# System tables +# +CONFIG_GENERATE_SMBIOS_TABLES=y +CONFIG_BIOS_VENDOR="coreboot" +CONFIG_MAINBOARD_SERIAL_NUMBER="123456789" +# end of System tables + +# +# Payload +# +CONFIG_PAYLOAD_NONE=y +# end of Payload + +# +# Debugging +# + +# +# CPU Debug Settings +# +# CONFIG_DISPLAY_MTRRS is not set + +# +# Vendorcode Debug Settings +# + +# +# BLOB Debug Settings +# + +# +# General Debug Settings +# +# CONFIG_GDB_STUB is not set +# CONFIG_DEBUG_CBFS is not set +CONFIG_HAVE_DEBUG_SMBUS=y +# CONFIG_DEBUG_SMBUS is not set +# CONFIG_DEBUG_MALLOC is not set +# CONFIG_DEBUG_CONSOLE_INIT is not set +# CONFIG_DEBUG_SPI_FLASH is not set +# CONFIG_DEBUG_BOOT_STATE is not set +# CONFIG_DEBUG_ADA_CODE is not set +CONFIG_HAVE_EM100_SUPPORT=y +# CONFIG_EM100 is not set +# CONFIG_DEBUG_ACPICA_COMPATIBLE is not set +# end of Debugging + +CONFIG_RAMSTAGE_ADA=y +CONFIG_RAMSTAGE_LIBHWBASE=y +CONFIG_HWBASE_DYNAMIC_MMIO=y +CONFIG_HWBASE_DEFAULT_MMCONF=0xf0000000 +CONFIG_HWBASE_DIRECT_PCIDEV=y +CONFIG_DECOMPRESS_OFAST=y + +# +# Boot Logo Configuration +# +# CONFIG_BMP_LOGO is not set +# end of Boot Logo Configuration + +CONFIG_WARNINGS_ARE_ERRORS=y +CONFIG_MAX_REBOOT_CNT=3 +CONFIG_RELOCATABLE_MODULES=y +CONFIG_HAVE_BOOTBLOCK=y +CONFIG_HAVE_ROMSTAGE=y +CONFIG_HAVE_RAMSTAGE=y diff --git a/config/coreboot/t1700sff_bmrc_12mb/target.cfg b/config/coreboot/t1700sff_bmrc_12mb/target.cfg new file mode 100644 index 00000000..a2d591d1 --- /dev/null +++ b/config/coreboot/t1700sff_bmrc_12mb/target.cfg @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +tree="default" +xarch="i386-elf" +payload_seabios="y" +payload_grub="y" +payload_memtest="y" +grub_scan_disk="nvme ahci" +grubtree="xhci_nvme" +vcfg="t1700" +build_depend="seabios/default grub/xhci_nvme memtest86plus u-boot/amd64coreboot" +payload_uboot="amd64" diff --git a/config/coreboot/t400_16mb/config/libgfxinit_corebootfb b/config/coreboot/t400_16mb/config/libgfxinit_corebootfb index 1ba29ce7..b04c8531 100644 --- a/config/coreboot/t400_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/t400_16mb/config/libgfxinit_corebootfb @@ -274,6 +274,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -318,7 +319,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -379,6 +379,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -392,7 +394,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -473,6 +474,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/t400_16mb/config/libgfxinit_txtmode b/config/coreboot/t400_16mb/config/libgfxinit_txtmode index 613433c3..61d4040b 100644 --- a/config/coreboot/t400_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/t400_16mb/config/libgfxinit_txtmode @@ -272,6 +272,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -316,7 +317,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -377,6 +377,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -390,7 +392,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -469,6 +470,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/t400_16mb/target.cfg b/config/coreboot/t400_16mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/t400_16mb/target.cfg +++ b/config/coreboot/t400_16mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/t400_4mb/config/libgfxinit_corebootfb b/config/coreboot/t400_4mb/config/libgfxinit_corebootfb index 5155dbd9..d6f80065 100644 --- a/config/coreboot/t400_4mb/config/libgfxinit_corebootfb +++ b/config/coreboot/t400_4mb/config/libgfxinit_corebootfb @@ -274,6 +274,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -318,7 +319,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -379,6 +379,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -392,7 +394,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -473,6 +474,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/t400_4mb/config/libgfxinit_txtmode b/config/coreboot/t400_4mb/config/libgfxinit_txtmode index 34ae080a..2e878426 100644 --- a/config/coreboot/t400_4mb/config/libgfxinit_txtmode +++ b/config/coreboot/t400_4mb/config/libgfxinit_txtmode @@ -272,6 +272,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -316,7 +317,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -377,6 +377,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -390,7 +392,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -469,6 +470,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/t400_4mb/target.cfg b/config/coreboot/t400_4mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/t400_4mb/target.cfg +++ b/config/coreboot/t400_4mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/t400_8mb/config/libgfxinit_corebootfb b/config/coreboot/t400_8mb/config/libgfxinit_corebootfb index 95159c9d..b3c9a4fc 100644 --- a/config/coreboot/t400_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/t400_8mb/config/libgfxinit_corebootfb @@ -274,6 +274,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -318,7 +319,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -379,6 +379,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -392,7 +394,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -473,6 +474,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/t400_8mb/config/libgfxinit_txtmode b/config/coreboot/t400_8mb/config/libgfxinit_txtmode index f486a603..d47db263 100644 --- a/config/coreboot/t400_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/t400_8mb/config/libgfxinit_txtmode @@ -272,6 +272,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -316,7 +317,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -377,6 +377,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -390,7 +392,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -469,6 +470,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/t400_8mb/target.cfg b/config/coreboot/t400_8mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/t400_8mb/target.cfg +++ b/config/coreboot/t400_8mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/t420_8mb/config/libgfxinit_corebootfb b/config/coreboot/t420_8mb/config/libgfxinit_corebootfb index 7283edb3..eeed98c6 100644 --- a/config/coreboot/t420_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/t420_8mb/config/libgfxinit_corebootfb @@ -275,6 +275,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -319,7 +320,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -395,6 +395,7 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -411,7 +412,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -490,6 +490,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/t420_8mb/config/libgfxinit_txtmode b/config/coreboot/t420_8mb/config/libgfxinit_txtmode new file mode 100644 index 00000000..46d361f3 --- /dev/null +++ b/config/coreboot/t420_8mb/config/libgfxinit_txtmode @@ -0,0 +1,716 @@ +# +# Automatically generated file; DO NOT EDIT. +# coreboot configuration +# + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_CBFS_PREFIX="fallback" +CONFIG_COMPILER_GCC=y +# CONFIG_COMPILER_LLVM_CLANG is not set +# CONFIG_ANY_TOOLCHAIN is not set +# CONFIG_CCACHE is not set +# CONFIG_LTO is not set +# CONFIG_IWYU is not set +# CONFIG_FMD_GENPARSER is not set +# CONFIG_UTIL_GENPARSER is not set +# CONFIG_OPTION_BACKEND_NONE is not set +CONFIG_USE_OPTION_TABLE=y +# CONFIG_USE_CBFS_FILE_OPTION_BACKEND is not set +CONFIG_STATIC_OPTION_TABLE=y +CONFIG_COMPRESS_RAMSTAGE_LZMA=y +# CONFIG_COMPRESS_RAMSTAGE_LZ4 is not set +CONFIG_SEPARATE_ROMSTAGE=y +CONFIG_INCLUDE_CONFIG_FILE=y +CONFIG_COLLECT_TIMESTAMPS=y +# CONFIG_TIMESTAMPS_ON_CONSOLE is not set +CONFIG_USE_BLOBS=y +# CONFIG_USE_AMD_BLOBS is not set +# CONFIG_USE_QC_BLOBS is not set +# CONFIG_COVERAGE is not set +# CONFIG_UBSAN is not set +CONFIG_HAVE_ASAN_IN_RAMSTAGE=y +# CONFIG_ASAN is not set +CONFIG_NO_STAGE_CACHE=y +# CONFIG_TSEG_STAGE_CACHE is not set +# CONFIG_UPDATE_IMAGE is not set +# CONFIG_BOOTSPLASH_IMAGE is not set + +# +# Software Bill Of Materials (SBOM) +# +# CONFIG_SBOM is not set +# end of Software Bill Of Materials (SBOM) +# end of General setup + +# +# Mainboard +# + +# +# Important: Run 'make distclean' before switching boards +# +# CONFIG_VENDOR_51NB is not set +# CONFIG_VENDOR_ACER is not set +# CONFIG_VENDOR_AMD is not set +# CONFIG_VENDOR_AOOSTAR is not set +# CONFIG_VENDOR_AOPEN is not set +# CONFIG_VENDOR_APPLE is not set +# CONFIG_VENDOR_ARM is not set +# CONFIG_VENDOR_ASROCK is not set +# CONFIG_VENDOR_ASUS is not set +# CONFIG_VENDOR_BIOSTAR is not set +# CONFIG_VENDOR_BOSTENTECH is not set +# CONFIG_VENDOR_BYTEDANCE is not set +# CONFIG_VENDOR_CAVIUM is not set +# CONFIG_VENDOR_CLEVO is not set +# CONFIG_VENDOR_COMPULAB is not set +# CONFIG_VENDOR_CWWK is not set +# CONFIG_VENDOR_DELL is not set +# CONFIG_VENDOR_EMULATION is not set +# CONFIG_VENDOR_ERYING is not set +# CONFIG_VENDOR_EXAMPLE is not set +# CONFIG_VENDOR_FACEBOOK is not set +# CONFIG_VENDOR_FOXCONN is not set +# CONFIG_VENDOR_FRAMEWORK is not set +# CONFIG_VENDOR_GETAC is not set +# CONFIG_VENDOR_GIGABYTE is not set +# CONFIG_VENDOR_GOOGLE is not set +# CONFIG_VENDOR_HARDKERNEL is not set +# CONFIG_VENDOR_HP is not set +# CONFIG_VENDOR_IBASE is not set +# CONFIG_VENDOR_IBM is not set +# CONFIG_VENDOR_INTEL is not set +# CONFIG_VENDOR_INVENTEC is not set +# CONFIG_VENDOR_KONTRON is not set +# CONFIG_VENDOR_LATTEPANDA is not set +CONFIG_VENDOR_LENOVO=y +# CONFIG_VENDOR_LIBRETREND is not set +# CONFIG_VENDOR_MITAC_COMPUTING is not set +# CONFIG_VENDOR_MSI is not set +# CONFIG_VENDOR_NOVACUSTOM is not set +# CONFIG_VENDOR_OCP is not set +# CONFIG_VENDOR_OPENCELLULAR is not set +# CONFIG_VENDOR_PACKARDBELL is not set +# CONFIG_VENDOR_PCENGINES is not set +# CONFIG_VENDOR_PINE64 is not set +# CONFIG_VENDOR_PORTWELL is not set +# CONFIG_VENDOR_PRODRIVE is not set +# CONFIG_VENDOR_PROTECTLI is not set +# CONFIG_VENDOR_PURISM is not set +# CONFIG_VENDOR_RAPTOR_CS is not set +# CONFIG_VENDOR_RAZER is not set +# CONFIG_VENDOR_RODA is not set +# CONFIG_VENDOR_SAMSUNG is not set +# CONFIG_VENDOR_SAPPHIRE is not set +# CONFIG_VENDOR_SIEMENS is not set +# CONFIG_VENDOR_SIFIVE is not set +# CONFIG_VENDOR_STARLABS is not set +# CONFIG_VENDOR_SUPERMICRO is not set +# CONFIG_VENDOR_SYSTEM76 is not set +# CONFIG_VENDOR_TI is not set +# CONFIG_VENDOR_TOPTON is not set +# CONFIG_VENDOR_UP is not set +# CONFIG_VENDOR_VIA is not set +CONFIG_BOARD_SPECIFIC_OPTIONS=y +CONFIG_MAINBOARD_FAMILY="ThinkPad T420" +CONFIG_MAINBOARD_PART_NUMBER="ThinkPad T420" +CONFIG_MAINBOARD_VERSION="1.0" +CONFIG_MAINBOARD_DIR="lenovo/t420" +CONFIG_VGA_BIOS_ID="8086,0126" +CONFIG_DIMM_MAX=4 +CONFIG_DIMM_SPD_SIZE=256 +CONFIG_FMDFILE="" +# CONFIG_NO_POST is not set +CONFIG_MAINBOARD_VENDOR="LENOVO" +CONFIG_CBFS_SIZE=0x7E0000 +CONFIG_MAX_CPUS=8 +CONFIG_ONBOARD_VGA_IS_PRIMARY=y +CONFIG_POST_DEVICE=y +CONFIG_POST_IO=y +CONFIG_OVERRIDE_DEVICETREE="" +CONFIG_DEVICETREE="devicetree.cb" +# CONFIG_VBOOT is not set +# CONFIG_VGA_BIOS is not set +CONFIG_PCIEXP_ASPM=y +# CONFIG_PCIEXP_L1_SUB_STATE is not set +# CONFIG_PCIEXP_CLK_PM is not set +CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="LENOVO" +CONFIG_DRAM_RESET_GATE_GPIO=10 +CONFIG_ECAM_MMCONF_BASE_ADDRESS=0xf0000000 +CONFIG_ECAM_MMCONF_BUS_NUMBER=64 +CONFIG_MEMLAYOUT_LD_FILE="src/arch/x86/memlayout.ld" +# CONFIG_FATAL_ASSERTS is not set +CONFIG_USBDEBUG_HCD_INDEX=2 +CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/data.vbt" +CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00 +CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME="ThinkPad T420" +# CONFIG_CONSOLE_POST is not set +CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" +CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" +CONFIG_MAX_SOCKET=1 +CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 +CONFIG_TPM_PIRQ=0x0 +CONFIG_VBOOT_SLOTS_RW_A=y +CONFIG_DCACHE_RAM_BASE=0xfefe0000 +CONFIG_DCACHE_RAM_SIZE=0x20000 +CONFIG_C_ENV_BOOTBLOCK_SIZE=0x40000 +CONFIG_DCACHE_BSP_STACK_SIZE=0x10000 +CONFIG_MAX_ACPI_TABLE_SIZE_KB=144 +CONFIG_HAVE_INTEL_FIRMWARE=y +CONFIG_MRC_SETTINGS_CACHE_SIZE=0x10000 +CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y +CONFIG_SPI_FLASH_WINBOND=y +# CONFIG_DRIVERS_INTEL_WIFI is not set +CONFIG_IFD_BIN_PATH="../../../config/ifd/xx20/ifd" +CONFIG_ME_BIN_PATH="../../../vendorfiles/xx20/me.bin" +CONFIG_GBE_BIN_PATH="../../../config/ifd/xx20/gbe" +CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 +CONFIG_CARDBUS_PLUGIN_SUPPORT=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_DEBUG_SMI is not set +CONFIG_HAVE_IFD_BIN=y +CONFIG_PCIEXP_HOTPLUG_BUSES=8 +CONFIG_PCIEXP_HOTPLUG_MEM=0x800000 +CONFIG_PCIEXP_HOTPLUG_PREFETCH_MEM=0x10000000 +# CONFIG_BOARD_LENOVO_THINKPAD_T440P is not set +# CONFIG_BOARD_LENOVO_THINKPAD_W541 is not set +# CONFIG_BOARD_LENOVO_L520 is not set +# CONFIG_BOARD_LENOVO_M900 is not set +# CONFIG_BOARD_LENOVO_THINKCENTRE_M900_TINY is not set +# CONFIG_BOARD_LENOVO_M920Q is not set +# CONFIG_BOARD_LENOVO_S230U is not set +# CONFIG_BOARD_LENOVO_T480 is not set +# CONFIG_BOARD_LENOVO_T480S is not set +# CONFIG_BOARD_LENOVO_T400 is not set +# CONFIG_BOARD_LENOVO_T500 is not set +# CONFIG_BOARD_LENOVO_R400 is not set +# CONFIG_BOARD_LENOVO_R500 is not set +# CONFIG_BOARD_LENOVO_W500 is not set +# CONFIG_BOARD_LENOVO_T410 is not set +CONFIG_BOARD_LENOVO_T420=y +# CONFIG_BOARD_LENOVO_T420S is not set +# CONFIG_BOARD_LENOVO_THINKPAD_T430 is not set +# CONFIG_BOARD_LENOVO_T430S is not set +# CONFIG_BOARD_LENOVO_T431S is not set +# CONFIG_BOARD_LENOVO_T520 is not set +# CONFIG_BOARD_LENOVO_W520 is not set +# CONFIG_BOARD_LENOVO_T530 is not set +# CONFIG_BOARD_LENOVO_W530 is not set +# CONFIG_BOARD_LENOVO_T60 is not set +# CONFIG_BOARD_LENOVO_Z61T is not set +# CONFIG_BOARD_LENOVO_R60 is not set +# CONFIG_BOARD_LENOVO_THINKCENTRE_A58 is not set +# CONFIG_BOARD_LENOVO_THINKCENTRE_M710S is not set +# CONFIG_BOARD_LENOVO_X131E is not set +# CONFIG_BOARD_LENOVO_X1_CARBON_GEN1 is not set +# CONFIG_BOARD_LENOVO_X200 is not set +# CONFIG_BOARD_LENOVO_X301 is not set +# CONFIG_BOARD_LENOVO_X201 is not set +# CONFIG_BOARD_LENOVO_X220 is not set +# CONFIG_BOARD_LENOVO_X220I is not set +# CONFIG_BOARD_LENOVO_X1 is not set +# CONFIG_BOARD_LENOVO_X230 is not set +# CONFIG_BOARD_LENOVO_X230T is not set +# CONFIG_BOARD_LENOVO_X230S is not set +# CONFIG_BOARD_LENOVO_X230_EDP is not set +# CONFIG_BOARD_LENOVO_X60 is not set +CONFIG_PS2K_EISAID="PNP0303" +CONFIG_PS2M_EISAID="LEN0015" +CONFIG_THINKPADEC_HKEY_EISAID="LEN0068" +CONFIG_GFX_GMA_PANEL_1_PORT="LVDS" +CONFIG_D3COLD_SUPPORT=y +# CONFIG_DRIVERS_UART_8250IO is not set +CONFIG_PC_CMOS_BASE_PORT_BANK1=0x72 +CONFIG_HEAP_SIZE=0x100000 +CONFIG_EC_GPE_SCI=0x50 +CONFIG_EC_STARLABS_BATTERY_MODEL="Unknown" +CONFIG_EC_STARLABS_BATTERY_TYPE="LION" +CONFIG_EC_STARLABS_BATTERY_OEM="Unknown" +# CONFIG_TPM_MEASURED_BOOT is not set +CONFIG_BOARD_ROMSIZE_KB_8192=y +# CONFIG_COREBOOT_ROMSIZE_KB_256 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_512 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_1024 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_2048 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_4096 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_5120 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_6144 is not set +CONFIG_COREBOOT_ROMSIZE_KB_8192=y +# CONFIG_COREBOOT_ROMSIZE_KB_10240 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_12288 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_16384 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_24576 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_32768 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_65536 is not set +CONFIG_COREBOOT_ROMSIZE_KB=8192 +CONFIG_ROM_SIZE=0x00800000 +CONFIG_HAVE_POWER_STATE_AFTER_FAILURE=y +CONFIG_HAVE_POWER_STATE_PREVIOUS_AFTER_FAILURE=y +CONFIG_POWER_STATE_OFF_AFTER_FAILURE=y +# CONFIG_POWER_STATE_ON_AFTER_FAILURE is not set +# CONFIG_POWER_STATE_PREVIOUS_AFTER_FAILURE is not set +CONFIG_MAINBOARD_POWER_FAILURE_STATE=0 +# end of Mainboard + +CONFIG_SYSTEM_TYPE_LAPTOP=y + +# +# Chipset +# + +# +# SoC +# +CONFIG_CHIPSET_DEVICETREE="northbridge/intel/sandybridge/chipset.cb" +CONFIG_CBFS_MCACHE_SIZE=0x4000 +CONFIG_ROMSTAGE_ADDR=0x2000000 +CONFIG_VERSTAGE_ADDR=0x2000000 +CONFIG_SMM_TSEG_SIZE=0x800000 +CONFIG_SMM_RESERVED_SIZE=0x100000 +CONFIG_SMM_MODULE_STACK_SIZE=0x400 +# CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 +CONFIG_SERIRQ_CONTINUOUS_MODE=y +CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 +CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 +CONFIG_EHCI_BAR=0xfef00000 +CONFIG_ACPI_CPU_STRING="CP%02X" +CONFIG_STACK_SIZE=0x2000 +CONFIG_IED_REGION_SIZE=0x400000 +CONFIG_INTEL_GMA_BCLV_OFFSET=0x48254 +CONFIG_INTEL_GMA_BCLV_WIDTH=16 +CONFIG_INTEL_GMA_BCLM_OFFSET=0xc8256 +CONFIG_INTEL_GMA_BCLM_WIDTH=16 +CONFIG_BOOTBLOCK_IN_CBFS=y +CONFIG_DCACHE_RAM_MRC_VAR_SIZE=0x0 +CONFIG_HPET_MIN_TICKS=0x80 +CONFIG_FIXED_MCHBAR_MMIO_BASE=0xfed10000 +CONFIG_FIXED_DMIBAR_MMIO_BASE=0xfed18000 +CONFIG_FIXED_EPBAR_MMIO_BASE=0xfed19000 +CONFIG_PCIEXP_COMMON_CLOCK=y +CONFIG_SOC_PHYSICAL_ADDRESS_WIDTH=0 +# CONFIG_ALWAYS_ALLOW_ABOVE_4G_ALLOCATION is not set +CONFIG_FIXED_SMBUS_IO_BASE=0x400 +CONFIG_CBFS_CACHE_ALIGN=8 + +# +# CPU +# +CONFIG_CPU_INTEL_MODEL_206AX=y +CONFIG_CPU_INTEL_COMMON=y +CONFIG_ENABLE_VMX=y +CONFIG_SET_IA32_FC_LOCK_BIT=y +CONFIG_SET_MSR_AESNI_LOCK_BIT=y +CONFIG_CPU_INTEL_COMMON_TIMEBASE=y +CONFIG_CPU_INTEL_COMMON_SMM=y +CONFIG_MICROCODE_UPDATE_PRE_RAM=y +CONFIG_PARALLEL_MP=y +CONFIG_XAPIC_ONLY=y +# CONFIG_X2APIC_ONLY is not set +# CONFIG_X2APIC_RUNTIME is not set +# CONFIG_X2APIC_LATE_WORKAROUND is not set +CONFIG_UDELAY_TSC=y +CONFIG_TSC_MONOTONIC_TIMER=y +CONFIG_TSC_SYNC_MFENCE=y +CONFIG_HAVE_SMI_HANDLER=y +CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y +CONFIG_SMM_TSEG=y +CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 +CONFIG_AP_STACK_SIZE=0x800 +CONFIG_SMP=y +CONFIG_SSE=y +CONFIG_SSE2=y +CONFIG_SUPPORT_CPU_UCODE_IN_CBFS=y +CONFIG_USE_CPU_MICROCODE_CBFS_BINS=y +CONFIG_CPU_MICROCODE_CBFS_DEFAULT_BINS=y +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS is not set +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER is not set +# CONFIG_CPU_MICROCODE_CBFS_NONE is not set + +# +# Northbridge +# +CONFIG_USE_NATIVE_RAMINIT=y +CONFIG_NORTHBRIDGE_INTEL_SANDYBRIDGE=y +# CONFIG_NATIVE_RAMINIT_IGNORE_MAX_MEM_FUSES is not set +# CONFIG_NATIVE_RAMINIT_IGNORE_XMP_MAX_DIMMS is not set +# CONFIG_NATIVE_RAMINIT_IGNORE_XMP_REQUESTED_VOLTAGE is not set +# CONFIG_RAMINIT_ALWAYS_ALLOW_DLL_OFF is not set +CONFIG_RAMINIT_ENABLE_ECC=y +CONFIG_IGD_DEFAULT_UMA_SIZE_32MB=y +# CONFIG_IGD_DEFAULT_UMA_SIZE_64MB is not set +# CONFIG_IGD_DEFAULT_UMA_SIZE_96MB is not set +# CONFIG_IGD_DEFAULT_UMA_SIZE_128MB is not set +CONFIG_IGD_DEFAULT_UMA_INDEX=0 + +# +# Southbridge +# +CONFIG_SOUTHBRIDGE_INTEL_BD82X6X_COMMON=y +CONFIG_SOUTHBRIDGE_INTEL_BD82X6X=y +CONFIG_HIDE_MEI_ON_ERROR=y +CONFIG_PCIEXP_HOTPLUG=y +CONFIG_INTEL_DESCRIPTOR_MODE_REQUIRED=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RESET=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RTC=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMCLIB=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMBASE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_GPIO=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_ME=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_EARLY_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI_ICH9=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PIRQ_ACPI_GEN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RCBA_PIRQ=y +CONFIG_HAVE_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMM=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_FINALIZE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_USB_DEBUG=y +CONFIG_INTEL_DESCRIPTOR_MODE_CAPABLE=y +# CONFIG_VALIDATE_INTEL_DESCRIPTOR is not set +CONFIG_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_TCO_SPACE_NOT_YET_SPLIT=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_WATCHDOG=y +CONFIG_FIXED_RCBA_MMIO_BASE=0xfed1c000 +CONFIG_RCBA_LENGTH=0x4000 + +# +# Super I/O +# + +# +# Embedded Controllers +# +CONFIG_EC_ACPI=y +CONFIG_EC_LENOVO_H8=y +# CONFIG_H8_BEEP_ON_DEATH is not set +# CONFIG_H8_FLASH_LEDS_ON_DEATH is not set +# CONFIG_H8_SUPPORT_BT_ON_WIFI is not set +# CONFIG_H8_FN_CTRL_SWAP is not set +CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_EC_LENOVO_PMH7=y + +# +# Intel Firmware +# +CONFIG_HAVE_ME_BIN=y +# CONFIG_STITCH_ME_BIN is not set +# CONFIG_CHECK_ME is not set +# CONFIG_ME_REGION_ALLOW_CPU_READ_ACCESS is not set +# CONFIG_USE_ME_CLEANER is not set +CONFIG_MAINBOARD_USES_IFD_GBE_REGION=y +CONFIG_HAVE_GBE_BIN=y +# CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION is not set +# CONFIG_LOCK_MANAGEMENT_ENGINE is not set +CONFIG_UNLOCK_FLASH_REGIONS=y +CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 +CONFIG_ARCH_X86=y +CONFIG_ARCH_BOOTBLOCK_X86_32=y +CONFIG_ARCH_VERSTAGE_X86_32=y +CONFIG_ARCH_ROMSTAGE_X86_32=y +CONFIG_ARCH_POSTCAR_X86_32=y +CONFIG_ARCH_RAMSTAGE_X86_32=y +CONFIG_ARCH_ALL_STAGES_X86_32=y +CONFIG_HAVE_X86_64_SUPPORT=y +CONFIG_RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT=y +CONFIG_X86_TOP4G_BOOTMEDIA_MAP=y +CONFIG_POSTRAM_CBFS_CACHE_IN_BSS=y +CONFIG_RAMSTAGE_CBFS_CACHE_SIZE=0x4000 +CONFIG_PC80_SYSTEM=y +CONFIG_HAVE_CMOS_DEFAULT=y +CONFIG_POSTCAR_STAGE=y +CONFIG_BOOTBLOCK_SIMPLE=y +# CONFIG_BOOTBLOCK_NORMAL is not set +CONFIG_COLLECT_TIMESTAMPS_TSC=y +CONFIG_HAVE_CF9_RESET=y +CONFIG_DEBUG_HW_BREAKPOINTS=y +CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS=y +# CONFIG_DUMP_SMBIOS_TYPE17 is not set +CONFIG_X86_BOOTBLOCK_EXTRA_PROGRAM_SZ=0 +CONFIG_DEFAULT_EBDA_LOWMEM=0x100000 +CONFIG_DEFAULT_EBDA_SEGMENT=0xF600 +CONFIG_DEFAULT_EBDA_SIZE=0x400 +# end of Chipset + +# +# Devices +# +CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y +CONFIG_HAVE_LINEAR_FRAMEBUFFER=y +CONFIG_MAINBOARD_HAS_LIBGFXINIT=y +CONFIG_MAINBOARD_USE_LIBGFXINIT=y +# CONFIG_VGA_ROM_RUN is not set +# CONFIG_NO_GFX_INIT is not set +CONFIG_NO_EARLY_GFX_INIT=y + +# +# Display +# +CONFIG_VGA_TEXT_FRAMEBUFFER=y +# CONFIG_GENERIC_LINEAR_FRAMEBUFFER is not set +CONFIG_DEFAULT_SCREEN_ROTATION_INT=0 +# end of Display + +CONFIG_PCI=y +CONFIG_ECAM_MMCONF_SUPPORT=y +CONFIG_PCIX_PLUGIN_SUPPORT=y +CONFIG_AZALIA_HDA_CODEC_SUPPORT=y +CONFIG_PCIEXP_PLUGIN_SUPPORT=y +CONFIG_ECAM_MMCONF_LENGTH=0x04000000 +CONFIG_PCI_ALLOW_BUS_MASTER=y +CONFIG_PCI_SET_BUS_MASTER_PCI_BRIDGES=y +CONFIG_PCI_ALLOW_BUS_MASTER_ANY_DEVICE=y +# CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS is not set +# CONFIG_PCIEXP_LANE_ERR_STAT_CLEAR is not set +CONFIG_PCIEXP_HOTPLUG_PREFETCH_MEM_ABOVE_4G=y +# CONFIG_PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G is not set +CONFIG_PCIEXP_HOTPLUG_IO=0x2000 +# CONFIG_EARLY_PCI_BRIDGE is not set +CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 +CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 +CONFIG_INTEL_GMA_HAVE_VBT=y +CONFIG_INTEL_GMA_ADD_VBT=y +# CONFIG_SOFTWARE_I2C is not set +CONFIG_I2C_TRANSFER_TIMEOUT_US=500000 +# CONFIG_RESOURCE_ALLOCATION_TOP_DOWN is not set +CONFIG_USE_DDR3=y +# end of Devices + +# +# Generic Drivers +# +CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set +# CONFIG_ELOG is not set +CONFIG_CACHE_MRC_SETTINGS=y +# CONFIG_MRC_SETTINGS_PROTECT is not set +# CONFIG_DRIVERS_OPTION_CFR is not set +# CONFIG_SMMSTORE is not set +CONFIG_SPI_FLASH=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY=y +# CONFIG_SPI_FLASH_NO_FAST_READ is not set +CONFIG_SPI_FLASH_ADESTO=y +CONFIG_SPI_FLASH_AMIC=y +CONFIG_SPI_FLASH_ATMEL=y +CONFIG_SPI_FLASH_EON=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_SST=y +CONFIG_SPI_FLASH_ISSI=y +CONFIG_TPM_INIT_RAMSTAGE=y +# CONFIG_TPM_PPI is not set +CONFIG_NO_UART_ON_SUPERIO=y +# CONFIG_DRIVERS_UART_OXPCIE is not set +CONFIG_HAVE_USBDEBUG=y +CONFIG_HAVE_USBDEBUG_OPTIONS=y +# CONFIG_USBDEBUG is not set +# CONFIG_VPD is not set +# CONFIG_DRIVERS_EMULATION_QEMU_FW_CFG is not set +# CONFIG_DRIVERS_GENERIC_CBFS_SERIAL is not set +# CONFIG_DRIVERS_GENERIC_CBFS_UUID is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9750 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9755 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9763E is not set +CONFIG_DRIVER_LENOVO_SERIALS=y +# CONFIG_DRIVERS_I2C_MAX98396 is not set +CONFIG_INTEL_INT15=y +CONFIG_INTEL_GMA_ACPI=y +CONFIG_VBT_CBFS_COMPRESSION_LZMA=y +# CONFIG_VBT_CBFS_COMPRESSION_LZ4 is not set +# CONFIG_VBT_CBFS_COMPRESSION_NONE is not set +CONFIG_VBT_CBFS_COMPRESSION_ALGORITHM="lzma" +CONFIG_GFX_GMA=y +CONFIG_GFX_GMA_PANEL_1_ON_LVDS=y +CONFIG_GFX_GMA_DYN_CPU=y +CONFIG_GFX_GMA_GENERATION="Ironlake" +CONFIG_GFX_GMA_PCH="Cougar_Point" +CONFIG_GFX_GMA_PANEL_2_PORT="Disabled" +CONFIG_GFX_GMA_ANALOG_I2C_PORT="PCH_DAC" +CONFIG_DRIVERS_LENOVO_HYBRID_GRAPHICS=y +# CONFIG_DRIVERS_NXP_UWB_SR1XX is not set +# CONFIG_DRIVERS_PS2_KEYBOARD is not set +CONFIG_DRIVERS_MC146818=y +# CONFIG_USE_PC_CMOS_ALTCENTURY is not set +CONFIG_PC_CMOS_BASE_PORT_BANK0=0x70 +CONFIG_MEMORY_MAPPED_TPM=y +CONFIG_TPM_TIS_BASE_ADDRESS=0xfed40000 +CONFIG_VGA=y +CONFIG_DRIVERS_RICOH_RCE822=y +# CONFIG_DRIVERS_SIL_3114 is not set +CONFIG_DRIVERS_WIFI_GENERIC=y +CONFIG_DRIVERS_MTK_WIFI=y +# end of Generic Drivers + +# +# Security +# + +# +# CBFS verification +# +# CONFIG_CBFS_VERIFICATION is not set +# end of CBFS verification + +# +# Verified Boot (vboot) +# +# end of Verified Boot (vboot) + +# +# Trusted Platform Module +# +CONFIG_TPM1=y +# CONFIG_TPM2 is not set +CONFIG_TPM=y +CONFIG_MAINBOARD_HAS_TPM1=y +# CONFIG_TPM_DEACTIVATE is not set +# CONFIG_DEBUG_TPM is not set +CONFIG_PCR_BOOT_MODE=1 +CONFIG_PCR_HWID=1 +CONFIG_PCR_SRTM=2 +CONFIG_PCR_FW_VER=10 +CONFIG_PCR_RUNTIME_DATA=3 +# end of Trusted Platform Module + +# +# Memory initialization +# +CONFIG_PLATFORM_HAS_DRAM_CLEAR=y +CONFIG_SECURITY_CLEAR_DRAM_ON_REGULAR_BOOT=y +# end of Memory initialization + +# CONFIG_INTEL_TXT is not set +# CONFIG_STM is not set +CONFIG_BOOTMEDIA_LOCK_NONE=y +# CONFIG_BOOTMEDIA_LOCK_CONTROLLER is not set +# CONFIG_BOOTMEDIA_LOCK_CHIP is not set +# CONFIG_BOOTMEDIA_SMM_BWP is not set +# end of Security + +CONFIG_ACPI_HAVE_PCAT_8259=y +CONFIG_ACPI_INTEL_HARDWARE_SLEEP_VALUES=y +CONFIG_ACPI_SOC_NVS=y +CONFIG_ACPI_NO_CUSTOM_MADT=y +CONFIG_ACPI_COMMON_MADT_LAPIC=y +CONFIG_ACPI_COMMON_MADT_IOAPIC=y +CONFIG_HAVE_ACPI_TABLES=y +CONFIG_BOOT_DEVICE_SPI_FLASH=y +CONFIG_BOOT_DEVICE_MEMORY_MAPPED=y +CONFIG_BOOT_DEVICE_SUPPORTS_WRITES=y +CONFIG_RTC=y + +# +# Console +# +CONFIG_BOOTBLOCK_CONSOLE=y +CONFIG_POSTCAR_CONSOLE=y +CONFIG_SQUELCH_EARLY_SMP=y +# CONFIG_SPKMODEM is not set +# CONFIG_CONSOLE_NE2K is not set +CONFIG_CONSOLE_CBMEM=y +# CONFIG_CONSOLE_CBMEM_DUMP_TO_UART is not set +# CONFIG_CONSOLE_SPI_FLASH is not set +# CONFIG_CONSOLE_I2C_SMBUS is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_7 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_6 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_5 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_4 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_2 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_1 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0=y +CONFIG_DEFAULT_CONSOLE_LOGLEVEL=0 +CONFIG_CONSOLE_USE_LOGLEVEL_PREFIX=y +CONFIG_CONSOLE_USE_ANSI_ESCAPES=y +# CONFIG_CMOS_POST is not set +CONFIG_POST_DEVICE_NONE=y +# CONFIG_POST_DEVICE_LPC is not set +# CONFIG_POST_DEVICE_PCI_PCIE is not set +CONFIG_POST_IO_PORT=0x80 +CONFIG_HWBASE_DEBUG_NULL=y +# end of Console + +CONFIG_HAVE_ACPI_RESUME=y +CONFIG_RESUME_PATH_SAME_AS_BOOT=y +CONFIG_HAVE_MONOTONIC_TIMER=y +CONFIG_HAVE_OPTION_TABLE=y +CONFIG_IOAPIC=y +CONFIG_USE_WATCHDOG_ON_BOOT=y + +# +# System tables +# +CONFIG_GENERATE_SMBIOS_TABLES=y +CONFIG_SMBIOS_PROVIDED_BY_MOBO=y +CONFIG_BIOS_VENDOR="coreboot" +CONFIG_MAINBOARD_SERIAL_NUMBER="123456789" +# end of System tables + +# +# Payload +# +CONFIG_PAYLOAD_NONE=y +# end of Payload + +# +# Debugging +# + +# +# CPU Debug Settings +# +# CONFIG_DISPLAY_MTRRS is not set + +# +# Vendorcode Debug Settings +# + +# +# BLOB Debug Settings +# + +# +# 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_CONSOLE_INIT is not set +# CONFIG_DEBUG_SPI_FLASH is not set +# CONFIG_DEBUG_BOOT_STATE is not set +# CONFIG_DEBUG_ADA_CODE is not set +CONFIG_HAVE_EM100_SUPPORT=y +# CONFIG_EM100 is not set +# CONFIG_DEBUG_ACPICA_COMPATIBLE is not set +# end of Debugging + +CONFIG_RAMSTAGE_ADA=y +CONFIG_RAMSTAGE_LIBHWBASE=y +CONFIG_HWBASE_DYNAMIC_MMIO=y +CONFIG_HWBASE_DEFAULT_MMCONF=0xf0000000 +CONFIG_HWBASE_DIRECT_PCIDEV=y +CONFIG_DECOMPRESS_OFAST=y + +# +# Boot Logo Configuration +# +# CONFIG_BMP_LOGO is not set +# end of Boot Logo Configuration + +CONFIG_WARNINGS_ARE_ERRORS=y +CONFIG_MAX_REBOOT_CNT=3 +CONFIG_RELOCATABLE_MODULES=y +CONFIG_HAVE_BOOTBLOCK=y +CONFIG_HAVE_ROMSTAGE=y +CONFIG_HAVE_RAMSTAGE=y diff --git a/config/coreboot/t420_8mb/target.cfg b/config/coreboot/t420_8mb/target.cfg index 333030ce..d7510b96 100644 --- a/config/coreboot/t420_8mb/target.cfg +++ b/config/coreboot/t420_8mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="sandybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/t420s_8mb/config/libgfxinit_corebootfb b/config/coreboot/t420s_8mb/config/libgfxinit_corebootfb index 78df42f3..ba181603 100644 --- a/config/coreboot/t420s_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/t420s_8mb/config/libgfxinit_corebootfb @@ -275,6 +275,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -319,7 +320,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -395,6 +395,7 @@ CONFIG_H8_FLASH_LEDS_ON_DEATH=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -411,7 +412,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -490,6 +490,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/t420s_8mb/config/libgfxinit_txtmode b/config/coreboot/t420s_8mb/config/libgfxinit_txtmode index 428a1f91..b3286dfb 100644 --- a/config/coreboot/t420s_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/t420s_8mb/config/libgfxinit_txtmode @@ -273,6 +273,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -317,7 +318,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -393,6 +393,7 @@ CONFIG_H8_FLASH_LEDS_ON_DEATH=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -409,7 +410,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -486,6 +486,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/t420s_8mb/target.cfg b/config/coreboot/t420s_8mb/target.cfg index 333030ce..d7510b96 100644 --- a/config/coreboot/t420s_8mb/target.cfg +++ b/config/coreboot/t420s_8mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="sandybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/t430_12mb/config/libgfxinit_corebootfb b/config/coreboot/t430_12mb/config/libgfxinit_corebootfb index 0336b2cc..18be2432 100644 --- a/config/coreboot/t430_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/t430_12mb/config/libgfxinit_corebootfb @@ -275,6 +275,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -319,7 +320,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -395,6 +395,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -411,7 +413,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -490,6 +491,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/t430_12mb/config/libgfxinit_txtmode b/config/coreboot/t430_12mb/config/libgfxinit_txtmode index 7c7bbca1..e5753d98 100644 --- a/config/coreboot/t430_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/t430_12mb/config/libgfxinit_txtmode @@ -273,6 +273,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -317,7 +318,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -393,6 +393,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -409,7 +411,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -486,6 +487,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/t430_12mb/target.cfg b/config/coreboot/t430_12mb/target.cfg index 6cbab731..595ad782 100644 --- a/config/coreboot/t430_12mb/target.cfg +++ b/config/coreboot/t430_12mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="ivybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/t440plibremrc_12mb/config/libgfxinit_corebootfb b/config/coreboot/t440plibremrc_12mb/config/libgfxinit_corebootfb index 39a9a3e7..3a34c5a1 100644 --- a/config/coreboot/t440plibremrc_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/t440plibremrc_12mb/config/libgfxinit_corebootfb @@ -275,6 +275,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -321,7 +322,6 @@ CONFIG_UDELAY_TSC=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y -CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -402,7 +402,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -477,6 +476,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/t440plibremrc_12mb/config/libgfxinit_txtmode b/config/coreboot/t440plibremrc_12mb/config/libgfxinit_txtmode index d3f1588d..2ced5df3 100644 --- a/config/coreboot/t440plibremrc_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/t440plibremrc_12mb/config/libgfxinit_txtmode @@ -273,6 +273,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -319,7 +320,6 @@ CONFIG_UDELAY_TSC=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y -CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -400,7 +400,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -473,6 +472,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/t440plibremrc_12mb/target.cfg b/config/coreboot/t440plibremrc_12mb/target.cfg index 96fbb9e3..47e228b7 100644 --- a/config/coreboot/t440plibremrc_12mb/target.cfg +++ b/config/coreboot/t440plibremrc_12mb/target.cfg @@ -6,7 +6,7 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="nvme ahci" -grubtree="xhci" +grubtree="xhci_nvme" vcfg="haswell" -build_depend="seabios/default grub/xhci memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +build_depend="seabios/default grub/xhci_nvme memtest86plus u-boot/amd64coreboot" +payload_uboot="amd64" diff --git a/config/coreboot/t440plibremrc_4mcbfs_12mb/config/libgfxinit_corebootfb b/config/coreboot/t440plibremrc_4mcbfs_12mb/config/libgfxinit_corebootfb new file mode 100644 index 00000000..8bfc3f94 --- /dev/null +++ b/config/coreboot/t440plibremrc_4mcbfs_12mb/config/libgfxinit_corebootfb @@ -0,0 +1,705 @@ +# +# Automatically generated file; DO NOT EDIT. +# coreboot configuration +# + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_CBFS_PREFIX="fallback" +CONFIG_COMPILER_GCC=y +# CONFIG_COMPILER_LLVM_CLANG is not set +# CONFIG_ANY_TOOLCHAIN is not set +# CONFIG_CCACHE is not set +# CONFIG_LTO is not set +# CONFIG_IWYU is not set +# CONFIG_FMD_GENPARSER is not set +# CONFIG_UTIL_GENPARSER is not set +# CONFIG_OPTION_BACKEND_NONE is not set +CONFIG_USE_OPTION_TABLE=y +# CONFIG_USE_CBFS_FILE_OPTION_BACKEND is not set +CONFIG_STATIC_OPTION_TABLE=y +CONFIG_COMPRESS_RAMSTAGE_LZMA=y +# CONFIG_COMPRESS_RAMSTAGE_LZ4 is not set +CONFIG_SEPARATE_ROMSTAGE=y +CONFIG_INCLUDE_CONFIG_FILE=y +CONFIG_COLLECT_TIMESTAMPS=y +# CONFIG_TIMESTAMPS_ON_CONSOLE is not set +CONFIG_USE_BLOBS=y +# CONFIG_USE_AMD_BLOBS is not set +# CONFIG_USE_QC_BLOBS is not set +# CONFIG_COVERAGE is not set +# CONFIG_UBSAN is not set +CONFIG_HAVE_ASAN_IN_ROMSTAGE=y +CONFIG_HAVE_ASAN_IN_RAMSTAGE=y +# CONFIG_ASAN is not set +CONFIG_NO_STAGE_CACHE=y +# CONFIG_TSEG_STAGE_CACHE is not set +# CONFIG_UPDATE_IMAGE is not set +# CONFIG_BOOTSPLASH_IMAGE is not set + +# +# Software Bill Of Materials (SBOM) +# +# CONFIG_SBOM is not set +# end of Software Bill Of Materials (SBOM) +# end of General setup + +# +# Mainboard +# + +# +# Important: Run 'make distclean' before switching boards +# +# CONFIG_VENDOR_51NB is not set +# CONFIG_VENDOR_ACER is not set +# CONFIG_VENDOR_AMD is not set +# CONFIG_VENDOR_AOOSTAR is not set +# CONFIG_VENDOR_AOPEN is not set +# CONFIG_VENDOR_APPLE is not set +# CONFIG_VENDOR_ARM is not set +# CONFIG_VENDOR_ASROCK is not set +# CONFIG_VENDOR_ASUS is not set +# CONFIG_VENDOR_BIOSTAR is not set +# CONFIG_VENDOR_BOSTENTECH is not set +# CONFIG_VENDOR_BYTEDANCE is not set +# CONFIG_VENDOR_CAVIUM is not set +# CONFIG_VENDOR_CLEVO is not set +# CONFIG_VENDOR_COMPULAB is not set +# CONFIG_VENDOR_CWWK is not set +# CONFIG_VENDOR_DELL is not set +# CONFIG_VENDOR_EMULATION is not set +# CONFIG_VENDOR_ERYING is not set +# CONFIG_VENDOR_EXAMPLE is not set +# CONFIG_VENDOR_FACEBOOK is not set +# CONFIG_VENDOR_FOXCONN is not set +# CONFIG_VENDOR_FRAMEWORK is not set +# CONFIG_VENDOR_GETAC is not set +# CONFIG_VENDOR_GIGABYTE is not set +# CONFIG_VENDOR_GOOGLE is not set +# CONFIG_VENDOR_HARDKERNEL is not set +# CONFIG_VENDOR_HP is not set +# CONFIG_VENDOR_IBASE is not set +# CONFIG_VENDOR_IBM is not set +# CONFIG_VENDOR_INTEL is not set +# CONFIG_VENDOR_INVENTEC is not set +# CONFIG_VENDOR_KONTRON is not set +# CONFIG_VENDOR_LATTEPANDA is not set +CONFIG_VENDOR_LENOVO=y +# CONFIG_VENDOR_LIBRETREND is not set +# CONFIG_VENDOR_MITAC_COMPUTING is not set +# CONFIG_VENDOR_MSI is not set +# CONFIG_VENDOR_NOVACUSTOM is not set +# CONFIG_VENDOR_OCP is not set +# CONFIG_VENDOR_OPENCELLULAR is not set +# CONFIG_VENDOR_PACKARDBELL is not set +# CONFIG_VENDOR_PCENGINES is not set +# CONFIG_VENDOR_PINE64 is not set +# CONFIG_VENDOR_PORTWELL is not set +# CONFIG_VENDOR_PRODRIVE is not set +# CONFIG_VENDOR_PROTECTLI is not set +# CONFIG_VENDOR_PURISM is not set +# CONFIG_VENDOR_RAPTOR_CS is not set +# CONFIG_VENDOR_RAZER is not set +# CONFIG_VENDOR_RODA is not set +# CONFIG_VENDOR_SAMSUNG is not set +# CONFIG_VENDOR_SAPPHIRE is not set +# CONFIG_VENDOR_SIEMENS is not set +# CONFIG_VENDOR_SIFIVE is not set +# CONFIG_VENDOR_STARLABS is not set +# CONFIG_VENDOR_SUPERMICRO is not set +# CONFIG_VENDOR_SYSTEM76 is not set +# CONFIG_VENDOR_TI is not set +# CONFIG_VENDOR_TOPTON is not set +# CONFIG_VENDOR_UP is not set +# CONFIG_VENDOR_VIA is not set +CONFIG_MAINBOARD_FAMILY="ThinkPad T440p" +CONFIG_MAINBOARD_PART_NUMBER="ThinkPad T440p" +CONFIG_MAINBOARD_VERSION="1.0" +CONFIG_MAINBOARD_DIR="lenovo/haswell" +CONFIG_VGA_BIOS_ID="8086,0416" +CONFIG_DIMM_MAX=4 +CONFIG_DIMM_SPD_SIZE=256 +CONFIG_FMDFILE="" +# CONFIG_NO_POST is not set +CONFIG_MAINBOARD_VENDOR="LENOVO" +CONFIG_CBFS_SIZE=0x400000 +CONFIG_LINEAR_FRAMEBUFFER_MAX_HEIGHT=1600 +CONFIG_LINEAR_FRAMEBUFFER_MAX_WIDTH=2560 +CONFIG_MAX_CPUS=8 +CONFIG_ONBOARD_VGA_IS_PRIMARY=y +CONFIG_POST_DEVICE=y +CONFIG_POST_IO=y +CONFIG_VARIANT_DIR="t440p" +CONFIG_OVERRIDE_DEVICETREE="" +CONFIG_DEVICETREE="variants/$(CONFIG_VARIANT_DIR)/devicetree.cb" +# CONFIG_VBOOT is not set +# CONFIG_VGA_BIOS is not set +CONFIG_PCIEXP_ASPM=y +CONFIG_PCIEXP_L1_SUB_STATE=y +CONFIG_PCIEXP_CLK_PM=y +CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="LENOVO" +CONFIG_ECAM_MMCONF_BASE_ADDRESS=0xf0000000 +CONFIG_ECAM_MMCONF_BUS_NUMBER=64 +CONFIG_MEMLAYOUT_LD_FILE="src/arch/x86/memlayout.ld" +# CONFIG_FATAL_ASSERTS is not set +CONFIG_USBDEBUG_HCD_INDEX=2 +CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/data.vbt" +CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00 +CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME="ThinkPad T440p" +# CONFIG_CONSOLE_POST is not set +CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" +CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" +CONFIG_MAX_SOCKET=1 +CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 +CONFIG_TPM_PIRQ=0x0 +CONFIG_DCACHE_RAM_BASE=0xff7c0000 +CONFIG_DCACHE_RAM_SIZE=0x40000 +CONFIG_C_ENV_BOOTBLOCK_SIZE=0x40000 +CONFIG_DCACHE_BSP_STACK_SIZE=0x20000 +CONFIG_MAX_ACPI_TABLE_SIZE_KB=144 +CONFIG_HAVE_INTEL_FIRMWARE=y +CONFIG_MRC_SETTINGS_CACHE_SIZE=0x10000 +CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_DRIVERS_INTEL_WIFI=y +CONFIG_IFD_BIN_PATH="../../../config/ifd/t440p/ifd" +CONFIG_ME_BIN_PATH="../../../vendorfiles/t440p/me.bin" +CONFIG_GBE_BIN_PATH="../../../config/ifd/t440p/gbe" +CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 +# CONFIG_ENABLE_DDR_2X_REFRESH is not set +CONFIG_PCIEXP_AER=y +CONFIG_CARDBUS_PLUGIN_SUPPORT=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_DEBUG_SMI is not set +CONFIG_HAVE_IFD_BIN=y +CONFIG_BOARD_LENOVO_THINKPAD_T440P=y +# CONFIG_BOARD_LENOVO_THINKPAD_W541 is not set +# CONFIG_BOARD_LENOVO_L520 is not set +# CONFIG_BOARD_LENOVO_M900 is not set +# CONFIG_BOARD_LENOVO_THINKCENTRE_M900_TINY is not set +# CONFIG_BOARD_LENOVO_M920Q is not set +# CONFIG_BOARD_LENOVO_S230U is not set +# CONFIG_BOARD_LENOVO_T480 is not set +# CONFIG_BOARD_LENOVO_T480S is not set +# CONFIG_BOARD_LENOVO_T400 is not set +# CONFIG_BOARD_LENOVO_T500 is not set +# CONFIG_BOARD_LENOVO_R400 is not set +# CONFIG_BOARD_LENOVO_R500 is not set +# CONFIG_BOARD_LENOVO_W500 is not set +# CONFIG_BOARD_LENOVO_T410 is not set +# CONFIG_BOARD_LENOVO_T420 is not set +# CONFIG_BOARD_LENOVO_T420S is not set +# CONFIG_BOARD_LENOVO_THINKPAD_T430 is not set +# CONFIG_BOARD_LENOVO_T430S is not set +# CONFIG_BOARD_LENOVO_T431S is not set +# CONFIG_BOARD_LENOVO_T520 is not set +# CONFIG_BOARD_LENOVO_W520 is not set +# CONFIG_BOARD_LENOVO_T530 is not set +# CONFIG_BOARD_LENOVO_W530 is not set +# CONFIG_BOARD_LENOVO_T60 is not set +# CONFIG_BOARD_LENOVO_Z61T is not set +# CONFIG_BOARD_LENOVO_R60 is not set +# CONFIG_BOARD_LENOVO_THINKCENTRE_A58 is not set +# CONFIG_BOARD_LENOVO_THINKCENTRE_M710S is not set +# CONFIG_BOARD_LENOVO_X131E is not set +# CONFIG_BOARD_LENOVO_X1_CARBON_GEN1 is not set +# CONFIG_BOARD_LENOVO_X200 is not set +# CONFIG_BOARD_LENOVO_X301 is not set +# CONFIG_BOARD_LENOVO_X201 is not set +# CONFIG_BOARD_LENOVO_X220 is not set +# CONFIG_BOARD_LENOVO_X220I is not set +# CONFIG_BOARD_LENOVO_X1 is not set +# CONFIG_BOARD_LENOVO_X230 is not set +# CONFIG_BOARD_LENOVO_X230T is not set +# CONFIG_BOARD_LENOVO_X230S is not set +# CONFIG_BOARD_LENOVO_X230_EDP is not set +# CONFIG_BOARD_LENOVO_X60 is not set +CONFIG_BOARD_LENOVO_HASWELL_COMMON=y +CONFIG_VBOOT_SLOTS_RW_AB=y +CONFIG_PS2K_EISAID="LEN0071" +CONFIG_PS2M_EISAID="LEN0036" +CONFIG_THINKPADEC_HKEY_EISAID="LEN0068" +CONFIG_GFX_GMA_PANEL_1_PORT="eDP" +CONFIG_D3COLD_SUPPORT=y +CONFIG_GFX_GMA_PANEL_1_ON_EDP=y +# CONFIG_DRIVERS_UART_8250IO is not set +CONFIG_PC_CMOS_BASE_PORT_BANK1=0x72 +CONFIG_HEAP_SIZE=0x100000 +CONFIG_EC_GPE_SCI=0x50 +CONFIG_EC_STARLABS_BATTERY_MODEL="Unknown" +CONFIG_EC_STARLABS_BATTERY_TYPE="LION" +CONFIG_EC_STARLABS_BATTERY_OEM="Unknown" +# CONFIG_TPM_MEASURED_BOOT is not set +CONFIG_BOARD_ROMSIZE_KB_12288=y +# CONFIG_COREBOOT_ROMSIZE_KB_256 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_512 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_1024 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_2048 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_4096 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_5120 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_6144 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_8192 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_10240 is not set +CONFIG_COREBOOT_ROMSIZE_KB_12288=y +# CONFIG_COREBOOT_ROMSIZE_KB_16384 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_24576 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_32768 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_65536 is not set +CONFIG_COREBOOT_ROMSIZE_KB=12288 +CONFIG_ROM_SIZE=0x00c00000 +CONFIG_HAVE_POWER_STATE_AFTER_FAILURE=y +CONFIG_HAVE_POWER_STATE_PREVIOUS_AFTER_FAILURE=y +CONFIG_POWER_STATE_OFF_AFTER_FAILURE=y +# CONFIG_POWER_STATE_ON_AFTER_FAILURE is not set +# CONFIG_POWER_STATE_PREVIOUS_AFTER_FAILURE is not set +CONFIG_MAINBOARD_POWER_FAILURE_STATE=0 +# end of Mainboard + +CONFIG_SYSTEM_TYPE_LAPTOP=y + +# +# Chipset +# + +# +# SoC +# +CONFIG_CHIPSET_DEVICETREE="" +CONFIG_CBFS_MCACHE_SIZE=0x4000 +CONFIG_ROMSTAGE_ADDR=0x2000000 +CONFIG_VERSTAGE_ADDR=0x2000000 +CONFIG_SMM_TSEG_SIZE=0x800000 +CONFIG_SMM_RESERVED_SIZE=0x100000 +CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=512 +CONFIG_SERIRQ_CONTINUOUS_MODE=y +CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 +CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 +CONFIG_EHCI_BAR=0xe8000000 +CONFIG_ACPI_CPU_STRING="CP%02X" +CONFIG_STACK_SIZE=0x2000 +CONFIG_IED_REGION_SIZE=0x400000 +CONFIG_INTEL_GMA_BCLV_OFFSET=0x48254 +CONFIG_INTEL_GMA_BCLV_WIDTH=16 +CONFIG_INTEL_GMA_BCLM_OFFSET=0xc8256 +CONFIG_INTEL_GMA_BCLM_WIDTH=16 +CONFIG_BOOTBLOCK_IN_CBFS=y +CONFIG_DCACHE_RAM_MRC_VAR_SIZE=0x0 +CONFIG_HPET_MIN_TICKS=0x80 +CONFIG_FIXED_MCHBAR_MMIO_BASE=0xfed10000 +CONFIG_FIXED_DMIBAR_MMIO_BASE=0xfed18000 +CONFIG_FIXED_EPBAR_MMIO_BASE=0xfed19000 +CONFIG_PCIEXP_COMMON_CLOCK=y +CONFIG_DISABLE_ME_PCI=y +CONFIG_CPU_INTEL_NUM_FIT_ENTRIES=6 +CONFIG_SOC_PHYSICAL_ADDRESS_WIDTH=0 +# CONFIG_ALWAYS_ALLOW_ABOVE_4G_ALLOCATION is not set +CONFIG_FIXED_SMBUS_IO_BASE=0x400 +CONFIG_CBFS_CACHE_ALIGN=8 + +# +# CPU +# +CONFIG_CPU_INTEL_HASWELL=y +CONFIG_CPU_INTEL_FIRMWARE_INTERFACE_TABLE=y +CONFIG_CPU_INTEL_COMMON=y +CONFIG_ENABLE_VMX=y +CONFIG_SET_IA32_FC_LOCK_BIT=y +CONFIG_SET_MSR_AESNI_LOCK_BIT=y +CONFIG_CPU_INTEL_COMMON_TIMEBASE=y +CONFIG_CPU_INTEL_COMMON_VOLTAGE=y +CONFIG_CPU_INTEL_COMMON_SMM=y +CONFIG_PARALLEL_MP=y +CONFIG_XAPIC_ONLY=y +# CONFIG_X2APIC_ONLY is not set +# CONFIG_X2APIC_RUNTIME is not set +# CONFIG_X2APIC_LATE_WORKAROUND is not set +CONFIG_UDELAY_TSC=y +CONFIG_TSC_MONOTONIC_TIMER=y +CONFIG_TSC_SYNC_MFENCE=y +CONFIG_HAVE_SMI_HANDLER=y +CONFIG_SMM_TSEG=y +CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 +CONFIG_AP_STACK_SIZE=0x800 +CONFIG_SMP=y +CONFIG_SSE=y +CONFIG_SSE2=y +CONFIG_SUPPORT_CPU_UCODE_IN_CBFS=y +CONFIG_USE_CPU_MICROCODE_CBFS_BINS=y +CONFIG_CPU_MICROCODE_CBFS_DEFAULT_BINS=y +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS is not set +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER is not set +# CONFIG_CPU_MICROCODE_CBFS_NONE is not set + +# +# Northbridge +# +CONFIG_NORTHBRIDGE_INTEL_HASWELL=y +CONFIG_USE_NATIVE_RAMINIT=y + +# +# Southbridge +# +# CONFIG_PCIEXP_HOTPLUG is not set +CONFIG_INTEL_DESCRIPTOR_MODE_REQUIRED=y +CONFIG_SOUTHBRIDGE_INTEL_LYNXPOINT=y +CONFIG_FINALIZE_USB_ROUTE_XHCI=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RESET=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RTC=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMCLIB=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMBASE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_GPIO=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_EARLY_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI_ICH9=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PIRQ_ACPI_GEN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RCBA_PIRQ=y +CONFIG_HAVE_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_FINALIZE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_USB_DEBUG=y +CONFIG_INTEL_DESCRIPTOR_MODE_CAPABLE=y +# CONFIG_VALIDATE_INTEL_DESCRIPTOR is not set +CONFIG_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_TCO_SPACE_NOT_YET_SPLIT=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_WATCHDOG=y +CONFIG_FIXED_RCBA_MMIO_BASE=0xfed1c000 +CONFIG_RCBA_LENGTH=0x4000 + +# +# Super I/O +# + +# +# Embedded Controllers +# +CONFIG_EC_ACPI=y +CONFIG_EC_LENOVO_H8=y +CONFIG_H8_BEEP_ON_DEATH=y +CONFIG_H8_FLASH_LEDS_ON_DEATH=y +# CONFIG_H8_SUPPORT_BT_ON_WIFI is not set +# CONFIG_H8_FN_CTRL_SWAP is not set +CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_PRIMARY_FN_KEYS=y +CONFIG_H8_HAS_LEDLOGO=y +CONFIG_EC_LENOVO_PMH7=y + +# +# Intel Firmware +# +CONFIG_HAVE_ME_BIN=y +# CONFIG_STITCH_ME_BIN is not set +# CONFIG_CHECK_ME is not set +# CONFIG_ME_REGION_ALLOW_CPU_READ_ACCESS is not set +# CONFIG_USE_ME_CLEANER is not set +CONFIG_MAINBOARD_USES_IFD_GBE_REGION=y +CONFIG_HAVE_GBE_BIN=y +# CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION is not set +# CONFIG_LOCK_MANAGEMENT_ENGINE is not set +CONFIG_UNLOCK_FLASH_REGIONS=y +CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 +CONFIG_ARCH_X86=y +CONFIG_ARCH_BOOTBLOCK_X86_32=y +CONFIG_ARCH_VERSTAGE_X86_32=y +CONFIG_ARCH_ROMSTAGE_X86_32=y +CONFIG_ARCH_POSTCAR_X86_32=y +CONFIG_ARCH_RAMSTAGE_X86_32=y +CONFIG_ARCH_ALL_STAGES_X86_32=y +CONFIG_RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT=y +CONFIG_X86_TOP4G_BOOTMEDIA_MAP=y +CONFIG_POSTRAM_CBFS_CACHE_IN_BSS=y +CONFIG_RAMSTAGE_CBFS_CACHE_SIZE=0x4000 +CONFIG_PC80_SYSTEM=y +CONFIG_HAVE_CMOS_DEFAULT=y +CONFIG_POSTCAR_STAGE=y +CONFIG_BOOTBLOCK_SIMPLE=y +# CONFIG_BOOTBLOCK_NORMAL is not set +CONFIG_COLLECT_TIMESTAMPS_TSC=y +CONFIG_HAVE_CF9_RESET=y +CONFIG_DEBUG_HW_BREAKPOINTS=y +CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS=y +# CONFIG_DUMP_SMBIOS_TYPE17 is not set +CONFIG_X86_BOOTBLOCK_EXTRA_PROGRAM_SZ=0 +CONFIG_DEFAULT_EBDA_LOWMEM=0x100000 +CONFIG_DEFAULT_EBDA_SEGMENT=0xF600 +CONFIG_DEFAULT_EBDA_SIZE=0x400 +# end of Chipset + +# +# Devices +# +CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y +CONFIG_HAVE_LINEAR_FRAMEBUFFER=y +CONFIG_MAINBOARD_HAS_LIBGFXINIT=y +CONFIG_MAINBOARD_USE_LIBGFXINIT=y +# CONFIG_VGA_ROM_RUN is not set +# CONFIG_NO_GFX_INIT is not set +CONFIG_NO_EARLY_GFX_INIT=y + +# +# Display +# +# CONFIG_VGA_TEXT_FRAMEBUFFER is not set +CONFIG_GENERIC_LINEAR_FRAMEBUFFER=y +CONFIG_LINEAR_FRAMEBUFFER=y +# CONFIG_BOOTSPLASH is not set +CONFIG_DEFAULT_SCREEN_ROTATION_INT=0 +# end of Display + +CONFIG_PCI=y +CONFIG_ECAM_MMCONF_SUPPORT=y +CONFIG_PCIX_PLUGIN_SUPPORT=y +CONFIG_AZALIA_HDA_CODEC_SUPPORT=y +CONFIG_PCIEXP_PLUGIN_SUPPORT=y +CONFIG_ECAM_MMCONF_LENGTH=0x04000000 +CONFIG_PCI_ALLOW_BUS_MASTER=y +CONFIG_PCI_SET_BUS_MASTER_PCI_BRIDGES=y +CONFIG_PCI_ALLOW_BUS_MASTER_ANY_DEVICE=y +# CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS is not set +# CONFIG_PCIEXP_LANE_ERR_STAT_CLEAR is not set +# CONFIG_EARLY_PCI_BRIDGE is not set +CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 +CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 +CONFIG_INTEL_GMA_HAVE_VBT=y +CONFIG_INTEL_GMA_ADD_VBT=y +# CONFIG_SOFTWARE_I2C is not set +CONFIG_I2C_TRANSFER_TIMEOUT_US=500000 +CONFIG_RESOURCE_ALLOCATION_TOP_DOWN=y +CONFIG_USE_DDR3=y +# end of Devices + +# +# Generic Drivers +# +CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set +# CONFIG_ELOG is not set +CONFIG_CACHE_MRC_SETTINGS=y +# CONFIG_MRC_SETTINGS_PROTECT is not set +# CONFIG_DRIVERS_OPTION_CFR is not set +# CONFIG_SMMSTORE is not set +CONFIG_SPI_FLASH=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY=y +# CONFIG_SPI_FLASH_NO_FAST_READ is not set +CONFIG_SPI_FLASH_ADESTO=y +CONFIG_SPI_FLASH_AMIC=y +CONFIG_SPI_FLASH_ATMEL=y +CONFIG_SPI_FLASH_EON=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_SST=y +CONFIG_SPI_FLASH_ISSI=y +CONFIG_HAVE_EM100PRO_SPI_CONSOLE_SUPPORT=y +CONFIG_TPM_INIT_RAMSTAGE=y +# CONFIG_TPM_PPI is not set +CONFIG_NO_UART_ON_SUPERIO=y +# CONFIG_DRIVERS_UART_OXPCIE is not set +CONFIG_HAVE_USBDEBUG=y +CONFIG_HAVE_USBDEBUG_OPTIONS=y +# CONFIG_USBDEBUG is not set +# CONFIG_VPD is not set +# CONFIG_DRIVERS_EMULATION_QEMU_FW_CFG is not set +# CONFIG_DRIVERS_GENERIC_CBFS_SERIAL is not set +# CONFIG_DRIVERS_GENERIC_CBFS_UUID is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9750 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9755 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9763E is not set +# CONFIG_DRIVERS_I2C_MAX98396 is not set +CONFIG_INTEL_DDI=y +CONFIG_INTEL_INT15=y +CONFIG_INTEL_GMA_ACPI=y +CONFIG_VBT_CBFS_COMPRESSION_LZMA=y +# CONFIG_VBT_CBFS_COMPRESSION_LZ4 is not set +# CONFIG_VBT_CBFS_COMPRESSION_NONE is not set +CONFIG_VBT_CBFS_COMPRESSION_ALGORITHM="lzma" +CONFIG_GFX_GMA=y +CONFIG_GFX_GMA_DYN_CPU=y +CONFIG_GFX_GMA_GENERATION="Haswell" +CONFIG_GFX_GMA_PCH="Lynx_Point" +CONFIG_GFX_GMA_PANEL_2_PORT="Disabled" +CONFIG_GFX_GMA_ANALOG_I2C_PORT="PCH_DAC" +# CONFIG_DRIVERS_NXP_UWB_SR1XX is not set +# CONFIG_DRIVERS_PS2_KEYBOARD is not set +CONFIG_DRIVERS_MC146818=y +# CONFIG_USE_PC_CMOS_ALTCENTURY is not set +CONFIG_PC_CMOS_BASE_PORT_BANK0=0x70 +CONFIG_MEMORY_MAPPED_TPM=y +CONFIG_TPM_TIS_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_SIL_3114 is not set +CONFIG_DRIVERS_WIFI_GENERIC=y +CONFIG_DRIVERS_MTK_WIFI=y +# end of Generic Drivers + +# +# Security +# + +# +# CBFS verification +# +# CONFIG_CBFS_VERIFICATION is not set +# end of CBFS verification + +# +# Verified Boot (vboot) +# +# end of Verified Boot (vboot) + +# +# Trusted Platform Module +# +CONFIG_TPM1=y +# CONFIG_TPM2 is not set +CONFIG_TPM=y +CONFIG_MAINBOARD_HAS_TPM1=y +# CONFIG_TPM_DEACTIVATE is not set +# CONFIG_DEBUG_TPM is not set +CONFIG_PCR_BOOT_MODE=1 +CONFIG_PCR_HWID=1 +CONFIG_PCR_SRTM=2 +CONFIG_PCR_FW_VER=10 +CONFIG_PCR_RUNTIME_DATA=3 +# end of Trusted Platform Module + +# +# Memory initialization +# +CONFIG_PLATFORM_HAS_DRAM_CLEAR=y +CONFIG_SECURITY_CLEAR_DRAM_ON_REGULAR_BOOT=y +# end of Memory initialization + +# CONFIG_INTEL_TXT is not set +# CONFIG_STM is not set +# CONFIG_INTEL_CBNT_SUPPORT is not set +CONFIG_BOOTMEDIA_LOCK_NONE=y +# CONFIG_BOOTMEDIA_LOCK_CONTROLLER is not set +# CONFIG_BOOTMEDIA_LOCK_CHIP is not set +# CONFIG_BOOTMEDIA_SMM_BWP is not set +# end of Security + +CONFIG_ACPI_HAVE_PCAT_8259=y +CONFIG_ACPI_INTEL_HARDWARE_SLEEP_VALUES=y +CONFIG_ACPI_SOC_NVS=y +CONFIG_ACPI_NO_CUSTOM_MADT=y +CONFIG_ACPI_COMMON_MADT_LAPIC=y +CONFIG_ACPI_COMMON_MADT_IOAPIC=y +CONFIG_HAVE_ACPI_TABLES=y +CONFIG_BOOT_DEVICE_SPI_FLASH=y +CONFIG_BOOT_DEVICE_MEMORY_MAPPED=y +CONFIG_BOOT_DEVICE_SUPPORTS_WRITES=y +CONFIG_RTC=y + +# +# Console +# +CONFIG_BOOTBLOCK_CONSOLE=y +CONFIG_POSTCAR_CONSOLE=y +CONFIG_SQUELCH_EARLY_SMP=y +# CONFIG_SPKMODEM is not set +# CONFIG_CONSOLE_NE2K is not set +CONFIG_CONSOLE_CBMEM=y +# CONFIG_CONSOLE_CBMEM_DUMP_TO_UART is not set +# CONFIG_CONSOLE_SPI_FLASH is not set +# CONFIG_CONSOLE_I2C_SMBUS is not set +# CONFIG_EM100PRO_SPI_CONSOLE is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL_7=y +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_6 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_5 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_4 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_2 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_1 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL=7 +CONFIG_CONSOLE_USE_LOGLEVEL_PREFIX=y +CONFIG_CONSOLE_USE_ANSI_ESCAPES=y +# CONFIG_CMOS_POST is not set +CONFIG_POST_DEVICE_NONE=y +# CONFIG_POST_DEVICE_LPC is not set +# CONFIG_POST_DEVICE_PCI_PCIE is not set +CONFIG_POST_IO_PORT=0x80 +CONFIG_HWBASE_DEBUG_CB=y +# end of Console + +CONFIG_HAVE_ACPI_RESUME=y +CONFIG_RESUME_PATH_SAME_AS_BOOT=y +CONFIG_HAVE_MONOTONIC_TIMER=y +CONFIG_HAVE_OPTION_TABLE=y +CONFIG_IOAPIC=y +CONFIG_USE_WATCHDOG_ON_BOOT=y + +# +# System tables +# +CONFIG_GENERATE_SMBIOS_TABLES=y +CONFIG_BIOS_VENDOR="coreboot" +CONFIG_MAINBOARD_SERIAL_NUMBER="123456789" +# end of System tables + +# +# Payload +# +CONFIG_PAYLOAD_NONE=y +# end of Payload + +# +# Debugging +# + +# +# CPU Debug Settings +# +# CONFIG_DISPLAY_MTRRS is not set + +# +# Vendorcode Debug Settings +# + +# +# BLOB Debug Settings +# + +# +# 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 +# CONFIG_DEBUG_CONSOLE_INIT is not set +# CONFIG_DEBUG_SPI_FLASH is not set +# CONFIG_DEBUG_BOOT_STATE is not set +# CONFIG_DEBUG_ADA_CODE is not set +CONFIG_HAVE_EM100_SUPPORT=y +# CONFIG_EM100 is not set +# CONFIG_DEBUG_ACPICA_COMPATIBLE is not set +# end of Debugging + +CONFIG_RAMSTAGE_ADA=y +CONFIG_RAMSTAGE_LIBHWBASE=y +CONFIG_HWBASE_DYNAMIC_MMIO=y +CONFIG_HWBASE_DEFAULT_MMCONF=0xf0000000 +CONFIG_HWBASE_DIRECT_PCIDEV=y +CONFIG_DECOMPRESS_OFAST=y + +# +# Boot Logo Configuration +# +# CONFIG_BMP_LOGO is not set +# end of Boot Logo Configuration + +CONFIG_WARNINGS_ARE_ERRORS=y +CONFIG_MAX_REBOOT_CNT=3 +CONFIG_RELOCATABLE_MODULES=y +CONFIG_HAVE_BOOTBLOCK=y +CONFIG_HAVE_ROMSTAGE=y +CONFIG_HAVE_RAMSTAGE=y diff --git a/config/coreboot/t440plibremrc_4mcbfs_12mb/config/libgfxinit_txtmode b/config/coreboot/t440plibremrc_4mcbfs_12mb/config/libgfxinit_txtmode new file mode 100644 index 00000000..6bb14dc2 --- /dev/null +++ b/config/coreboot/t440plibremrc_4mcbfs_12mb/config/libgfxinit_txtmode @@ -0,0 +1,702 @@ +# +# Automatically generated file; DO NOT EDIT. +# coreboot configuration +# + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_CBFS_PREFIX="fallback" +CONFIG_COMPILER_GCC=y +# CONFIG_COMPILER_LLVM_CLANG is not set +# CONFIG_ANY_TOOLCHAIN is not set +# CONFIG_CCACHE is not set +# CONFIG_LTO is not set +# CONFIG_IWYU is not set +# CONFIG_FMD_GENPARSER is not set +# CONFIG_UTIL_GENPARSER is not set +# CONFIG_OPTION_BACKEND_NONE is not set +CONFIG_USE_OPTION_TABLE=y +# CONFIG_USE_CBFS_FILE_OPTION_BACKEND is not set +CONFIG_STATIC_OPTION_TABLE=y +CONFIG_COMPRESS_RAMSTAGE_LZMA=y +# CONFIG_COMPRESS_RAMSTAGE_LZ4 is not set +CONFIG_SEPARATE_ROMSTAGE=y +CONFIG_INCLUDE_CONFIG_FILE=y +CONFIG_COLLECT_TIMESTAMPS=y +# CONFIG_TIMESTAMPS_ON_CONSOLE is not set +CONFIG_USE_BLOBS=y +# CONFIG_USE_AMD_BLOBS is not set +# CONFIG_USE_QC_BLOBS is not set +# CONFIG_COVERAGE is not set +# CONFIG_UBSAN is not set +CONFIG_HAVE_ASAN_IN_ROMSTAGE=y +CONFIG_HAVE_ASAN_IN_RAMSTAGE=y +# CONFIG_ASAN is not set +CONFIG_NO_STAGE_CACHE=y +# CONFIG_TSEG_STAGE_CACHE is not set +# CONFIG_UPDATE_IMAGE is not set +# CONFIG_BOOTSPLASH_IMAGE is not set + +# +# Software Bill Of Materials (SBOM) +# +# CONFIG_SBOM is not set +# end of Software Bill Of Materials (SBOM) +# end of General setup + +# +# Mainboard +# + +# +# Important: Run 'make distclean' before switching boards +# +# CONFIG_VENDOR_51NB is not set +# CONFIG_VENDOR_ACER is not set +# CONFIG_VENDOR_AMD is not set +# CONFIG_VENDOR_AOOSTAR is not set +# CONFIG_VENDOR_AOPEN is not set +# CONFIG_VENDOR_APPLE is not set +# CONFIG_VENDOR_ARM is not set +# CONFIG_VENDOR_ASROCK is not set +# CONFIG_VENDOR_ASUS is not set +# CONFIG_VENDOR_BIOSTAR is not set +# CONFIG_VENDOR_BOSTENTECH is not set +# CONFIG_VENDOR_BYTEDANCE is not set +# CONFIG_VENDOR_CAVIUM is not set +# CONFIG_VENDOR_CLEVO is not set +# CONFIG_VENDOR_COMPULAB is not set +# CONFIG_VENDOR_CWWK is not set +# CONFIG_VENDOR_DELL is not set +# CONFIG_VENDOR_EMULATION is not set +# CONFIG_VENDOR_ERYING is not set +# CONFIG_VENDOR_EXAMPLE is not set +# CONFIG_VENDOR_FACEBOOK is not set +# CONFIG_VENDOR_FOXCONN is not set +# CONFIG_VENDOR_FRAMEWORK is not set +# CONFIG_VENDOR_GETAC is not set +# CONFIG_VENDOR_GIGABYTE is not set +# CONFIG_VENDOR_GOOGLE is not set +# CONFIG_VENDOR_HARDKERNEL is not set +# CONFIG_VENDOR_HP is not set +# CONFIG_VENDOR_IBASE is not set +# CONFIG_VENDOR_IBM is not set +# CONFIG_VENDOR_INTEL is not set +# CONFIG_VENDOR_INVENTEC is not set +# CONFIG_VENDOR_KONTRON is not set +# CONFIG_VENDOR_LATTEPANDA is not set +CONFIG_VENDOR_LENOVO=y +# CONFIG_VENDOR_LIBRETREND is not set +# CONFIG_VENDOR_MITAC_COMPUTING is not set +# CONFIG_VENDOR_MSI is not set +# CONFIG_VENDOR_NOVACUSTOM is not set +# CONFIG_VENDOR_OCP is not set +# CONFIG_VENDOR_OPENCELLULAR is not set +# CONFIG_VENDOR_PACKARDBELL is not set +# CONFIG_VENDOR_PCENGINES is not set +# CONFIG_VENDOR_PINE64 is not set +# CONFIG_VENDOR_PORTWELL is not set +# CONFIG_VENDOR_PRODRIVE is not set +# CONFIG_VENDOR_PROTECTLI is not set +# CONFIG_VENDOR_PURISM is not set +# CONFIG_VENDOR_RAPTOR_CS is not set +# CONFIG_VENDOR_RAZER is not set +# CONFIG_VENDOR_RODA is not set +# CONFIG_VENDOR_SAMSUNG is not set +# CONFIG_VENDOR_SAPPHIRE is not set +# CONFIG_VENDOR_SIEMENS is not set +# CONFIG_VENDOR_SIFIVE is not set +# CONFIG_VENDOR_STARLABS is not set +# CONFIG_VENDOR_SUPERMICRO is not set +# CONFIG_VENDOR_SYSTEM76 is not set +# CONFIG_VENDOR_TI is not set +# CONFIG_VENDOR_TOPTON is not set +# CONFIG_VENDOR_UP is not set +# CONFIG_VENDOR_VIA is not set +CONFIG_MAINBOARD_FAMILY="ThinkPad T440p" +CONFIG_MAINBOARD_PART_NUMBER="ThinkPad T440p" +CONFIG_MAINBOARD_VERSION="1.0" +CONFIG_MAINBOARD_DIR="lenovo/haswell" +CONFIG_VGA_BIOS_ID="8086,0416" +CONFIG_DIMM_MAX=4 +CONFIG_DIMM_SPD_SIZE=256 +CONFIG_FMDFILE="" +# CONFIG_NO_POST is not set +CONFIG_MAINBOARD_VENDOR="LENOVO" +CONFIG_CBFS_SIZE=0x400000 +CONFIG_MAX_CPUS=8 +CONFIG_ONBOARD_VGA_IS_PRIMARY=y +CONFIG_POST_DEVICE=y +CONFIG_POST_IO=y +CONFIG_VARIANT_DIR="t440p" +CONFIG_OVERRIDE_DEVICETREE="" +CONFIG_DEVICETREE="variants/$(CONFIG_VARIANT_DIR)/devicetree.cb" +# CONFIG_VBOOT is not set +# CONFIG_VGA_BIOS is not set +CONFIG_PCIEXP_ASPM=y +CONFIG_PCIEXP_L1_SUB_STATE=y +CONFIG_PCIEXP_CLK_PM=y +CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="LENOVO" +CONFIG_ECAM_MMCONF_BASE_ADDRESS=0xf0000000 +CONFIG_ECAM_MMCONF_BUS_NUMBER=64 +CONFIG_MEMLAYOUT_LD_FILE="src/arch/x86/memlayout.ld" +# CONFIG_FATAL_ASSERTS is not set +CONFIG_USBDEBUG_HCD_INDEX=2 +CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/data.vbt" +CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00 +CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME="ThinkPad T440p" +# CONFIG_CONSOLE_POST is not set +CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" +CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout" +CONFIG_MAX_SOCKET=1 +CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 +CONFIG_TPM_PIRQ=0x0 +CONFIG_DCACHE_RAM_BASE=0xff7c0000 +CONFIG_DCACHE_RAM_SIZE=0x40000 +CONFIG_C_ENV_BOOTBLOCK_SIZE=0x40000 +CONFIG_DCACHE_BSP_STACK_SIZE=0x20000 +CONFIG_MAX_ACPI_TABLE_SIZE_KB=144 +CONFIG_HAVE_INTEL_FIRMWARE=y +CONFIG_MRC_SETTINGS_CACHE_SIZE=0x10000 +CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_DRIVERS_INTEL_WIFI=y +CONFIG_IFD_BIN_PATH="../../../config/ifd/t440p/ifd" +CONFIG_ME_BIN_PATH="../../../vendorfiles/t440p/me.bin" +CONFIG_GBE_BIN_PATH="../../../config/ifd/t440p/gbe" +CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 +# CONFIG_ENABLE_DDR_2X_REFRESH is not set +CONFIG_PCIEXP_AER=y +CONFIG_CARDBUS_PLUGIN_SUPPORT=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_DEBUG_SMI is not set +CONFIG_HAVE_IFD_BIN=y +CONFIG_BOARD_LENOVO_THINKPAD_T440P=y +# CONFIG_BOARD_LENOVO_THINKPAD_W541 is not set +# CONFIG_BOARD_LENOVO_L520 is not set +# CONFIG_BOARD_LENOVO_M900 is not set +# CONFIG_BOARD_LENOVO_THINKCENTRE_M900_TINY is not set +# CONFIG_BOARD_LENOVO_M920Q is not set +# CONFIG_BOARD_LENOVO_S230U is not set +# CONFIG_BOARD_LENOVO_T480 is not set +# CONFIG_BOARD_LENOVO_T480S is not set +# CONFIG_BOARD_LENOVO_T400 is not set +# CONFIG_BOARD_LENOVO_T500 is not set +# CONFIG_BOARD_LENOVO_R400 is not set +# CONFIG_BOARD_LENOVO_R500 is not set +# CONFIG_BOARD_LENOVO_W500 is not set +# CONFIG_BOARD_LENOVO_T410 is not set +# CONFIG_BOARD_LENOVO_T420 is not set +# CONFIG_BOARD_LENOVO_T420S is not set +# CONFIG_BOARD_LENOVO_THINKPAD_T430 is not set +# CONFIG_BOARD_LENOVO_T430S is not set +# CONFIG_BOARD_LENOVO_T431S is not set +# CONFIG_BOARD_LENOVO_T520 is not set +# CONFIG_BOARD_LENOVO_W520 is not set +# CONFIG_BOARD_LENOVO_T530 is not set +# CONFIG_BOARD_LENOVO_W530 is not set +# CONFIG_BOARD_LENOVO_T60 is not set +# CONFIG_BOARD_LENOVO_Z61T is not set +# CONFIG_BOARD_LENOVO_R60 is not set +# CONFIG_BOARD_LENOVO_THINKCENTRE_A58 is not set +# CONFIG_BOARD_LENOVO_THINKCENTRE_M710S is not set +# CONFIG_BOARD_LENOVO_X131E is not set +# CONFIG_BOARD_LENOVO_X1_CARBON_GEN1 is not set +# CONFIG_BOARD_LENOVO_X200 is not set +# CONFIG_BOARD_LENOVO_X301 is not set +# CONFIG_BOARD_LENOVO_X201 is not set +# CONFIG_BOARD_LENOVO_X220 is not set +# CONFIG_BOARD_LENOVO_X220I is not set +# CONFIG_BOARD_LENOVO_X1 is not set +# CONFIG_BOARD_LENOVO_X230 is not set +# CONFIG_BOARD_LENOVO_X230T is not set +# CONFIG_BOARD_LENOVO_X230S is not set +# CONFIG_BOARD_LENOVO_X230_EDP is not set +# CONFIG_BOARD_LENOVO_X60 is not set +CONFIG_BOARD_LENOVO_HASWELL_COMMON=y +CONFIG_VBOOT_SLOTS_RW_AB=y +CONFIG_PS2K_EISAID="LEN0071" +CONFIG_PS2M_EISAID="LEN0036" +CONFIG_THINKPADEC_HKEY_EISAID="LEN0068" +CONFIG_GFX_GMA_PANEL_1_PORT="eDP" +CONFIG_D3COLD_SUPPORT=y +CONFIG_GFX_GMA_PANEL_1_ON_EDP=y +# CONFIG_DRIVERS_UART_8250IO is not set +CONFIG_PC_CMOS_BASE_PORT_BANK1=0x72 +CONFIG_HEAP_SIZE=0x100000 +CONFIG_EC_GPE_SCI=0x50 +CONFIG_EC_STARLABS_BATTERY_MODEL="Unknown" +CONFIG_EC_STARLABS_BATTERY_TYPE="LION" +CONFIG_EC_STARLABS_BATTERY_OEM="Unknown" +# CONFIG_TPM_MEASURED_BOOT is not set +CONFIG_BOARD_ROMSIZE_KB_12288=y +# CONFIG_COREBOOT_ROMSIZE_KB_256 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_512 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_1024 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_2048 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_4096 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_5120 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_6144 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_8192 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_10240 is not set +CONFIG_COREBOOT_ROMSIZE_KB_12288=y +# CONFIG_COREBOOT_ROMSIZE_KB_16384 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_24576 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_32768 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_65536 is not set +CONFIG_COREBOOT_ROMSIZE_KB=12288 +CONFIG_ROM_SIZE=0x00c00000 +CONFIG_HAVE_POWER_STATE_AFTER_FAILURE=y +CONFIG_HAVE_POWER_STATE_PREVIOUS_AFTER_FAILURE=y +CONFIG_POWER_STATE_OFF_AFTER_FAILURE=y +# CONFIG_POWER_STATE_ON_AFTER_FAILURE is not set +# CONFIG_POWER_STATE_PREVIOUS_AFTER_FAILURE is not set +CONFIG_MAINBOARD_POWER_FAILURE_STATE=0 +# end of Mainboard + +CONFIG_SYSTEM_TYPE_LAPTOP=y + +# +# Chipset +# + +# +# SoC +# +CONFIG_CHIPSET_DEVICETREE="" +CONFIG_CBFS_MCACHE_SIZE=0x4000 +CONFIG_ROMSTAGE_ADDR=0x2000000 +CONFIG_VERSTAGE_ADDR=0x2000000 +CONFIG_SMM_TSEG_SIZE=0x800000 +CONFIG_SMM_RESERVED_SIZE=0x100000 +CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=512 +CONFIG_SERIRQ_CONTINUOUS_MODE=y +CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 +CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 +CONFIG_EHCI_BAR=0xe8000000 +CONFIG_ACPI_CPU_STRING="CP%02X" +CONFIG_STACK_SIZE=0x2000 +CONFIG_IED_REGION_SIZE=0x400000 +CONFIG_INTEL_GMA_BCLV_OFFSET=0x48254 +CONFIG_INTEL_GMA_BCLV_WIDTH=16 +CONFIG_INTEL_GMA_BCLM_OFFSET=0xc8256 +CONFIG_INTEL_GMA_BCLM_WIDTH=16 +CONFIG_BOOTBLOCK_IN_CBFS=y +CONFIG_DCACHE_RAM_MRC_VAR_SIZE=0x0 +CONFIG_HPET_MIN_TICKS=0x80 +CONFIG_FIXED_MCHBAR_MMIO_BASE=0xfed10000 +CONFIG_FIXED_DMIBAR_MMIO_BASE=0xfed18000 +CONFIG_FIXED_EPBAR_MMIO_BASE=0xfed19000 +CONFIG_PCIEXP_COMMON_CLOCK=y +CONFIG_DISABLE_ME_PCI=y +CONFIG_CPU_INTEL_NUM_FIT_ENTRIES=6 +CONFIG_SOC_PHYSICAL_ADDRESS_WIDTH=0 +# CONFIG_ALWAYS_ALLOW_ABOVE_4G_ALLOCATION is not set +CONFIG_FIXED_SMBUS_IO_BASE=0x400 +CONFIG_CBFS_CACHE_ALIGN=8 + +# +# CPU +# +CONFIG_CPU_INTEL_HASWELL=y +CONFIG_CPU_INTEL_FIRMWARE_INTERFACE_TABLE=y +CONFIG_CPU_INTEL_COMMON=y +CONFIG_ENABLE_VMX=y +CONFIG_SET_IA32_FC_LOCK_BIT=y +CONFIG_SET_MSR_AESNI_LOCK_BIT=y +CONFIG_CPU_INTEL_COMMON_TIMEBASE=y +CONFIG_CPU_INTEL_COMMON_VOLTAGE=y +CONFIG_CPU_INTEL_COMMON_SMM=y +CONFIG_PARALLEL_MP=y +CONFIG_XAPIC_ONLY=y +# CONFIG_X2APIC_ONLY is not set +# CONFIG_X2APIC_RUNTIME is not set +# CONFIG_X2APIC_LATE_WORKAROUND is not set +CONFIG_UDELAY_TSC=y +CONFIG_TSC_MONOTONIC_TIMER=y +CONFIG_TSC_SYNC_MFENCE=y +CONFIG_HAVE_SMI_HANDLER=y +CONFIG_SMM_TSEG=y +CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 +CONFIG_AP_STACK_SIZE=0x800 +CONFIG_SMP=y +CONFIG_SSE=y +CONFIG_SSE2=y +CONFIG_SUPPORT_CPU_UCODE_IN_CBFS=y +CONFIG_USE_CPU_MICROCODE_CBFS_BINS=y +CONFIG_CPU_MICROCODE_CBFS_DEFAULT_BINS=y +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS is not set +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER is not set +# CONFIG_CPU_MICROCODE_CBFS_NONE is not set + +# +# Northbridge +# +CONFIG_NORTHBRIDGE_INTEL_HASWELL=y +CONFIG_USE_NATIVE_RAMINIT=y + +# +# Southbridge +# +# CONFIG_PCIEXP_HOTPLUG is not set +CONFIG_INTEL_DESCRIPTOR_MODE_REQUIRED=y +CONFIG_SOUTHBRIDGE_INTEL_LYNXPOINT=y +CONFIG_FINALIZE_USB_ROUTE_XHCI=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RESET=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RTC=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMCLIB=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMBASE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_GPIO=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_EARLY_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI_ICH9=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PIRQ_ACPI_GEN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_RCBA_PIRQ=y +CONFIG_HAVE_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_FINALIZE=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_USB_DEBUG=y +CONFIG_INTEL_DESCRIPTOR_MODE_CAPABLE=y +# CONFIG_VALIDATE_INTEL_DESCRIPTOR is not set +CONFIG_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_TCO_SPACE_NOT_YET_SPLIT=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_WATCHDOG=y +CONFIG_FIXED_RCBA_MMIO_BASE=0xfed1c000 +CONFIG_RCBA_LENGTH=0x4000 + +# +# Super I/O +# + +# +# Embedded Controllers +# +CONFIG_EC_ACPI=y +CONFIG_EC_LENOVO_H8=y +CONFIG_H8_BEEP_ON_DEATH=y +CONFIG_H8_FLASH_LEDS_ON_DEATH=y +# CONFIG_H8_SUPPORT_BT_ON_WIFI is not set +# CONFIG_H8_FN_CTRL_SWAP is not set +CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_PRIMARY_FN_KEYS=y +CONFIG_H8_HAS_LEDLOGO=y +CONFIG_EC_LENOVO_PMH7=y + +# +# Intel Firmware +# +CONFIG_HAVE_ME_BIN=y +# CONFIG_STITCH_ME_BIN is not set +# CONFIG_CHECK_ME is not set +# CONFIG_ME_REGION_ALLOW_CPU_READ_ACCESS is not set +# CONFIG_USE_ME_CLEANER is not set +CONFIG_MAINBOARD_USES_IFD_GBE_REGION=y +CONFIG_HAVE_GBE_BIN=y +# CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION is not set +# CONFIG_LOCK_MANAGEMENT_ENGINE is not set +CONFIG_UNLOCK_FLASH_REGIONS=y +CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 +CONFIG_ARCH_X86=y +CONFIG_ARCH_BOOTBLOCK_X86_32=y +CONFIG_ARCH_VERSTAGE_X86_32=y +CONFIG_ARCH_ROMSTAGE_X86_32=y +CONFIG_ARCH_POSTCAR_X86_32=y +CONFIG_ARCH_RAMSTAGE_X86_32=y +CONFIG_ARCH_ALL_STAGES_X86_32=y +CONFIG_RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT=y +CONFIG_X86_TOP4G_BOOTMEDIA_MAP=y +CONFIG_POSTRAM_CBFS_CACHE_IN_BSS=y +CONFIG_RAMSTAGE_CBFS_CACHE_SIZE=0x4000 +CONFIG_PC80_SYSTEM=y +CONFIG_HAVE_CMOS_DEFAULT=y +CONFIG_POSTCAR_STAGE=y +CONFIG_BOOTBLOCK_SIMPLE=y +# CONFIG_BOOTBLOCK_NORMAL is not set +CONFIG_COLLECT_TIMESTAMPS_TSC=y +CONFIG_HAVE_CF9_RESET=y +CONFIG_DEBUG_HW_BREAKPOINTS=y +CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS=y +# CONFIG_DUMP_SMBIOS_TYPE17 is not set +CONFIG_X86_BOOTBLOCK_EXTRA_PROGRAM_SZ=0 +CONFIG_DEFAULT_EBDA_LOWMEM=0x100000 +CONFIG_DEFAULT_EBDA_SEGMENT=0xF600 +CONFIG_DEFAULT_EBDA_SIZE=0x400 +# end of Chipset + +# +# Devices +# +CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y +CONFIG_HAVE_LINEAR_FRAMEBUFFER=y +CONFIG_MAINBOARD_HAS_LIBGFXINIT=y +CONFIG_MAINBOARD_USE_LIBGFXINIT=y +# CONFIG_VGA_ROM_RUN is not set +# CONFIG_NO_GFX_INIT is not set +CONFIG_NO_EARLY_GFX_INIT=y + +# +# Display +# +CONFIG_VGA_TEXT_FRAMEBUFFER=y +# CONFIG_GENERIC_LINEAR_FRAMEBUFFER is not set +CONFIG_DEFAULT_SCREEN_ROTATION_INT=0 +# end of Display + +CONFIG_PCI=y +CONFIG_ECAM_MMCONF_SUPPORT=y +CONFIG_PCIX_PLUGIN_SUPPORT=y +CONFIG_AZALIA_HDA_CODEC_SUPPORT=y +CONFIG_PCIEXP_PLUGIN_SUPPORT=y +CONFIG_ECAM_MMCONF_LENGTH=0x04000000 +CONFIG_PCI_ALLOW_BUS_MASTER=y +CONFIG_PCI_SET_BUS_MASTER_PCI_BRIDGES=y +CONFIG_PCI_ALLOW_BUS_MASTER_ANY_DEVICE=y +# CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS is not set +# CONFIG_PCIEXP_LANE_ERR_STAT_CLEAR is not set +# CONFIG_EARLY_PCI_BRIDGE is not set +CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 +CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 +CONFIG_INTEL_GMA_HAVE_VBT=y +CONFIG_INTEL_GMA_ADD_VBT=y +# CONFIG_SOFTWARE_I2C is not set +CONFIG_I2C_TRANSFER_TIMEOUT_US=500000 +CONFIG_RESOURCE_ALLOCATION_TOP_DOWN=y +CONFIG_USE_DDR3=y +# end of Devices + +# +# Generic Drivers +# +CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set +# CONFIG_ELOG is not set +CONFIG_CACHE_MRC_SETTINGS=y +# CONFIG_MRC_SETTINGS_PROTECT is not set +# CONFIG_DRIVERS_OPTION_CFR is not set +# CONFIG_SMMSTORE is not set +CONFIG_SPI_FLASH=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY=y +# CONFIG_SPI_FLASH_NO_FAST_READ is not set +CONFIG_SPI_FLASH_ADESTO=y +CONFIG_SPI_FLASH_AMIC=y +CONFIG_SPI_FLASH_ATMEL=y +CONFIG_SPI_FLASH_EON=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_SST=y +CONFIG_SPI_FLASH_ISSI=y +CONFIG_HAVE_EM100PRO_SPI_CONSOLE_SUPPORT=y +CONFIG_TPM_INIT_RAMSTAGE=y +# CONFIG_TPM_PPI is not set +CONFIG_NO_UART_ON_SUPERIO=y +# CONFIG_DRIVERS_UART_OXPCIE is not set +CONFIG_HAVE_USBDEBUG=y +CONFIG_HAVE_USBDEBUG_OPTIONS=y +# CONFIG_USBDEBUG is not set +# CONFIG_VPD is not set +# CONFIG_DRIVERS_EMULATION_QEMU_FW_CFG is not set +# CONFIG_DRIVERS_GENERIC_CBFS_SERIAL is not set +# CONFIG_DRIVERS_GENERIC_CBFS_UUID is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9750 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9755 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9763E is not set +# CONFIG_DRIVERS_I2C_MAX98396 is not set +CONFIG_INTEL_DDI=y +CONFIG_INTEL_INT15=y +CONFIG_INTEL_GMA_ACPI=y +CONFIG_VBT_CBFS_COMPRESSION_LZMA=y +# CONFIG_VBT_CBFS_COMPRESSION_LZ4 is not set +# CONFIG_VBT_CBFS_COMPRESSION_NONE is not set +CONFIG_VBT_CBFS_COMPRESSION_ALGORITHM="lzma" +CONFIG_GFX_GMA=y +CONFIG_GFX_GMA_DYN_CPU=y +CONFIG_GFX_GMA_GENERATION="Haswell" +CONFIG_GFX_GMA_PCH="Lynx_Point" +CONFIG_GFX_GMA_PANEL_2_PORT="Disabled" +CONFIG_GFX_GMA_ANALOG_I2C_PORT="PCH_DAC" +# CONFIG_DRIVERS_NXP_UWB_SR1XX is not set +# CONFIG_DRIVERS_PS2_KEYBOARD is not set +CONFIG_DRIVERS_MC146818=y +# CONFIG_USE_PC_CMOS_ALTCENTURY is not set +CONFIG_PC_CMOS_BASE_PORT_BANK0=0x70 +CONFIG_MEMORY_MAPPED_TPM=y +CONFIG_TPM_TIS_BASE_ADDRESS=0xfed40000 +CONFIG_VGA=y +# CONFIG_DRIVERS_SIL_3114 is not set +CONFIG_DRIVERS_WIFI_GENERIC=y +CONFIG_DRIVERS_MTK_WIFI=y +# end of Generic Drivers + +# +# Security +# + +# +# CBFS verification +# +# CONFIG_CBFS_VERIFICATION is not set +# end of CBFS verification + +# +# Verified Boot (vboot) +# +# end of Verified Boot (vboot) + +# +# Trusted Platform Module +# +CONFIG_TPM1=y +# CONFIG_TPM2 is not set +CONFIG_TPM=y +CONFIG_MAINBOARD_HAS_TPM1=y +# CONFIG_TPM_DEACTIVATE is not set +# CONFIG_DEBUG_TPM is not set +CONFIG_PCR_BOOT_MODE=1 +CONFIG_PCR_HWID=1 +CONFIG_PCR_SRTM=2 +CONFIG_PCR_FW_VER=10 +CONFIG_PCR_RUNTIME_DATA=3 +# end of Trusted Platform Module + +# +# Memory initialization +# +CONFIG_PLATFORM_HAS_DRAM_CLEAR=y +CONFIG_SECURITY_CLEAR_DRAM_ON_REGULAR_BOOT=y +# end of Memory initialization + +# CONFIG_INTEL_TXT is not set +# CONFIG_STM is not set +# CONFIG_INTEL_CBNT_SUPPORT is not set +CONFIG_BOOTMEDIA_LOCK_NONE=y +# CONFIG_BOOTMEDIA_LOCK_CONTROLLER is not set +# CONFIG_BOOTMEDIA_LOCK_CHIP is not set +# CONFIG_BOOTMEDIA_SMM_BWP is not set +# end of Security + +CONFIG_ACPI_HAVE_PCAT_8259=y +CONFIG_ACPI_INTEL_HARDWARE_SLEEP_VALUES=y +CONFIG_ACPI_SOC_NVS=y +CONFIG_ACPI_NO_CUSTOM_MADT=y +CONFIG_ACPI_COMMON_MADT_LAPIC=y +CONFIG_ACPI_COMMON_MADT_IOAPIC=y +CONFIG_HAVE_ACPI_TABLES=y +CONFIG_BOOT_DEVICE_SPI_FLASH=y +CONFIG_BOOT_DEVICE_MEMORY_MAPPED=y +CONFIG_BOOT_DEVICE_SUPPORTS_WRITES=y +CONFIG_RTC=y + +# +# Console +# +CONFIG_BOOTBLOCK_CONSOLE=y +CONFIG_POSTCAR_CONSOLE=y +CONFIG_SQUELCH_EARLY_SMP=y +# CONFIG_SPKMODEM is not set +# CONFIG_CONSOLE_NE2K is not set +CONFIG_CONSOLE_CBMEM=y +# CONFIG_CONSOLE_CBMEM_DUMP_TO_UART is not set +# CONFIG_CONSOLE_SPI_FLASH is not set +# CONFIG_CONSOLE_I2C_SMBUS is not set +# CONFIG_EM100PRO_SPI_CONSOLE is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL_7=y +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_6 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_5 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_4 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_2 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_1 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL=7 +CONFIG_CONSOLE_USE_LOGLEVEL_PREFIX=y +CONFIG_CONSOLE_USE_ANSI_ESCAPES=y +# CONFIG_CMOS_POST is not set +CONFIG_POST_DEVICE_NONE=y +# CONFIG_POST_DEVICE_LPC is not set +# CONFIG_POST_DEVICE_PCI_PCIE is not set +CONFIG_POST_IO_PORT=0x80 +CONFIG_HWBASE_DEBUG_CB=y +# end of Console + +CONFIG_HAVE_ACPI_RESUME=y +CONFIG_RESUME_PATH_SAME_AS_BOOT=y +CONFIG_HAVE_MONOTONIC_TIMER=y +CONFIG_HAVE_OPTION_TABLE=y +CONFIG_IOAPIC=y +CONFIG_USE_WATCHDOG_ON_BOOT=y + +# +# System tables +# +CONFIG_GENERATE_SMBIOS_TABLES=y +CONFIG_BIOS_VENDOR="coreboot" +CONFIG_MAINBOARD_SERIAL_NUMBER="123456789" +# end of System tables + +# +# Payload +# +CONFIG_PAYLOAD_NONE=y +# end of Payload + +# +# Debugging +# + +# +# CPU Debug Settings +# +# CONFIG_DISPLAY_MTRRS is not set + +# +# Vendorcode Debug Settings +# + +# +# BLOB Debug Settings +# + +# +# 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 +# CONFIG_DEBUG_CONSOLE_INIT is not set +# CONFIG_DEBUG_SPI_FLASH is not set +# CONFIG_DEBUG_BOOT_STATE is not set +# CONFIG_DEBUG_ADA_CODE is not set +CONFIG_HAVE_EM100_SUPPORT=y +# CONFIG_EM100 is not set +# CONFIG_DEBUG_ACPICA_COMPATIBLE is not set +# end of Debugging + +CONFIG_RAMSTAGE_ADA=y +CONFIG_RAMSTAGE_LIBHWBASE=y +CONFIG_HWBASE_DYNAMIC_MMIO=y +CONFIG_HWBASE_DEFAULT_MMCONF=0xf0000000 +CONFIG_HWBASE_DIRECT_PCIDEV=y +CONFIG_DECOMPRESS_OFAST=y + +# +# Boot Logo Configuration +# +# CONFIG_BMP_LOGO is not set +# end of Boot Logo Configuration + +CONFIG_WARNINGS_ARE_ERRORS=y +CONFIG_MAX_REBOOT_CNT=3 +CONFIG_RELOCATABLE_MODULES=y +CONFIG_HAVE_BOOTBLOCK=y +CONFIG_HAVE_ROMSTAGE=y +CONFIG_HAVE_RAMSTAGE=y diff --git a/config/coreboot/t440plibremrc_4mcbfs_12mb/target.cfg b/config/coreboot/t440plibremrc_4mcbfs_12mb/target.cfg new file mode 100644 index 00000000..47e228b7 --- /dev/null +++ b/config/coreboot/t440plibremrc_4mcbfs_12mb/target.cfg @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +tree="default" +xarch="i386-elf" +payload_seabios="y" +payload_grub="y" +payload_memtest="y" +grub_scan_disk="nvme ahci" +grubtree="xhci_nvme" +vcfg="haswell" +build_depend="seabios/default grub/xhci_nvme memtest86plus u-boot/amd64coreboot" +payload_uboot="amd64" diff --git a/config/coreboot/t480_vfsp_16mb/cbfs.cfg b/config/coreboot/t480_vfsp_16mb/cbfs.cfg new file mode 100644 index 00000000..022783ff --- /dev/null +++ b/config/coreboot/t480_vfsp_16mb/cbfs.cfg @@ -0,0 +1 @@ +power_on_after_fail 0 diff --git a/config/coreboot/t480_vfsp_16mb/config/libgfxinit_corebootfb b/config/coreboot/t480_vfsp_16mb/config/libgfxinit_corebootfb index 7f3db415..2b4d9b0c 100644 --- a/config/coreboot/t480_vfsp_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/t480_vfsp_16mb/config/libgfxinit_corebootfb @@ -16,8 +16,8 @@ CONFIG_COMPILER_GCC=y # CONFIG_IWYU is not set # CONFIG_FMD_GENPARSER is not set # CONFIG_UTIL_GENPARSER is not set -CONFIG_OPTION_BACKEND_NONE=y -# CONFIG_USE_CBFS_FILE_OPTION_BACKEND is not set +# CONFIG_OPTION_BACKEND_NONE is not set +CONFIG_USE_CBFS_FILE_OPTION_BACKEND=y CONFIG_COMPRESS_RAMSTAGE_LZMA=y # CONFIG_COMPRESS_RAMSTAGE_LZ4 is not set CONFIG_SEPARATE_ROMSTAGE=y @@ -216,11 +216,15 @@ CONFIG_BOARD_LENOVO_T480=y # CONFIG_BOARD_LENOVO_X230S is not set # CONFIG_BOARD_LENOVO_X230_EDP is not set # CONFIG_BOARD_LENOVO_X60 is not set -CONFIG_PS2K_EISAID="PNP0303" -CONFIG_PS2M_EISAID="PNP0F13" -CONFIG_THINKPADEC_HKEY_EISAID="IBM0068" +CONFIG_PS2K_EISAID="LEN0071" +CONFIG_PS2M_EISAID="LEN0094" +CONFIG_THINKPADEC_HKEY_EISAID="LEN0268" CONFIG_GFX_GMA_PANEL_1_PORT="eDP" CONFIG_BOARD_LENOVO_SKLKBL_THINKPAD_COMMON=y +CONFIG_EDK2_BOOT_MANAGER_ESCAPE=y +CONFIG_EDK2_FOLLOW_BGRT_SPEC=y +CONFIG_MEC1653_DEBUG_UNLOCK_KEY="7a41b149fe2101cf" +CONFIG_VARIANT_HAS_DGPU=y CONFIG_LENOVO_TBFW_BIN="../../../vendorfiles/t480/tb.bin" CONFIG_TTYS0_BAUD=115200 # CONFIG_SOC_INTEL_CSE_SEND_EOP_EARLY is not set @@ -279,6 +283,7 @@ CONFIG_SMM_RESERVED_SIZE=0x200000 CONFIG_SMM_MODULE_STACK_SIZE=0x800 CONFIG_ACPI_BERT_SIZE=0x0 CONFIG_DRIVERS_I2C_DESIGNWARE_CLOCK_MHZ=120 +CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xe0000000 CONFIG_ACPI_CPU_STRING="CP%02X" @@ -457,7 +462,6 @@ CONFIG_UDELAY_TSC=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y -CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -497,11 +501,14 @@ CONFIG_EC_ACPI=y CONFIG_EC_LENOVO_H8=y CONFIG_H8_BEEP_ON_DEATH=y CONFIG_H8_FLASH_LEDS_ON_DEATH=y -# CONFIG_H8_SUPPORT_BT_ON_WIFI is not set +CONFIG_H8_SUPPORT_BT_ON_WIFI=y # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y CONFIG_H8_HAS_PRIMARY_FN_KEYS=y CONFIG_H8_HAS_LEDLOGO=y +CONFIG_EC_LENOVO_MEC1653=y +CONFIG_MEC1653_HAS_DEBUG_UNLOCK=y +CONFIG_MEC1653_ENABLE_UART=y CONFIG_EC_LENOVO_PMH7=y # @@ -518,7 +525,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_UDK_BASE=y CONFIG_UDK_2017_BINDING=y CONFIG_UDK_2013_VERSION=2013 @@ -646,7 +652,6 @@ CONFIG_USE_FSP_NOTIFY_PHASE_READY_TO_BOOT=y CONFIG_USE_FSP_NOTIFY_PHASE_END_OF_FIRMWARE=y # CONFIG_DISPLAY_FSP_TIMESTAMPS is not set # CONFIG_BUILDING_WITH_DEBUG_FSP is not set -CONFIG_INTEL_INT15=y CONFIG_INTEL_GMA_ACPI=y CONFIG_VBT_CBFS_COMPRESSION_LZMA=y # CONFIG_VBT_CBFS_COMPRESSION_LZ4 is not set diff --git a/config/coreboot/t480_vfsp_16mb/config/libgfxinit_txtmode b/config/coreboot/t480_vfsp_16mb/config/libgfxinit_txtmode index 6e6dc2c7..cc8d4fa4 100644 --- a/config/coreboot/t480_vfsp_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/t480_vfsp_16mb/config/libgfxinit_txtmode @@ -16,8 +16,8 @@ CONFIG_COMPILER_GCC=y # CONFIG_IWYU is not set # CONFIG_FMD_GENPARSER is not set # CONFIG_UTIL_GENPARSER is not set -CONFIG_OPTION_BACKEND_NONE=y -# CONFIG_USE_CBFS_FILE_OPTION_BACKEND is not set +# CONFIG_OPTION_BACKEND_NONE is not set +CONFIG_USE_CBFS_FILE_OPTION_BACKEND=y CONFIG_COMPRESS_RAMSTAGE_LZMA=y # CONFIG_COMPRESS_RAMSTAGE_LZ4 is not set CONFIG_SEPARATE_ROMSTAGE=y @@ -214,11 +214,15 @@ CONFIG_BOARD_LENOVO_T480=y # CONFIG_BOARD_LENOVO_X230S is not set # CONFIG_BOARD_LENOVO_X230_EDP is not set # CONFIG_BOARD_LENOVO_X60 is not set -CONFIG_PS2K_EISAID="PNP0303" -CONFIG_PS2M_EISAID="PNP0F13" -CONFIG_THINKPADEC_HKEY_EISAID="IBM0068" +CONFIG_PS2K_EISAID="LEN0071" +CONFIG_PS2M_EISAID="LEN0094" +CONFIG_THINKPADEC_HKEY_EISAID="LEN0268" CONFIG_GFX_GMA_PANEL_1_PORT="eDP" CONFIG_BOARD_LENOVO_SKLKBL_THINKPAD_COMMON=y +CONFIG_EDK2_BOOT_MANAGER_ESCAPE=y +CONFIG_EDK2_FOLLOW_BGRT_SPEC=y +CONFIG_MEC1653_DEBUG_UNLOCK_KEY="7a41b149fe2101cf" +CONFIG_VARIANT_HAS_DGPU=y CONFIG_LENOVO_TBFW_BIN="../../../vendorfiles/t480/tb.bin" CONFIG_TTYS0_BAUD=115200 # CONFIG_SOC_INTEL_CSE_SEND_EOP_EARLY is not set @@ -277,6 +281,7 @@ CONFIG_SMM_RESERVED_SIZE=0x200000 CONFIG_SMM_MODULE_STACK_SIZE=0x800 CONFIG_ACPI_BERT_SIZE=0x0 CONFIG_DRIVERS_I2C_DESIGNWARE_CLOCK_MHZ=120 +CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xe0000000 CONFIG_ACPI_CPU_STRING="CP%02X" @@ -455,7 +460,6 @@ CONFIG_UDELAY_TSC=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y -CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -495,11 +499,14 @@ CONFIG_EC_ACPI=y CONFIG_EC_LENOVO_H8=y CONFIG_H8_BEEP_ON_DEATH=y CONFIG_H8_FLASH_LEDS_ON_DEATH=y -# CONFIG_H8_SUPPORT_BT_ON_WIFI is not set +CONFIG_H8_SUPPORT_BT_ON_WIFI=y # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y CONFIG_H8_HAS_PRIMARY_FN_KEYS=y CONFIG_H8_HAS_LEDLOGO=y +CONFIG_EC_LENOVO_MEC1653=y +CONFIG_MEC1653_HAS_DEBUG_UNLOCK=y +CONFIG_MEC1653_ENABLE_UART=y CONFIG_EC_LENOVO_PMH7=y # @@ -516,7 +523,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_UDK_BASE=y CONFIG_UDK_2017_BINDING=y CONFIG_UDK_2013_VERSION=2013 @@ -638,7 +644,6 @@ CONFIG_USE_FSP_NOTIFY_PHASE_READY_TO_BOOT=y CONFIG_USE_FSP_NOTIFY_PHASE_END_OF_FIRMWARE=y # CONFIG_DISPLAY_FSP_TIMESTAMPS is not set # CONFIG_BUILDING_WITH_DEBUG_FSP is not set -CONFIG_INTEL_INT15=y CONFIG_INTEL_GMA_ACPI=y CONFIG_VBT_CBFS_COMPRESSION_LZMA=y # CONFIG_VBT_CBFS_COMPRESSION_LZ4 is not set diff --git a/config/coreboot/t480_vfsp_16mb/target.cfg b/config/coreboot/t480_vfsp_16mb/target.cfg index 6ba1e1cd..1cc6d167 100644 --- a/config/coreboot/t480_vfsp_16mb/target.cfg +++ b/config/coreboot/t480_vfsp_16mb/target.cfg @@ -6,7 +6,7 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="nvme ahci" -grubtree="xhci" +grubtree="xhci_nvme" vcfg="t480" -build_depend="seabios/default grub/xhci memtest86plus" +build_depend="seabios/default grub/xhci_nvme memtest86plus" IFD_platform="sklkbl" diff --git a/config/coreboot/t480s_vfsp_16mb/cbfs.cfg b/config/coreboot/t480s_vfsp_16mb/cbfs.cfg new file mode 100644 index 00000000..022783ff --- /dev/null +++ b/config/coreboot/t480s_vfsp_16mb/cbfs.cfg @@ -0,0 +1 @@ +power_on_after_fail 0 diff --git a/config/coreboot/t480s_vfsp_16mb/config/libgfxinit_corebootfb b/config/coreboot/t480s_vfsp_16mb/config/libgfxinit_corebootfb index 6bf08b2d..c2a242f3 100644 --- a/config/coreboot/t480s_vfsp_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/t480s_vfsp_16mb/config/libgfxinit_corebootfb @@ -216,11 +216,14 @@ CONFIG_BOARD_LENOVO_T480S=y # CONFIG_BOARD_LENOVO_X230S is not set # CONFIG_BOARD_LENOVO_X230_EDP is not set # CONFIG_BOARD_LENOVO_X60 is not set -CONFIG_PS2K_EISAID="PNP0303" -CONFIG_PS2M_EISAID="PNP0F13" -CONFIG_THINKPADEC_HKEY_EISAID="IBM0068" +CONFIG_PS2K_EISAID="LEN0071" +CONFIG_PS2M_EISAID="LEN0094" +CONFIG_THINKPADEC_HKEY_EISAID="LEN0268" CONFIG_GFX_GMA_PANEL_1_PORT="eDP" CONFIG_BOARD_LENOVO_SKLKBL_THINKPAD_COMMON=y +CONFIG_EDK2_BOOT_MANAGER_ESCAPE=y +CONFIG_EDK2_FOLLOW_BGRT_SPEC=y +CONFIG_VARIANT_HAS_DGPU=y CONFIG_LENOVO_TBFW_BIN="../../../vendorfiles/t480s/tb.bin" CONFIG_TTYS0_BAUD=115200 # CONFIG_SOC_INTEL_CSE_SEND_EOP_EARLY is not set @@ -279,6 +282,7 @@ CONFIG_SMM_RESERVED_SIZE=0x200000 CONFIG_SMM_MODULE_STACK_SIZE=0x800 CONFIG_ACPI_BERT_SIZE=0x0 CONFIG_DRIVERS_I2C_DESIGNWARE_CLOCK_MHZ=120 +CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xe0000000 CONFIG_ACPI_CPU_STRING="CP%02X" @@ -457,7 +461,6 @@ CONFIG_UDELAY_TSC=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y -CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -497,11 +500,12 @@ CONFIG_EC_ACPI=y CONFIG_EC_LENOVO_H8=y CONFIG_H8_BEEP_ON_DEATH=y CONFIG_H8_FLASH_LEDS_ON_DEATH=y -# CONFIG_H8_SUPPORT_BT_ON_WIFI is not set +CONFIG_H8_SUPPORT_BT_ON_WIFI=y # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y CONFIG_H8_HAS_PRIMARY_FN_KEYS=y CONFIG_H8_HAS_LEDLOGO=y +CONFIG_EC_LENOVO_MEC1653=y CONFIG_EC_LENOVO_PMH7=y # @@ -518,7 +522,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_UDK_BASE=y CONFIG_UDK_2017_BINDING=y CONFIG_UDK_2013_VERSION=2013 @@ -646,7 +649,6 @@ CONFIG_USE_FSP_NOTIFY_PHASE_READY_TO_BOOT=y CONFIG_USE_FSP_NOTIFY_PHASE_END_OF_FIRMWARE=y # CONFIG_DISPLAY_FSP_TIMESTAMPS is not set # CONFIG_BUILDING_WITH_DEBUG_FSP is not set -CONFIG_INTEL_INT15=y CONFIG_INTEL_GMA_ACPI=y CONFIG_VBT_CBFS_COMPRESSION_LZMA=y # CONFIG_VBT_CBFS_COMPRESSION_LZ4 is not set diff --git a/config/coreboot/t480s_vfsp_16mb/config/libgfxinit_txtmode b/config/coreboot/t480s_vfsp_16mb/config/libgfxinit_txtmode index aa5f8188..89ec0e55 100644 --- a/config/coreboot/t480s_vfsp_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/t480s_vfsp_16mb/config/libgfxinit_txtmode @@ -214,11 +214,14 @@ CONFIG_BOARD_LENOVO_T480S=y # CONFIG_BOARD_LENOVO_X230S is not set # CONFIG_BOARD_LENOVO_X230_EDP is not set # CONFIG_BOARD_LENOVO_X60 is not set -CONFIG_PS2K_EISAID="PNP0303" -CONFIG_PS2M_EISAID="PNP0F13" -CONFIG_THINKPADEC_HKEY_EISAID="IBM0068" +CONFIG_PS2K_EISAID="LEN0071" +CONFIG_PS2M_EISAID="LEN0094" +CONFIG_THINKPADEC_HKEY_EISAID="LEN0268" CONFIG_GFX_GMA_PANEL_1_PORT="eDP" CONFIG_BOARD_LENOVO_SKLKBL_THINKPAD_COMMON=y +CONFIG_EDK2_BOOT_MANAGER_ESCAPE=y +CONFIG_EDK2_FOLLOW_BGRT_SPEC=y +CONFIG_VARIANT_HAS_DGPU=y CONFIG_LENOVO_TBFW_BIN="../../../vendorfiles/t480s/tb.bin" CONFIG_TTYS0_BAUD=115200 # CONFIG_SOC_INTEL_CSE_SEND_EOP_EARLY is not set @@ -277,6 +280,7 @@ CONFIG_SMM_RESERVED_SIZE=0x200000 CONFIG_SMM_MODULE_STACK_SIZE=0x800 CONFIG_ACPI_BERT_SIZE=0x0 CONFIG_DRIVERS_I2C_DESIGNWARE_CLOCK_MHZ=120 +CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xe0000000 CONFIG_ACPI_CPU_STRING="CP%02X" @@ -455,7 +459,6 @@ CONFIG_UDELAY_TSC=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y -CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -495,11 +498,12 @@ CONFIG_EC_ACPI=y CONFIG_EC_LENOVO_H8=y CONFIG_H8_BEEP_ON_DEATH=y CONFIG_H8_FLASH_LEDS_ON_DEATH=y -# CONFIG_H8_SUPPORT_BT_ON_WIFI is not set +CONFIG_H8_SUPPORT_BT_ON_WIFI=y # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y CONFIG_H8_HAS_PRIMARY_FN_KEYS=y CONFIG_H8_HAS_LEDLOGO=y +CONFIG_EC_LENOVO_MEC1653=y CONFIG_EC_LENOVO_PMH7=y # @@ -516,7 +520,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_UDK_BASE=y CONFIG_UDK_2017_BINDING=y CONFIG_UDK_2013_VERSION=2013 @@ -638,7 +641,6 @@ CONFIG_USE_FSP_NOTIFY_PHASE_READY_TO_BOOT=y CONFIG_USE_FSP_NOTIFY_PHASE_END_OF_FIRMWARE=y # CONFIG_DISPLAY_FSP_TIMESTAMPS is not set # CONFIG_BUILDING_WITH_DEBUG_FSP is not set -CONFIG_INTEL_INT15=y CONFIG_INTEL_GMA_ACPI=y CONFIG_VBT_CBFS_COMPRESSION_LZMA=y # CONFIG_VBT_CBFS_COMPRESSION_LZ4 is not set diff --git a/config/coreboot/t480s_vfsp_16mb/target.cfg b/config/coreboot/t480s_vfsp_16mb/target.cfg index 6dd3a6f8..a8fffe9a 100644 --- a/config/coreboot/t480s_vfsp_16mb/target.cfg +++ b/config/coreboot/t480s_vfsp_16mb/target.cfg @@ -6,7 +6,7 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="nvme ahci" -grubtree="xhci" +grubtree="xhci_nvme" vcfg="t480s" -build_depend="seabios/default grub/xhci memtest86plus" +build_depend="seabios/default grub/xhci_nvme memtest86plus" IFD_platform="sklkbl" diff --git a/config/coreboot/t500_16mb/config/libgfxinit_corebootfb b/config/coreboot/t500_16mb/config/libgfxinit_corebootfb index bc68dd6a..375b0b01 100644 --- a/config/coreboot/t500_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/t500_16mb/config/libgfxinit_corebootfb @@ -274,6 +274,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -318,7 +319,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -379,6 +379,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -392,7 +394,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -473,6 +474,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/t500_16mb/config/libgfxinit_txtmode b/config/coreboot/t500_16mb/config/libgfxinit_txtmode index efa62fa0..3d797080 100644 --- a/config/coreboot/t500_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/t500_16mb/config/libgfxinit_txtmode @@ -272,6 +272,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -316,7 +317,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -377,6 +377,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -390,7 +392,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -469,6 +470,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/t500_16mb/target.cfg b/config/coreboot/t500_16mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/t500_16mb/target.cfg +++ b/config/coreboot/t500_16mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/t500_4mb/config/libgfxinit_corebootfb b/config/coreboot/t500_4mb/config/libgfxinit_corebootfb index 2a8efe6f..5e5d3ade 100644 --- a/config/coreboot/t500_4mb/config/libgfxinit_corebootfb +++ b/config/coreboot/t500_4mb/config/libgfxinit_corebootfb @@ -274,6 +274,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -318,7 +319,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -379,6 +379,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -392,7 +394,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -473,6 +474,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/t500_4mb/config/libgfxinit_txtmode b/config/coreboot/t500_4mb/config/libgfxinit_txtmode index 9c073ea9..9a7e5617 100644 --- a/config/coreboot/t500_4mb/config/libgfxinit_txtmode +++ b/config/coreboot/t500_4mb/config/libgfxinit_txtmode @@ -272,6 +272,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -316,7 +317,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -377,6 +377,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -390,7 +392,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -469,6 +470,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/t500_4mb/target.cfg b/config/coreboot/t500_4mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/t500_4mb/target.cfg +++ b/config/coreboot/t500_4mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/t500_8mb/config/libgfxinit_corebootfb b/config/coreboot/t500_8mb/config/libgfxinit_corebootfb index 22de6c8d..c8732a48 100644 --- a/config/coreboot/t500_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/t500_8mb/config/libgfxinit_corebootfb @@ -274,6 +274,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -318,7 +319,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -379,6 +379,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -392,7 +394,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -473,6 +474,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/t500_8mb/config/libgfxinit_txtmode b/config/coreboot/t500_8mb/config/libgfxinit_txtmode index 03a48de1..c4b3c004 100644 --- a/config/coreboot/t500_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/t500_8mb/config/libgfxinit_txtmode @@ -272,6 +272,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -316,7 +317,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -377,6 +377,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -390,7 +392,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -469,6 +470,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/t500_8mb/target.cfg b/config/coreboot/t500_8mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/t500_8mb/target.cfg +++ b/config/coreboot/t500_8mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/t520_8mb/config/libgfxinit_corebootfb b/config/coreboot/t520_8mb/config/libgfxinit_corebootfb index 5e1da555..95e50779 100644 --- a/config/coreboot/t520_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/t520_8mb/config/libgfxinit_corebootfb @@ -276,6 +276,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -320,7 +321,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -396,6 +396,8 @@ CONFIG_H8_FLASH_LEDS_ON_DEATH=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -412,7 +414,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -491,6 +492,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/t520_8mb/config/libgfxinit_txtmode b/config/coreboot/t520_8mb/config/libgfxinit_txtmode index e26767d4..5dfa0496 100644 --- a/config/coreboot/t520_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/t520_8mb/config/libgfxinit_txtmode @@ -274,6 +274,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -318,7 +319,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -394,6 +394,8 @@ CONFIG_H8_FLASH_LEDS_ON_DEATH=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -410,7 +412,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -487,6 +488,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/t520_8mb/target.cfg b/config/coreboot/t520_8mb/target.cfg index 333030ce..d7510b96 100644 --- a/config/coreboot/t520_8mb/target.cfg +++ b/config/coreboot/t520_8mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="sandybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/t530_12mb/config/libgfxinit_corebootfb b/config/coreboot/t530_12mb/config/libgfxinit_corebootfb index ee27ad35..46986899 100644 --- a/config/coreboot/t530_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/t530_12mb/config/libgfxinit_corebootfb @@ -276,6 +276,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -320,7 +321,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -396,6 +396,8 @@ CONFIG_H8_FLASH_LEDS_ON_DEATH=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -412,7 +414,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -491,6 +492,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/t530_12mb/config/libgfxinit_txtmode b/config/coreboot/t530_12mb/config/libgfxinit_txtmode index a7b82145..005437ca 100644 --- a/config/coreboot/t530_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/t530_12mb/config/libgfxinit_txtmode @@ -274,6 +274,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -318,7 +319,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -394,6 +394,8 @@ CONFIG_H8_FLASH_LEDS_ON_DEATH=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -410,7 +412,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -487,6 +488,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/t530_12mb/target.cfg b/config/coreboot/t530_12mb/target.cfg index 6cbab731..595ad782 100644 --- a/config/coreboot/t530_12mb/target.cfg +++ b/config/coreboot/t530_12mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="ivybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/t60_16mb_intelgpu/config/libgfxinit_corebootfb b/config/coreboot/t60_16mb_intelgpu/config/libgfxinit_corebootfb index 86a2b3a5..83e57e15 100644 --- a/config/coreboot/t60_16mb_intelgpu/config/libgfxinit_corebootfb +++ b/config/coreboot/t60_16mb_intelgpu/config/libgfxinit_corebootfb @@ -264,6 +264,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -311,7 +312,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -375,9 +375,10 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_FLASH_LEDS_ON_DEATH is not set # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -456,6 +457,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/t60_16mb_intelgpu/config/libgfxinit_txtmode b/config/coreboot/t60_16mb_intelgpu/config/libgfxinit_txtmode index 2f92e2d5..0fecf0a1 100644 --- a/config/coreboot/t60_16mb_intelgpu/config/libgfxinit_txtmode +++ b/config/coreboot/t60_16mb_intelgpu/config/libgfxinit_txtmode @@ -264,6 +264,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -311,7 +312,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -375,9 +375,10 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_FLASH_LEDS_ON_DEATH is not set # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -454,6 +455,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/t60_16mb_intelgpu/target.cfg b/config/coreboot/t60_16mb_intelgpu/target.cfg index c1e3a3c6..f41e3fe9 100644 --- a/config/coreboot/t60_16mb_intelgpu/target.cfg +++ b/config/coreboot/t60_16mb_intelgpu/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" grub_scan_disk="ahci" build_depend="seabios/default grub/default u-boot/i386coreboot" -payload_uboot_i386="y" +payload_uboot="i386" diff --git a/config/coreboot/t60_intelgpu/config/libgfxinit_corebootfb b/config/coreboot/t60_intelgpu/config/libgfxinit_corebootfb index 09bcf7c5..635cc7d1 100644 --- a/config/coreboot/t60_intelgpu/config/libgfxinit_corebootfb +++ b/config/coreboot/t60_intelgpu/config/libgfxinit_corebootfb @@ -264,6 +264,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -311,7 +312,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -375,9 +375,10 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_FLASH_LEDS_ON_DEATH is not set # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -456,6 +457,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/t60_intelgpu/config/libgfxinit_txtmode b/config/coreboot/t60_intelgpu/config/libgfxinit_txtmode index f4d06fb5..b11e0db9 100644 --- a/config/coreboot/t60_intelgpu/config/libgfxinit_txtmode +++ b/config/coreboot/t60_intelgpu/config/libgfxinit_txtmode @@ -264,6 +264,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -311,7 +312,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -375,9 +375,10 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_FLASH_LEDS_ON_DEATH is not set # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -454,6 +455,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/t60_intelgpu/target.cfg b/config/coreboot/t60_intelgpu/target.cfg index c1e3a3c6..f41e3fe9 100644 --- a/config/coreboot/t60_intelgpu/target.cfg +++ b/config/coreboot/t60_intelgpu/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" grub_scan_disk="ahci" build_depend="seabios/default grub/default u-boot/i386coreboot" -payload_uboot_i386="y" +payload_uboot="i386" diff --git a/config/coreboot/w500_16mb/config/libgfxinit_corebootfb b/config/coreboot/w500_16mb/config/libgfxinit_corebootfb index 680e52eb..91cea560 100644 --- a/config/coreboot/w500_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/w500_16mb/config/libgfxinit_corebootfb @@ -274,6 +274,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -318,7 +319,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -379,6 +379,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -392,7 +394,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -473,6 +474,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/w500_16mb/config/libgfxinit_txtmode b/config/coreboot/w500_16mb/config/libgfxinit_txtmode index 22dfc054..59326aca 100644 --- a/config/coreboot/w500_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/w500_16mb/config/libgfxinit_txtmode @@ -272,6 +272,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -316,7 +317,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -377,6 +377,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -390,7 +392,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -469,6 +470,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/w500_16mb/target.cfg b/config/coreboot/w500_16mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/w500_16mb/target.cfg +++ b/config/coreboot/w500_16mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/w500_4mb/config/libgfxinit_corebootfb b/config/coreboot/w500_4mb/config/libgfxinit_corebootfb index 5c4ab85d..be7c6931 100644 --- a/config/coreboot/w500_4mb/config/libgfxinit_corebootfb +++ b/config/coreboot/w500_4mb/config/libgfxinit_corebootfb @@ -274,6 +274,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -318,7 +319,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -379,6 +379,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -392,7 +394,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -473,6 +474,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/w500_4mb/config/libgfxinit_txtmode b/config/coreboot/w500_4mb/config/libgfxinit_txtmode index 1d2c74e8..cc520d46 100644 --- a/config/coreboot/w500_4mb/config/libgfxinit_txtmode +++ b/config/coreboot/w500_4mb/config/libgfxinit_txtmode @@ -272,6 +272,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -316,7 +317,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -377,6 +377,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -390,7 +392,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -469,6 +470,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/w500_4mb/target.cfg b/config/coreboot/w500_4mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/w500_4mb/target.cfg +++ b/config/coreboot/w500_4mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/w500_8mb/config/libgfxinit_corebootfb b/config/coreboot/w500_8mb/config/libgfxinit_corebootfb index 1103130e..8af6b5b5 100644 --- a/config/coreboot/w500_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/w500_8mb/config/libgfxinit_corebootfb @@ -274,6 +274,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -318,7 +319,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -379,6 +379,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -392,7 +394,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -473,6 +474,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/w500_8mb/config/libgfxinit_txtmode b/config/coreboot/w500_8mb/config/libgfxinit_txtmode index 3df6264b..19d473b2 100644 --- a/config/coreboot/w500_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/w500_8mb/config/libgfxinit_txtmode @@ -272,6 +272,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -316,7 +317,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -377,6 +377,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -390,7 +392,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -469,6 +470,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set # CONFIG_DRIVERS_OPTION_CFR is not set # CONFIG_SMMSTORE is not set diff --git a/config/coreboot/w500_8mb/target.cfg b/config/coreboot/w500_8mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/w500_8mb/target.cfg +++ b/config/coreboot/w500_8mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/w530_12mb/config/libgfxinit_corebootfb b/config/coreboot/w530_12mb/config/libgfxinit_corebootfb index b5c2ca56..50141db1 100644 --- a/config/coreboot/w530_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/w530_12mb/config/libgfxinit_corebootfb @@ -276,6 +276,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -320,7 +321,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -396,6 +396,8 @@ CONFIG_H8_FLASH_LEDS_ON_DEATH=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -412,7 +414,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -491,6 +492,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/w530_12mb/config/libgfxinit_txtmode b/config/coreboot/w530_12mb/config/libgfxinit_txtmode index 18794ac6..35e909a6 100644 --- a/config/coreboot/w530_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/w530_12mb/config/libgfxinit_txtmode @@ -274,6 +274,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -318,7 +319,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -394,6 +394,8 @@ CONFIG_H8_FLASH_LEDS_ON_DEATH=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -410,7 +412,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -487,6 +488,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/w530_12mb/target.cfg b/config/coreboot/w530_12mb/target.cfg index 6cbab731..595ad782 100644 --- a/config/coreboot/w530_12mb/target.cfg +++ b/config/coreboot/w530_12mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="ivybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/w541_12mb/config/libgfxinit_corebootfb b/config/coreboot/w541_12mb/config/libgfxinit_corebootfb index 6be3c77b..7e7e0196 100644 --- a/config/coreboot/w541_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/w541_12mb/config/libgfxinit_corebootfb @@ -275,6 +275,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -321,7 +322,6 @@ CONFIG_UDELAY_TSC=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y -CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -402,7 +402,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -477,6 +476,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/w541_12mb/config/libgfxinit_txtmode b/config/coreboot/w541_12mb/config/libgfxinit_txtmode index 9be8bf6a..e5ea50f6 100644 --- a/config/coreboot/w541_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/w541_12mb/config/libgfxinit_txtmode @@ -273,6 +273,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -319,7 +320,6 @@ CONFIG_UDELAY_TSC=y CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y -CONFIG_CPU_PT_ROM_MAP_GB=512 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -400,7 +400,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -473,6 +472,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/w541_12mb/target.cfg b/config/coreboot/w541_12mb/target.cfg index 96fbb9e3..47e228b7 100644 --- a/config/coreboot/w541_12mb/target.cfg +++ b/config/coreboot/w541_12mb/target.cfg @@ -6,7 +6,7 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="nvme ahci" -grubtree="xhci" +grubtree="xhci_nvme" vcfg="haswell" -build_depend="seabios/default grub/xhci memtest86plus u-boot/amd64coreboot" -payload_uboot_amd64="y" +build_depend="seabios/default grub/xhci_nvme memtest86plus u-boot/amd64coreboot" +payload_uboot="amd64" diff --git a/config/coreboot/x200_16mb/config/libgfxinit_corebootfb b/config/coreboot/x200_16mb/config/libgfxinit_corebootfb index 792f23b5..20f5bbda 100644 --- a/config/coreboot/x200_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/x200_16mb/config/libgfxinit_corebootfb @@ -271,6 +271,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -314,7 +315,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -374,6 +374,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -387,7 +389,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -467,6 +468,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_DRIVERS_LENOVO_WACOM=y CONFIG_DIGITIZER_AUTODETECT=y diff --git a/config/coreboot/x200_16mb/config/libgfxinit_txtmode b/config/coreboot/x200_16mb/config/libgfxinit_txtmode index b35d4ffa..d1635db3 100644 --- a/config/coreboot/x200_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/x200_16mb/config/libgfxinit_txtmode @@ -269,6 +269,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -312,7 +313,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -372,6 +372,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -385,7 +387,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -463,6 +464,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_DRIVERS_LENOVO_WACOM=y CONFIG_DIGITIZER_AUTODETECT=y diff --git a/config/coreboot/x200_16mb/target.cfg b/config/coreboot/x200_16mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/x200_16mb/target.cfg +++ b/config/coreboot/x200_16mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/x200_4mb/config/libgfxinit_corebootfb b/config/coreboot/x200_4mb/config/libgfxinit_corebootfb index f7a679d4..63166703 100644 --- a/config/coreboot/x200_4mb/config/libgfxinit_corebootfb +++ b/config/coreboot/x200_4mb/config/libgfxinit_corebootfb @@ -271,6 +271,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -314,7 +315,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -374,6 +374,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -387,7 +389,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -467,6 +468,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_DRIVERS_LENOVO_WACOM=y CONFIG_DIGITIZER_AUTODETECT=y diff --git a/config/coreboot/x200_4mb/config/libgfxinit_txtmode b/config/coreboot/x200_4mb/config/libgfxinit_txtmode index a7ded559..197e4ea4 100644 --- a/config/coreboot/x200_4mb/config/libgfxinit_txtmode +++ b/config/coreboot/x200_4mb/config/libgfxinit_txtmode @@ -269,6 +269,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -312,7 +313,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -372,6 +372,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -385,7 +387,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -463,6 +464,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_DRIVERS_LENOVO_WACOM=y CONFIG_DIGITIZER_AUTODETECT=y diff --git a/config/coreboot/x200_4mb/target.cfg b/config/coreboot/x200_4mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/x200_4mb/target.cfg +++ b/config/coreboot/x200_4mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/x200_8mb/config/libgfxinit_corebootfb b/config/coreboot/x200_8mb/config/libgfxinit_corebootfb index 749efb36..ddaefa7a 100644 --- a/config/coreboot/x200_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/x200_8mb/config/libgfxinit_corebootfb @@ -271,6 +271,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -314,7 +315,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -374,6 +374,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -387,7 +389,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -467,6 +468,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_DRIVERS_LENOVO_WACOM=y CONFIG_DIGITIZER_AUTODETECT=y diff --git a/config/coreboot/x200_8mb/config/libgfxinit_txtmode b/config/coreboot/x200_8mb/config/libgfxinit_txtmode index 036f799b..ccc5904d 100644 --- a/config/coreboot/x200_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/x200_8mb/config/libgfxinit_txtmode @@ -269,6 +269,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -312,7 +313,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -372,6 +372,8 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y # @@ -385,7 +387,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -463,6 +464,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_DRIVERS_LENOVO_WACOM=y CONFIG_DIGITIZER_AUTODETECT=y diff --git a/config/coreboot/x200_8mb/target.cfg b/config/coreboot/x200_8mb/target.cfg index 53a597b6..f4d81d19 100644 --- a/config/coreboot/x200_8mb/target.cfg +++ b/config/coreboot/x200_8mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/x220_8mb/config/libgfxinit_corebootfb b/config/coreboot/x220_8mb/config/libgfxinit_corebootfb index 678cca8d..e72892ff 100644 --- a/config/coreboot/x220_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/x220_8mb/config/libgfxinit_corebootfb @@ -276,6 +276,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -320,7 +321,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -396,6 +396,7 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -412,7 +413,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -491,6 +491,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/x220_8mb/config/libgfxinit_txtmode b/config/coreboot/x220_8mb/config/libgfxinit_txtmode index 17dc8ebe..e0072f13 100644 --- a/config/coreboot/x220_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/x220_8mb/config/libgfxinit_txtmode @@ -274,6 +274,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -318,7 +319,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -394,6 +394,7 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -410,7 +411,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -487,6 +487,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/x220_8mb/target.cfg b/config/coreboot/x220_8mb/target.cfg index 333030ce..d7510b96 100644 --- a/config/coreboot/x220_8mb/target.cfg +++ b/config/coreboot/x220_8mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="sandybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/x230_12mb/config/libgfxinit_corebootfb b/config/coreboot/x230_12mb/config/libgfxinit_corebootfb index 56929239..cba17129 100644 --- a/config/coreboot/x230_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/x230_12mb/config/libgfxinit_corebootfb @@ -276,6 +276,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -320,7 +321,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -396,6 +396,7 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -412,7 +413,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -491,6 +491,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/x230_12mb/config/libgfxinit_txtmode b/config/coreboot/x230_12mb/config/libgfxinit_txtmode index f43cc332..73fe0a42 100644 --- a/config/coreboot/x230_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/x230_12mb/config/libgfxinit_txtmode @@ -274,6 +274,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -318,7 +319,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -394,6 +394,7 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -410,7 +411,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -487,6 +487,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/x230_12mb/target.cfg b/config/coreboot/x230_12mb/target.cfg index 6cbab731..595ad782 100644 --- a/config/coreboot/x230_12mb/target.cfg +++ b/config/coreboot/x230_12mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="ivybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/x230_16mb/config/libgfxinit_corebootfb b/config/coreboot/x230_16mb/config/libgfxinit_corebootfb index 1d4e9f37..f8348375 100644 --- a/config/coreboot/x230_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/x230_16mb/config/libgfxinit_corebootfb @@ -276,6 +276,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -320,7 +321,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -396,6 +396,7 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -412,7 +413,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -491,6 +491,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/x230_16mb/config/libgfxinit_txtmode b/config/coreboot/x230_16mb/config/libgfxinit_txtmode index a1dbc601..c4dda6a9 100644 --- a/config/coreboot/x230_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/x230_16mb/config/libgfxinit_txtmode @@ -274,6 +274,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -318,7 +319,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -394,6 +394,7 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -410,7 +411,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -487,6 +487,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/x230_16mb/target.cfg b/config/coreboot/x230_16mb/target.cfg index 6cbab731..595ad782 100644 --- a/config/coreboot/x230_16mb/target.cfg +++ b/config/coreboot/x230_16mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="ivybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/x230t_12mb/config/libgfxinit_corebootfb b/config/coreboot/x230t_12mb/config/libgfxinit_corebootfb index dd6de6d4..c2ef35aa 100644 --- a/config/coreboot/x230t_12mb/config/libgfxinit_corebootfb +++ b/config/coreboot/x230t_12mb/config/libgfxinit_corebootfb @@ -276,6 +276,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -320,7 +321,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -396,6 +396,7 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -412,7 +413,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -491,6 +491,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/x230t_12mb/config/libgfxinit_txtmode b/config/coreboot/x230t_12mb/config/libgfxinit_txtmode index 7133d30e..b161f781 100644 --- a/config/coreboot/x230t_12mb/config/libgfxinit_txtmode +++ b/config/coreboot/x230t_12mb/config/libgfxinit_txtmode @@ -274,6 +274,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -318,7 +319,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -394,6 +394,7 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -410,7 +411,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -487,6 +487,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/x230t_12mb/target.cfg b/config/coreboot/x230t_12mb/target.cfg index 6cbab731..595ad782 100644 --- a/config/coreboot/x230t_12mb/target.cfg +++ b/config/coreboot/x230t_12mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="ivybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/x230t_16mb/config/libgfxinit_corebootfb b/config/coreboot/x230t_16mb/config/libgfxinit_corebootfb index 84d1ee76..9a1dd06b 100644 --- a/config/coreboot/x230t_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/x230t_16mb/config/libgfxinit_corebootfb @@ -276,6 +276,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -320,7 +321,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -396,6 +396,7 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -412,7 +413,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -491,6 +491,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/x230t_16mb/config/libgfxinit_txtmode b/config/coreboot/x230t_16mb/config/libgfxinit_txtmode index ac1d0190..5a213187 100644 --- a/config/coreboot/x230t_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/x230t_16mb/config/libgfxinit_txtmode @@ -274,6 +274,7 @@ CONFIG_SMM_TSEG_SIZE=0x800000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SERIRQ_CONTINUOUS_MODE=y CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xf0000000 @@ -318,7 +319,6 @@ CONFIG_TSC_MONOTONIC_TIMER=y CONFIG_TSC_SYNC_MFENCE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 CONFIG_AP_STACK_SIZE=0x800 @@ -394,6 +394,7 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set CONFIG_H8_HAS_BAT_THRESHOLDS_IMPL=y +CONFIG_H8_HAS_WWAN_GPIO_DETECTION=y CONFIG_EC_LENOVO_PMH7=y # @@ -410,7 +411,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -487,6 +487,8 @@ CONFIG_USE_DDR3=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_CACHE_MRC_SETTINGS=y # CONFIG_MRC_SETTINGS_PROTECT is not set diff --git a/config/coreboot/x230t_16mb/target.cfg b/config/coreboot/x230t_16mb/target.cfg index 6cbab731..595ad782 100644 --- a/config/coreboot/x230t_16mb/target.cfg +++ b/config/coreboot/x230t_16mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" grub_scan_disk="ahci" vcfg="ivybridge" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/x2e_n150/config/fspgop b/config/coreboot/x2e_n150/config/fspgop new file mode 100644 index 00000000..6dad173c --- /dev/null +++ b/config/coreboot/x2e_n150/config/fspgop @@ -0,0 +1,846 @@ +# +# Automatically generated file; DO NOT EDIT. +# coreboot configuration +# + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_CBFS_PREFIX="fallback" +CONFIG_COMPILER_GCC=y +# CONFIG_COMPILER_LLVM_CLANG is not set +# CONFIG_ANY_TOOLCHAIN is not set +# CONFIG_CCACHE is not set +# CONFIG_LTO is not set +# CONFIG_IWYU is not set +# CONFIG_FMD_GENPARSER is not set +# CONFIG_UTIL_GENPARSER is not set +CONFIG_OPTION_BACKEND_NONE=y +# CONFIG_USE_CBFS_FILE_OPTION_BACKEND is not set +CONFIG_COMPRESS_RAMSTAGE_LZMA=y +# CONFIG_COMPRESS_RAMSTAGE_LZ4 is not set +CONFIG_SEPARATE_ROMSTAGE=y +CONFIG_INCLUDE_CONFIG_FILE=y +CONFIG_COLLECT_TIMESTAMPS=y +# CONFIG_TIMESTAMPS_ON_CONSOLE is not set +CONFIG_USE_BLOBS=y +# CONFIG_USE_AMD_BLOBS is not set +# CONFIG_USE_QC_BLOBS is not set +# CONFIG_COVERAGE is not set +# CONFIG_UBSAN is not set +CONFIG_HAVE_ASAN_IN_RAMSTAGE=y +# CONFIG_ASAN is not set +# CONFIG_NO_STAGE_CACHE is not set +CONFIG_TSEG_STAGE_CACHE=y +# CONFIG_UPDATE_IMAGE is not set +# CONFIG_BOOTSPLASH_IMAGE is not set + +# +# Software Bill Of Materials (SBOM) +# +# CONFIG_SBOM is not set +# end of Software Bill Of Materials (SBOM) +# end of General setup + +# +# Mainboard +# + +# +# Important: Run 'make distclean' before switching boards +# +# CONFIG_VENDOR_51NB is not set +# CONFIG_VENDOR_ACER is not set +# CONFIG_VENDOR_AMD is not set +# CONFIG_VENDOR_AOOSTAR is not set +# CONFIG_VENDOR_AOPEN is not set +# CONFIG_VENDOR_APPLE is not set +# CONFIG_VENDOR_ARM is not set +# CONFIG_VENDOR_ASROCK is not set +# CONFIG_VENDOR_ASUS is not set +# CONFIG_VENDOR_BIOSTAR is not set +# CONFIG_VENDOR_BOSTENTECH is not set +# CONFIG_VENDOR_BYTEDANCE is not set +# CONFIG_VENDOR_CAVIUM is not set +# CONFIG_VENDOR_CLEVO is not set +# CONFIG_VENDOR_COMPULAB is not set +# CONFIG_VENDOR_CWWK is not set +# CONFIG_VENDOR_DELL is not set +# CONFIG_VENDOR_EMULATION is not set +# CONFIG_VENDOR_ERYING is not set +# CONFIG_VENDOR_EXAMPLE is not set +# CONFIG_VENDOR_FACEBOOK is not set +# CONFIG_VENDOR_FOXCONN is not set +# CONFIG_VENDOR_FRAMEWORK is not set +# CONFIG_VENDOR_GETAC is not set +# CONFIG_VENDOR_GIGABYTE is not set +# CONFIG_VENDOR_GOOGLE is not set +# CONFIG_VENDOR_HARDKERNEL is not set +# CONFIG_VENDOR_HP is not set +# CONFIG_VENDOR_IBASE is not set +# CONFIG_VENDOR_IBM is not set +# CONFIG_VENDOR_INTEL is not set +# CONFIG_VENDOR_INVENTEC is not set +# CONFIG_VENDOR_KONTRON is not set +# CONFIG_VENDOR_LATTEPANDA is not set +# CONFIG_VENDOR_LENOVO is not set +# CONFIG_VENDOR_LIBRETREND is not set +# CONFIG_VENDOR_MITAC_COMPUTING is not set +# CONFIG_VENDOR_MSI is not set +# CONFIG_VENDOR_NOVACUSTOM is not set +# CONFIG_VENDOR_OCP is not set +# CONFIG_VENDOR_OPENCELLULAR is not set +# CONFIG_VENDOR_PACKARDBELL is not set +# CONFIG_VENDOR_PCENGINES is not set +# CONFIG_VENDOR_PINE64 is not set +# CONFIG_VENDOR_PORTWELL is not set +# CONFIG_VENDOR_PRODRIVE is not set +# CONFIG_VENDOR_PROTECTLI is not set +# CONFIG_VENDOR_PURISM is not set +# CONFIG_VENDOR_RAPTOR_CS is not set +# CONFIG_VENDOR_RAZER is not set +# CONFIG_VENDOR_RODA is not set +# CONFIG_VENDOR_SAMSUNG is not set +# CONFIG_VENDOR_SAPPHIRE is not set +# CONFIG_VENDOR_SIEMENS is not set +# CONFIG_VENDOR_SIFIVE is not set +# CONFIG_VENDOR_STARLABS is not set +# CONFIG_VENDOR_SUPERMICRO is not set +# CONFIG_VENDOR_SYSTEM76 is not set +# CONFIG_VENDOR_TI is not set +CONFIG_VENDOR_TOPTON=y +# CONFIG_VENDOR_UP is not set +# CONFIG_VENDOR_VIA is not set +CONFIG_BOARD_SPECIFIC_OPTIONS=y +CONFIG_MAINBOARD_PART_NUMBER="X2E_N150" +CONFIG_MAINBOARD_VERSION="1.0" +CONFIG_MAINBOARD_DIR="topton/adl" +CONFIG_DIMM_MAX=4 +CONFIG_DIMM_SPD_SIZE=512 +CONFIG_FMDFILE="" +# CONFIG_NO_POST is not set +CONFIG_MAINBOARD_VENDOR="TOPTON" +CONFIG_CBFS_SIZE=0xBEC000 +CONFIG_CONSOLE_SERIAL=y +CONFIG_MAX_CPUS=24 +# CONFIG_ONBOARD_VGA_IS_PRIMARY is not set +CONFIG_POST_DEVICE=y +CONFIG_POST_IO=y +CONFIG_UART_FOR_CONSOLE=0 +CONFIG_OVERRIDE_DEVICETREE="" +CONFIG_DEVICETREE="devicetree.cb" +# CONFIG_VBOOT is not set +# CONFIG_VGA_BIOS is not set +CONFIG_PCIEXP_ASPM=y +CONFIG_PCIEXP_L1_SUB_STATE=y +CONFIG_PCIEXP_CLK_PM=y +CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="TOPTON" +CONFIG_ECAM_MMCONF_BASE_ADDRESS=0xc0000000 +CONFIG_ECAM_MMCONF_BUS_NUMBER=256 +CONFIG_MEMLAYOUT_LD_FILE="src/arch/x86/memlayout.ld" +# CONFIG_FATAL_ASSERTS is not set +CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/data_twl.vbt" +# CONFIG_DISABLE_HECI1_AT_PRE_BOOT is not set +CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0x4000 +CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME="X2E_N150" +# CONFIG_CONSOLE_POST is not set +CONFIG_MAX_SOCKET=1 +CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 +CONFIG_USE_PM_ACPI_TIMER=y +CONFIG_DCACHE_RAM_BASE=0xfef00000 +CONFIG_DCACHE_RAM_SIZE=0xc0000 +CONFIG_C_ENV_BOOTBLOCK_SIZE=0x40000 +CONFIG_DCACHE_BSP_STACK_SIZE=0x88000 +CONFIG_MAX_ACPI_TABLE_SIZE_KB=144 +CONFIG_HAVE_INTEL_FIRMWARE=y +CONFIG_MRC_SETTINGS_CACHE_SIZE=0x10000 +CONFIG_DRIVERS_INTEL_WIFI=y +CONFIG_IFD_BIN_PATH="../../../config/ifd/x2e_n150/ifd" +CONFIG_ME_BIN_PATH="../../../vendorfiles/x2e_n150/me.bin" +CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x40000 +CONFIG_CARDBUS_PLUGIN_SUPPORT=y +CONFIG_SPI_FLASH_DONT_INCLUDE_ALL_DRIVERS=y +# CONFIG_USE_LEGACY_8254_TIMER is not set +# CONFIG_DEBUG_SMI is not set +CONFIG_HAVE_IFD_BIN=y +CONFIG_PS2K_EISAID="PNP0303" +CONFIG_PS2M_EISAID="PNP0F13" +CONFIG_TTYS0_BAUD=115200 +# CONFIG_SOC_INTEL_CSE_SEND_EOP_EARLY is not set +CONFIG_POWER_STATE_DEFAULT_ON_AFTER_FAILURE=y +CONFIG_D3COLD_SUPPORT=y +CONFIG_DRIVERS_UART_8250IO=y +CONFIG_PC_CMOS_BASE_PORT_BANK1=0x72 +CONFIG_FSP_TEMP_RAM_SIZE=0x20000 +CONFIG_HEAP_SIZE=0x100000 +CONFIG_EC_GPE_SCI=0x50 +CONFIG_EC_STARLABS_BATTERY_MODEL="Unknown" +CONFIG_EC_STARLABS_BATTERY_TYPE="LION" +CONFIG_EC_STARLABS_BATTERY_OEM="Unknown" +# CONFIG_TME_KEY_REGENERATION_ON_WARM_BOOT is not set +# CONFIG_BOARD_TOPTON_X2F_N100 is not set +CONFIG_BOARD_TOPTON_X2E_N150=y +CONFIG_BOARD_ROMSIZE_KB_16384=y +# CONFIG_COREBOOT_ROMSIZE_KB_256 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_512 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_1024 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_2048 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_4096 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_5120 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_6144 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_8192 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_10240 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_12288 is not set +CONFIG_COREBOOT_ROMSIZE_KB_16384=y +# CONFIG_COREBOOT_ROMSIZE_KB_24576 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_32768 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_65536 is not set +CONFIG_COREBOOT_ROMSIZE_KB=16384 +CONFIG_ROM_SIZE=0x01000000 +CONFIG_HAVE_POWER_STATE_AFTER_FAILURE=y +CONFIG_HAVE_POWER_STATE_PREVIOUS_AFTER_FAILURE=y +# CONFIG_POWER_STATE_OFF_AFTER_FAILURE is not set +CONFIG_POWER_STATE_ON_AFTER_FAILURE=y +# CONFIG_POWER_STATE_PREVIOUS_AFTER_FAILURE is not set +CONFIG_MAINBOARD_POWER_FAILURE_STATE=1 +# end of Mainboard + +# +# Chipset +# + +# +# SoC +# +CONFIG_CHIPSET_DEVICETREE="soc/intel/alderlake/chipset.cb" +CONFIG_FSP_M_FILE="../../../vendorfiles/alderlake-n/Fsp_M.fd" +CONFIG_FSP_S_FILE="../../../vendorfiles/alderlake-n/Fsp_S.fd" +CONFIG_CBFS_MCACHE_SIZE=0x4000 +CONFIG_ROMSTAGE_ADDR=0x2000000 +CONFIG_VERSTAGE_ADDR=0x2000000 +CONFIG_SMM_TSEG_SIZE=0x800000 +CONFIG_SMM_RESERVED_SIZE=0x200000 +CONFIG_SMM_MODULE_STACK_SIZE=0x800 +CONFIG_ACPI_BERT_SIZE=0x0 +CONFIG_DRIVERS_I2C_DESIGNWARE_CLOCK_MHZ=133 +CONFIG_VBOOT_HASH_BLOCK_SIZE=0x1000 +CONFIG_CPU_PT_ROM_MAP_GB=512 +CONFIG_PRERAM_CBFS_CACHE_SIZE=0x4000 +CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xe0000000 +CONFIG_ACPI_CPU_STRING="CP%02X" +CONFIG_STACK_SIZE=0x2000 +CONFIG_SOC_INTEL_ALDERLAKE=y +CONFIG_SOC_INTEL_TWINLAKE=y +CONFIG_SOC_INTEL_ALDERLAKE_PCH_N=y +CONFIG_SOC_INTEL_ALDERLAKE_TCSS_USB4_SUPPORT=y +CONFIG_ALDERLAKE_CAR_ENHANCED_NEM=y +CONFIG_EXT_BIOS_WIN_BASE=0xf8000000 +CONFIG_EXT_BIOS_WIN_SIZE=0x2000000 +CONFIG_IFD_CHIPSET="adl" +CONFIG_IED_REGION_SIZE=0x400000 +CONFIG_MAX_PCH_ROOT_PORTS=12 +CONFIG_MAX_CPU_ROOT_PORTS=0 +CONFIG_MAX_TBT_ROOT_PORTS=0 +CONFIG_MAX_ROOT_PORTS=12 +CONFIG_MAX_PCIE_CLOCK_SRC=5 +CONFIG_MAX_PCIE_CLOCK_REQ=5 +CONFIG_PCR_BASE_ADDRESS=0xfd000000 +CONFIG_CPU_BCLK_MHZ=100 +CONFIG_SOC_INTEL_PERFORMANCE_CORE_SCALE_FACTOR=127 +CONFIG_SOC_INTEL_EFFICIENT_CORE_SCALE_FACTOR=100 +CONFIG_SOC_INTEL_COMMON_BLOCK_GSPI_CLOCK_MHZ=120 +CONFIG_CPU_XTAL_HZ=38400000 +CONFIG_SOC_INTEL_UFS_CLK_FREQ_HZ=19200000 +CONFIG_SOC_INTEL_COMMON_BLOCK_GSPI_MAX=7 +CONFIG_SOC_INTEL_I2C_DEV_MAX=8 +# CONFIG_ENABLE_SATA_TEST_MODE is not set +CONFIG_SOC_INTEL_UART_DEV_MAX=7 +CONFIG_SOC_INTEL_COMMON_LPSS_UART_CLK_M_VAL=0x25a +CONFIG_SOC_INTEL_COMMON_LPSS_UART_CLK_N_VAL=0x7fff +CONFIG_FSP_TYPE_IOT=y +CONFIG_FSP_HEADER_PATH="3rdparty/fsp/AlderLakeFspBinPkg/IoT/AlderLakeN/Include/" +CONFIG_FSP_FD_PATH="3rdparty/fsp/AlderLakeFspBinPkg/IoT/AlderLakeN/Fsp.fd" +CONFIG_SOC_INTEL_COMMON_DEBUG_CONSENT=0 +CONFIG_DATA_BUS_WIDTH=128 +CONFIG_DIMMS_PER_CHANNEL=2 +CONFIG_MRC_CHANNEL_WIDTH=16 +CONFIG_ALDERLAKE_ENABLE_SOC_WORKAROUND=y +CONFIG_SI_DESC_REGION="SI_DESC" +CONFIG_SI_DESC_REGION_SZ=4096 +CONFIG_INTEL_GMA_BCLV_OFFSET=0xc8258 +CONFIG_INTEL_GMA_BCLV_WIDTH=32 +CONFIG_INTEL_GMA_BCLM_OFFSET=0xc8254 +CONFIG_INTEL_GMA_BCLM_WIDTH=32 +CONFIG_FSP_PUBLISH_MBP_HOB=y +# CONFIG_INCLUDE_HSPHY_IN_FMAP is not set +CONFIG_HSPHY_FW_MAX_SIZE=0x8000 +CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI_SLP_S0_FREQ_HZ=0x2005 +CONFIG_FSP_STATUS_GLOBAL_RESET=0x40000003 +CONFIG_MAX_HECI_DEVICES=6 +CONFIG_BOOTBLOCK_IN_CBFS=y +CONFIG_HAVE_PAM0_REGISTER=y +CONFIG_PCIEXP_COMMON_CLOCK=y +CONFIG_CPU_INTEL_NUM_FIT_ENTRIES=4 +CONFIG_SOC_INTEL_GFX_FRAMEBUFFER_OFFSET=0x0 +CONFIG_PCIE_LTR_MAX_SNOOP_LATENCY=0x1003 +CONFIG_PCIE_LTR_MAX_NO_SNOOP_LATENCY=0x1003 +CONFIG_SOC_PHYSICAL_ADDRESS_WIDTH=0 +# CONFIG_ALWAYS_ALLOW_ABOVE_4G_ALLOCATION is not set +CONFIG_FSP_T_LOCATION=0xfffe0000 +CONFIG_INTEL_TME=y +CONFIG_SOC_INTEL_COMMON_BLOCK_P2SB=y +CONFIG_FIXED_SMBUS_IO_BASE=0xefa0 +CONFIG_CBFS_CACHE_ALIGN=8 +CONFIG_SOC_INTEL_COMMON=y + +# +# Intel SoC Common Code for IP blocks +# +CONFIG_SOC_INTEL_COMMON_BLOCK=y +CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI=y +CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI_GPIO=y +CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI_LPIT=y +CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI_PEP=y +CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI_PEP_LPM_REQ=y +CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI_CPPC=y +CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI_CPU_HYBRID=y +CONFIG_SOC_INTEL_UFS_OCP_TIMER_DISABLE=y +CONFIG_SOC_INTEL_UFS_LTR_DISQUALIFY=y +CONFIG_SOC_INTEL_COMMON_BLOCK_ASPM=y +CONFIG_SOC_INTEL_COMMON_BLOCK_CHIP_CONFIG=y +CONFIG_SOC_INTEL_COMMON_BLOCK_CNVI=y +CONFIG_SOC_INTEL_COMMON_BLOCK_CPU=y +CONFIG_SOC_INTEL_COMMON_BLOCK_CPU_MPINIT=y +CONFIG_USE_FSP_FEATURE_PROGRAM_ON_APS=y +# CONFIG_USE_COREBOOT_MP_INIT is not set +CONFIG_SOC_INTEL_COMMON_BLOCK_CPU_SMMRELOCATE=y +CONFIG_SOC_INTEL_COMMON_BLOCK_CAR=y +CONFIG_INTEL_CAR_NEM_ENHANCED=y +CONFIG_INTEL_CAR_ENEM_USE_EFFECTIVE_WAY_SIZE=y +CONFIG_CAR_HAS_SF_MASKS=y +CONFIG_COS_MAPPED_TO_MSB=y +CONFIG_CAR_HAS_L3_PROTECTED_WAYS=y +# CONFIG_USE_INTEL_FSP_MP_INIT is not set +CONFIG_USE_INTEL_FSP_TO_CALL_COREBOOT_PUBLISH_MP_PPI=y +CONFIG_CPU_SUPPORTS_INTEL_TME=y +CONFIG_CPU_SUPPORTS_PM_TIMER_EMULATION=y +CONFIG_HAVE_HYPERTHREADING=y +CONFIG_FSP_HYPERTHREADING=y +# CONFIG_INTEL_KEYLOCKER is not set +CONFIG_SOC_INTEL_COMMON_BLOCK_CSE=y +CONFIG_SOC_INTEL_COMMON_BLOCK_HECI1_DISABLE_USING_PMC_IPC=y +CONFIG_SOC_INTEL_CSE_SEND_EOP_LATE=y +CONFIG_SOC_INTEL_CSE_FMAP_NAME="SI_ME" +CONFIG_SOC_INTEL_CSE_RW_CBFS_NAME="me_rw" +CONFIG_SOC_INTEL_CSE_RW_VERSION_CBFS_NAME="me_rw.version" +CONFIG_SOC_INTEL_CSE_RW_FILE="" +CONFIG_SOC_INTEL_CSE_RW_VERSION="" +CONFIG_SOC_INTEL_CSE_SET_EOP=y +CONFIG_SOC_INTEL_CSE_IOM_CBFS_NAME="cse_iom" +CONFIG_SOC_INTEL_CSE_IOM_CBFS_FILE="" +CONFIG_SOC_INTEL_CSE_NPHY_CBFS_NAME="cse_nphy" +CONFIG_SOC_INTEL_CSE_NPHY_CBFS_FILE="" +CONFIG_SOC_INTEL_CSE_HAVE_SPEC_SUPPORT=y +CONFIG_SOC_INTEL_COMMON_BLOCK_ME_SPEC_16=y +CONFIG_ME_SPEC=16 +CONFIG_CSE_RESET_CLEAR_EC_AP_IDLE_FLAG=y +CONFIG_SOC_INTEL_COMMON_BLOCK_DSP=y +CONFIG_SOC_INTEL_COMMON_BLOCK_DTT=y +CONFIG_SOC_INTEL_COMMON_BLOCK_FAST_SPI=y +CONFIG_FAST_SPI_DISABLE_WRITE_STATUS=y +CONFIG_FAST_SPI_SUPPORTS_EXT_BIOS_WINDOW=y +CONFIG_SOC_INTEL_COMMON_BLOCK_GPIO=y +CONFIG_SOC_INTEL_COMMON_BLOCK_GPIO_ITSS_POL_CFG=y +CONFIG_SOC_INTEL_COMMON_BLOCK_GPIO_DUAL_ROUTE_SUPPORT=y +CONFIG_SOC_INTEL_COMMON_BLOCK_GPIO_LOCK_USING_SBI=y +CONFIG_SOC_INTEL_COMMON_BLOCK_GPMR=y +CONFIG_SOC_INTEL_COMMON_BLOCK_GRAPHICS=y +# CONFIG_SOC_INTEL_DISABLE_IGD is not set +CONFIG_SOC_INTEL_COMMON_BLOCK_GSPI=y +CONFIG_SOC_INTEL_COMMON_BLOCK_GSPI_VERSION_2=y +CONFIG_SOC_INTEL_COMMON_BLOCK_HDA=y +CONFIG_SOC_INTEL_COMMON_BLOCK_HDA_VERB=y +CONFIG_SOC_INTEL_COMMON_BLOCK_I2C=y +CONFIG_SOC_INTEL_COMMON_BLOCK_IPU=y +CONFIG_SOC_INTEL_COMMON_BLOCK_IRQ=y +CONFIG_SOC_INTEL_COMMON_BLOCK_ITSS=y +CONFIG_SOC_INTEL_COMMON_BLOCK_LPC=y +CONFIG_SOC_INTEL_COMMON_BLOCK_LPC_MIRROR_TO_GPMR=y +CONFIG_SOC_INTEL_COMMON_BLOCK_LPSS=y +CONFIG_SOC_INTEL_COMMON_BLOCK_MEMINIT=y +CONFIG_SOC_INTEL_COMMON_BLOCK_OC_WDT=y +# CONFIG_SOC_INTEL_COMMON_OC_WDT_ENABLE is not set +CONFIG_SOC_INTEL_COMMON_BLOCK_BASE_P2SB=y +CONFIG_SOC_INTEL_COMMON_BLOCK_PCIE=y +CONFIG_SOC_INTEL_COMMON_BLOCK_PCIE_RTD3=y +CONFIG_SOC_INTEL_COMMON_BLOCK_PCR=y +CONFIG_SOC_INTEL_COMMON_BLOCK_PMC=y +CONFIG_SOC_INTEL_MEM_MAPPED_PM_CONFIGURATION=y +CONFIG_SOC_INTEL_COMMON_BLOCK_PMC_EPOC=y +CONFIG_PMC_IPC_ACPI_INTERFACE=y +CONFIG_PMC_GLOBAL_RESET_ENABLE_LOCK=y +CONFIG_SOC_INTEL_COMMON_BLOCK_POWER_LIMIT=y +CONFIG_SOC_INTEL_COMMON_BLOCK_RTC=y +CONFIG_SOC_INTEL_COMMON_BLOCK_SATA=y +CONFIG_SOC_INTEL_COMMON_BLOCK_SCS=y +CONFIG_SOC_INTEL_COMMON_BLOCK_SMBUS=y +CONFIG_SOC_INTEL_COMMON_BLOCK_TCO=y +CONFIG_SOC_INTEL_COMMON_BLOCK_TCO_ENABLE_THROUGH_SMBUS=y +CONFIG_SOC_INTEL_COMMON_BLOCK_SMM=y +CONFIG_SOC_INTEL_COMMON_BLOCK_SMM_IO_TRAP=y +CONFIG_SOC_INTEL_COMMON_BLOCK_SMM_TCO_ENABLE=y +CONFIG_SOC_INTEL_COMMON_BLOCK_SMM_S5_DELAY_MS=0 +CONFIG_SOC_INTEL_COMMON_BLOCK_SPI=y +CONFIG_SOC_INTEL_COMMON_BLOCK_SA=y +CONFIG_HAVE_CAPID_A_REGISTER=y +CONFIG_HAVE_BDSM_BGSM_REGISTER=y +CONFIG_SOC_INTEL_COMMON_BLOCK_TCSS=y +# CONFIG_TCSS_HAS_USBC_OPS is not set +CONFIG_SOC_INTEL_COMMON_BLOCK_THERMAL=y +CONFIG_SOC_INTEL_COMMON_BLOCK_THERMAL_BEHIND_PMC=y +CONFIG_SOC_INTEL_COMMON_BLOCK_TIMER=y +CONFIG_SOC_INTEL_COMMON_BLOCK_UART=y +CONFIG_SOC_INTEL_COMMON_BLOCK_USB4=y +CONFIG_SOC_INTEL_COMMON_BLOCK_USB4_PCIE=y +CONFIG_SOC_INTEL_COMMON_BLOCK_USB4_XHCI=y +CONFIG_DEFAULT_SOFTWARE_CONNECTION_MANAGER=y +# CONFIG_FIRMWARE_CONNECTION_MANAGER is not set +CONFIG_SOFTWARE_CONNECTION_MANAGER=y +CONFIG_SOC_INTEL_COMMON_BLOCK_VTD=y +# CONFIG_ENABLE_EARLY_DMA_PROTECTION is not set +CONFIG_SOC_INTEL_COMMON_BLOCK_XDCI=y +CONFIG_SOC_INTEL_COMMON_BLOCK_XHCI=y +CONFIG_SOC_INTEL_COMMON_BLOCK_XHCI_ELOG=y + +# +# Intel SoC Common PCH Code +# +CONFIG_SOC_INTEL_COMMON_PCH_CLIENT=y +CONFIG_SOC_INTEL_COMMON_PCH_BASE=y +CONFIG_SOC_INTEL_COMMON_PCH_LOCKDOWN=y +CONFIG_PCH_SPECIFIC_BASE_OPTIONS=y +CONFIG_PCH_SPECIFIC_DISCRETE_OPTIONS=y +CONFIG_PCH_SPECIFIC_CLIENT_OPTIONS=y + +# +# Intel SoC Common coreboot stages and non-IP blocks +# +CONFIG_SOC_INTEL_COMMON_BASECODE=y +CONFIG_SOC_INTEL_COMMON_BASECODE_RAMTOP=y +CONFIG_SOC_INTEL_COMMON_RESET=y +CONFIG_SOC_INTEL_COMMON_ACPI_WAKE_SOURCE=y +CONFIG_PAVP=y +# CONFIG_SOC_INTEL_DEBUG_CONSENT is not set +CONFIG_HAVE_INTEL_COMPLIANCE_TEST_MODE=y +# CONFIG_SOC_INTEL_COMPLIANCE_TEST_MODE is not set +CONFIG_HAS_INTEL_CPU_ROOT_PORTS=y + +# +# CPU +# +CONFIG_CPU_INTEL_FIRMWARE_INTERFACE_TABLE=y +CONFIG_CPU_INTEL_COMMON=y +CONFIG_ENABLE_VMX=y +CONFIG_SET_IA32_FC_LOCK_BIT=y +CONFIG_SET_MSR_AESNI_LOCK_BIT=y +CONFIG_CPU_INTEL_COMMON_VOLTAGE=y +CONFIG_CPU_INTEL_COMMON_SMM=y +CONFIG_PARALLEL_MP=y +CONFIG_PARALLEL_MP_AP_WORK=y +CONFIG_XAPIC_ONLY=y +# CONFIG_X2APIC_ONLY is not set +# CONFIG_X2APIC_RUNTIME is not set +# CONFIG_X2APIC_LATE_WORKAROUND is not set +CONFIG_UDELAY_TSC=y +CONFIG_TSC_MONOTONIC_TIMER=y +CONFIG_HAVE_SMI_HANDLER=y +CONFIG_SMM_TSEG=y +CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 +CONFIG_AP_STACK_SIZE=0x800 +CONFIG_SMP=y +CONFIG_SSE=y +CONFIG_SSE2=y +CONFIG_SUPPORT_CPU_UCODE_IN_CBFS=y +CONFIG_USE_CPU_MICROCODE_CBFS_BINS=y +CONFIG_CPU_MICROCODE_CBFS_DEFAULT_BINS=y +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS is not set +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER is not set +# CONFIG_CPU_MICROCODE_CBFS_NONE is not set + +# +# Northbridge +# + +# +# Southbridge +# +# CONFIG_PCIEXP_HOTPLUG is not set +CONFIG_INTEL_DESCRIPTOR_MODE_REQUIRED=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMBUS=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_PIRQ_ACPI_GEN=y +CONFIG_INTEL_DESCRIPTOR_MODE_CAPABLE=y +# CONFIG_VALIDATE_INTEL_DESCRIPTOR is not set +CONFIG_FIXED_RCBA_MMIO_BASE=0xfed1c000 +CONFIG_RCBA_LENGTH=0x4000 + +# +# Super I/O +# +CONFIG_SUPERIO_ITE_COMMON_PRE_RAM=y +CONFIG_SUPERIO_ITE_ENV_CTRL=y +CONFIG_SUPERIO_ITE_ENV_CTRL_FAN16_CONFIG=y +CONFIG_SUPERIO_ITE_ENV_CTRL_8BIT_PWM=y +CONFIG_SUPERIO_ITE_ENV_CTRL_PWM_FREQ2=y +CONFIG_SUPERIO_ITE_ENV_CTRL_EXT_ANY_TMPIN=y +CONFIG_SUPERIO_ITE_IT8625E=y + +# +# Embedded Controllers +# + +# +# Intel Firmware +# +CONFIG_HAVE_ME_BIN=y +# CONFIG_STITCH_ME_BIN is not set +# CONFIG_ME_REGION_ALLOW_CPU_READ_ACCESS is not set +# CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION is not set +# CONFIG_LOCK_MANAGEMENT_ENGINE is not set +CONFIG_UNLOCK_FLASH_REGIONS=y +CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 +CONFIG_UDK_BASE=y +CONFIG_UDK_202111_BINDING=y +CONFIG_UDK_2013_VERSION=2013 +CONFIG_UDK_2017_VERSION=2017 +CONFIG_UDK_202005_VERSION=202005 +CONFIG_UDK_202111_VERSION=202111 +CONFIG_UDK_202302_VERSION=202302 +CONFIG_UDK_202305_VERSION=202305 +CONFIG_UDK_VERSION=202111 +CONFIG_ARCH_X86=y +CONFIG_ARCH_BOOTBLOCK_X86_32=y +CONFIG_ARCH_VERSTAGE_X86_32=y +CONFIG_ARCH_ROMSTAGE_X86_32=y +CONFIG_ARCH_POSTCAR_X86_32=y +CONFIG_ARCH_RAMSTAGE_X86_32=y +CONFIG_ARCH_ALL_STAGES_X86_32=y +CONFIG_RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT=y +CONFIG_X86_CUSTOM_BOOTMEDIA=y +CONFIG_POSTRAM_CBFS_CACHE_IN_BSS=y +CONFIG_RAMSTAGE_CBFS_CACHE_SIZE=0x4000 +CONFIG_PC80_SYSTEM=y +CONFIG_POSTCAR_STAGE=y +CONFIG_BOOTBLOCK_SIMPLE=y +# CONFIG_BOOTBLOCK_NORMAL is not set +CONFIG_COLLECT_TIMESTAMPS_TSC=y +CONFIG_IDT_IN_EVERY_STAGE=y +CONFIG_HAVE_CF9_RESET=y +CONFIG_DEBUG_HW_BREAKPOINTS=y +CONFIG_DEBUG_HW_BREAKPOINTS_IN_ALL_STAGES=y +CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS=y +CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES=y +# CONFIG_DUMP_SMBIOS_TYPE17 is not set +CONFIG_X86_BOOTBLOCK_EXTRA_PROGRAM_SZ=0 +CONFIG_DEFAULT_EBDA_LOWMEM=0x100000 +CONFIG_DEFAULT_EBDA_SEGMENT=0xF600 +CONFIG_DEFAULT_EBDA_SIZE=0x400 +# end of Chipset + +# +# Devices +# +CONFIG_HAVE_LINEAR_FRAMEBUFFER=y +CONFIG_HAVE_FSP_GOP=y +# CONFIG_VGA_ROM_RUN is not set +CONFIG_RUN_FSP_GOP=y +# CONFIG_NO_GFX_INIT is not set +CONFIG_NO_EARLY_GFX_INIT=y + +# +# Display +# +CONFIG_GENERIC_LINEAR_FRAMEBUFFER=y +CONFIG_LINEAR_FRAMEBUFFER=y +# CONFIG_BOOTSPLASH is not set +CONFIG_DEFAULT_SCREEN_ROTATION_INT=0 +# end of Display + +CONFIG_PCI=y +CONFIG_ECAM_MMCONF_SUPPORT=y +CONFIG_PCIX_PLUGIN_SUPPORT=y +CONFIG_AZALIA_HDA_CODEC_SUPPORT=y +CONFIG_PCIEXP_PLUGIN_SUPPORT=y +CONFIG_ECAM_MMCONF_LENGTH=0x10000000 +CONFIG_PCI_ALLOW_BUS_MASTER=y +CONFIG_PCI_SET_BUS_MASTER_PCI_BRIDGES=y +CONFIG_PCI_ALLOW_BUS_MASTER_ANY_DEVICE=y +# CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS is not set +# CONFIG_PCIEXP_LANE_ERR_STAT_CLEAR is not set +# CONFIG_EARLY_PCI_BRIDGE is not set +CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 +CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 +CONFIG_INTEL_GMA_HAVE_VBT=y +CONFIG_INTEL_GMA_ADD_VBT=y +# CONFIG_SOFTWARE_I2C is not set +CONFIG_I2C_TRANSFER_TIMEOUT_US=500000 +CONFIG_RESOURCE_ALLOCATION_TOP_DOWN=y +# end of Devices + +# +# Generic Drivers +# +CONFIG_CRB_TPM=y +CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set +# CONFIG_ELOG is not set +CONFIG_CACHE_MRC_SETTINGS=y +CONFIG_MRC_SETTINGS_PROTECT=y +# CONFIG_DRIVERS_OPTION_CFR is not set +# CONFIG_SMMSTORE is not set +CONFIG_SPI_FLASH=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY=y +# CONFIG_SPI_FLASH_NO_FAST_READ is not set +CONFIG_DRIVERS_UART=y +# CONFIG_DRIVERS_UART_OXPCIE is not set +# CONFIG_VPD is not set +# CONFIG_DRIVERS_EMULATION_QEMU_FW_CFG is not set +# CONFIG_DRIVERS_GENERIC_CBFS_SERIAL is not set +# CONFIG_DRIVERS_GENERIC_CBFS_UUID is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9750 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9755 is not set +# CONFIG_DRIVERS_GENESYSLOGIC_GL9763E is not set +CONFIG_DRIVERS_I2C_DESIGNWARE=y +# CONFIG_DRIVERS_I2C_MAX98396 is not set +# CONFIG_FSP_USE_REPO is not set +# CONFIG_DISPLAY_HOBS is not set +# CONFIG_DISPLAY_UPD_DATA is not set +CONFIG_PLATFORM_USES_FSP2_0=y +CONFIG_PLATFORM_USES_FSP2_1=y +CONFIG_PLATFORM_USES_FSP2_2=y +CONFIG_PLATFORM_USES_FSP2_X86_32=y +CONFIG_HAVE_INTEL_FSP_REPO=y +CONFIG_ADD_FSP_BINARIES=y +CONFIG_FSP_S_CBFS="fsps.bin" +CONFIG_FSP_M_CBFS="fspm.bin" +# CONFIG_FSP_FULL_FD is not set +CONFIG_FSP_T_RESERVED_SIZE=0x0 +CONFIG_FSP_M_XIP=y +CONFIG_FSP_USES_CB_STACK=y +CONFIG_SOC_INTEL_COMMON_FSP_RESET=y +CONFIG_FSPS_HAS_ARCH_UPD=y +CONFIG_FSPS_USE_MULTI_PHASE_INIT=y +CONFIG_FSP_USES_CB_DEBUG_EVENT_HANDLER=y +# CONFIG_DISPLAY_FSP_TIMESTAMPS is not set +CONFIG_FSP_ENABLE_SERIAL_DEBUG=y +CONFIG_FSP_MULTIPHASE_SI_INIT_RETURN_BROKEN=y +# CONFIG_BUILDING_WITH_DEBUG_FSP is not set +CONFIG_INTEL_GMA_ACPI=y +CONFIG_VBT_CBFS_COMPRESSION_LZMA=y +# CONFIG_VBT_CBFS_COMPRESSION_LZ4 is not set +# CONFIG_VBT_CBFS_COMPRESSION_NONE is not set +CONFIG_VBT_CBFS_COMPRESSION_ALGORITHM="lzma" +CONFIG_INTEL_GMA_OPREGION_2_1=y +CONFIG_INTEL_GMA_VERSION_2=y +CONFIG_HAVE_INTEL_PTT=y +# CONFIG_DRIVERS_NXP_UWB_SR1XX is not set +# CONFIG_DRIVERS_PS2_KEYBOARD is not set +CONFIG_DRIVERS_MC146818=y +CONFIG_USE_PC_CMOS_ALTCENTURY=y +CONFIG_PC_CMOS_BASE_PORT_BANK0=0x70 +# CONFIG_DRIVERS_SIL_3114 is not set +CONFIG_DRIVERS_USB_ACPI=y +CONFIG_DRIVERS_WIFI_GENERIC=y +CONFIG_DRIVERS_MTK_WIFI=y +CONFIG_MP_SERVICES_PPI=y +CONFIG_MP_SERVICES_PPI_V2=y +# end of Generic Drivers + +# +# Security +# + +# +# CBFS verification +# +# CONFIG_CBFS_VERIFICATION is not set +# end of CBFS verification + +# +# Verified Boot (vboot) +# +CONFIG_VBOOT_LIB=y +# end of Verified Boot (vboot) + +# +# Trusted Platform Module +# +CONFIG_NO_TPM=y +# CONFIG_TPM1 is not set +# CONFIG_TPM2 is not set +CONFIG_PCR_BOOT_MODE=1 +CONFIG_PCR_HWID=1 +CONFIG_PCR_SRTM=2 +CONFIG_PCR_FW_VER=10 +CONFIG_PCR_RUNTIME_DATA=3 +# end of Trusted Platform Module + +# +# Memory initialization +# +CONFIG_PLATFORM_HAS_DRAM_CLEAR=y +# CONFIG_SECURITY_CLEAR_DRAM_ON_REGULAR_BOOT is not set +# end of Memory initialization + +CONFIG_INTEL_TXT_LIB=y +# CONFIG_STM is not set +# CONFIG_INTEL_CBNT_SUPPORT is not set +CONFIG_BOOTMEDIA_LOCK_NONE=y +# CONFIG_BOOTMEDIA_LOCK_CONTROLLER is not set +# CONFIG_BOOTMEDIA_LOCK_CHIP is not set +# CONFIG_BOOTMEDIA_SMM_BWP is not set +# end of Security + +CONFIG_ACPI_HAVE_PCAT_8259=y +CONFIG_ACPI_INTEL_HARDWARE_SLEEP_VALUES=y +CONFIG_ACPI_SOC_NVS=y +CONFIG_ACPI_CUSTOM_MADT=y +CONFIG_ACPI_COMMON_MADT_IOAPIC=y +CONFIG_HAVE_ACPI_TABLES=y +CONFIG_ACPI_LPIT=y +CONFIG_BOOT_DEVICE_SPI_FLASH=y +CONFIG_BOOT_DEVICE_MEMORY_MAPPED=y +CONFIG_BOOT_DEVICE_SUPPORTS_WRITES=y +CONFIG_RTC=y + +# +# Console +# +CONFIG_BOOTBLOCK_CONSOLE=y +CONFIG_POSTCAR_CONSOLE=y +CONFIG_SQUELCH_EARLY_SMP=y + +# +# I/O mapped, 8250-compatible +# +CONFIG_TTYS0_BASE=0x3f8 + +# +# Serial port base address = 0x3f8 +# +# CONFIG_CONSOLE_SERIAL_921600 is not set +# CONFIG_CONSOLE_SERIAL_460800 is not set +# CONFIG_CONSOLE_SERIAL_230400 is not set +CONFIG_CONSOLE_SERIAL_115200=y +# CONFIG_CONSOLE_SERIAL_57600 is not set +# CONFIG_CONSOLE_SERIAL_38400 is not set +# CONFIG_CONSOLE_SERIAL_19200 is not set +# CONFIG_CONSOLE_SERIAL_9600 is not set +CONFIG_TTYS0_LCS=3 +# CONFIG_SPKMODEM is not set +# CONFIG_CONSOLE_NE2K is not set +CONFIG_CONSOLE_CBMEM=y +# CONFIG_CONSOLE_SPI_FLASH is not set +# CONFIG_CONSOLE_I2C_SMBUS is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL_7=y +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_6 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_5 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_4 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_2 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_1 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL=7 +CONFIG_CONSOLE_USE_LOGLEVEL_PREFIX=y +CONFIG_CONSOLE_USE_ANSI_ESCAPES=y +# CONFIG_CMOS_POST is not set +CONFIG_POST_DEVICE_NONE=y +# CONFIG_POST_DEVICE_LPC is not set +# CONFIG_POST_DEVICE_PCI_PCIE is not set +CONFIG_POST_IO_PORT=0x80 +CONFIG_HWBASE_DEBUG_CB=y +# end of Console + +CONFIG_ACPI_S1_NOT_SUPPORTED=y +CONFIG_HAVE_ACPI_RESUME=y +CONFIG_RESUME_PATH_SAME_AS_BOOT=y +CONFIG_HAVE_MONOTONIC_TIMER=y +CONFIG_IOAPIC=y + +# +# System tables +# +CONFIG_GENERATE_SMBIOS_TABLES=y +CONFIG_BIOS_VENDOR="coreboot" +CONFIG_MAINBOARD_SERIAL_NUMBER="123456789" +# end of System tables + +# +# Payload +# +CONFIG_PAYLOAD_NONE=y +# end of Payload + +# +# Debugging +# + +# +# CPU Debug Settings +# +# CONFIG_DISPLAY_MTRRS is not set + +# +# Vendorcode Debug Settings +# + +# +# BLOB Debug Settings +# +# CONFIG_DISPLAY_FSP_CALLS_AND_STATUS is not set +# CONFIG_DISPLAY_FSP_HEADER is not set +# CONFIG_VERIFY_HOBS is not set +CONFIG_DISPLAY_FSP_VERSION_INFO=y +# CONFIG_ENABLE_FSP_ERROR_INFO is not set +CONFIG_HAVE_GPIO_SNAPSHOT_VERIFY_SUPPORT=y +# CONFIG_CHECK_GPIO_CONFIG_CHANGES is not set + +# +# General Debug Settings +# +# CONFIG_GDB_STUB is not set +CONFIG_HAVE_DEBUG_GPIO=y +# CONFIG_DEBUG_GPIO is not set +# 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 +# CONFIG_DEBUG_CONSOLE_INIT is not set +# CONFIG_DEBUG_SPI_FLASH is not set +# CONFIG_DEBUG_BOOT_STATE is not set +# CONFIG_DEBUG_ADA_CODE is not set +CONFIG_HAVE_EM100_SUPPORT=y +# CONFIG_EM100 is not set +# CONFIG_DEBUG_ACPICA_COMPATIBLE is not set +# end of Debugging + +CONFIG_DECOMPRESS_OFAST=y + +# +# Boot Logo Configuration +# +# CONFIG_BMP_LOGO is not set +# end of Boot Logo Configuration + +CONFIG_WARNINGS_ARE_ERRORS=y +CONFIG_MAX_REBOOT_CNT=3 +CONFIG_RELOCATABLE_MODULES=y +CONFIG_GENERIC_GPIO_LIB=y +CONFIG_HAVE_BOOTBLOCK=y +CONFIG_HAVE_ROMSTAGE=y +CONFIG_HAVE_RAMSTAGE=y diff --git a/config/coreboot/x2e_n150/target.cfg b/config/coreboot/x2e_n150/target.cfg new file mode 100644 index 00000000..f2dc73e0 --- /dev/null +++ b/config/coreboot/x2e_n150/target.cfg @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +tree="default" +xarch="i386-elf" +payload_seabios="y" +payload_grub="y" +payload_memtest="y" +grub_scan_disk="nvme ahci" +grubtree="xhci_nvme" +vcfg="x2e_n150" +build_depend="seabios/default grub/xhci_nvme memtest86plus u-boot/amd64coreboot" +IFD_platform="adl" +payload_uboot="amd64" diff --git a/config/coreboot/x301_16mb/config/libgfxinit_corebootfb b/config/coreboot/x301_16mb/config/libgfxinit_corebootfb index 96df38ac..7fe2f1d7 100644 --- a/config/coreboot/x301_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/x301_16mb/config/libgfxinit_corebootfb @@ -271,6 +271,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -314,7 +315,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -387,7 +387,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -467,6 +466,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_DRIVERS_LENOVO_WACOM=y CONFIG_DIGITIZER_AUTODETECT=y diff --git a/config/coreboot/x301_16mb/config/libgfxinit_txtmode b/config/coreboot/x301_16mb/config/libgfxinit_txtmode index e88d3c1a..e2f8167f 100644 --- a/config/coreboot/x301_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/x301_16mb/config/libgfxinit_txtmode @@ -269,6 +269,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -312,7 +313,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -385,7 +385,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -463,6 +462,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_DRIVERS_LENOVO_WACOM=y CONFIG_DIGITIZER_AUTODETECT=y diff --git a/config/coreboot/x301_16mb/target.cfg b/config/coreboot/x301_16mb/target.cfg index 4d4a4c25..31e9f759 100644 --- a/config/coreboot/x301_16mb/target.cfg +++ b/config/coreboot/x301_16mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" release="n" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/x301_4mb/config/libgfxinit_corebootfb b/config/coreboot/x301_4mb/config/libgfxinit_corebootfb index e33fa425..d1a80ea2 100644 --- a/config/coreboot/x301_4mb/config/libgfxinit_corebootfb +++ b/config/coreboot/x301_4mb/config/libgfxinit_corebootfb @@ -271,6 +271,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -314,7 +315,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -387,7 +387,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -467,6 +466,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_DRIVERS_LENOVO_WACOM=y CONFIG_DIGITIZER_AUTODETECT=y diff --git a/config/coreboot/x301_4mb/config/libgfxinit_txtmode b/config/coreboot/x301_4mb/config/libgfxinit_txtmode index c14ced63..4243d075 100644 --- a/config/coreboot/x301_4mb/config/libgfxinit_txtmode +++ b/config/coreboot/x301_4mb/config/libgfxinit_txtmode @@ -269,6 +269,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -312,7 +313,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -385,7 +385,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -463,6 +462,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_DRIVERS_LENOVO_WACOM=y CONFIG_DIGITIZER_AUTODETECT=y diff --git a/config/coreboot/x301_4mb/target.cfg b/config/coreboot/x301_4mb/target.cfg index 4d4a4c25..31e9f759 100644 --- a/config/coreboot/x301_4mb/target.cfg +++ b/config/coreboot/x301_4mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" release="n" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/x301_8mb/config/libgfxinit_corebootfb b/config/coreboot/x301_8mb/config/libgfxinit_corebootfb index bdc10d75..3271d115 100644 --- a/config/coreboot/x301_8mb/config/libgfxinit_corebootfb +++ b/config/coreboot/x301_8mb/config/libgfxinit_corebootfb @@ -271,6 +271,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -314,7 +315,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -387,7 +387,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -467,6 +466,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_DRIVERS_LENOVO_WACOM=y CONFIG_DIGITIZER_AUTODETECT=y diff --git a/config/coreboot/x301_8mb/config/libgfxinit_txtmode b/config/coreboot/x301_8mb/config/libgfxinit_txtmode index 84f914cf..432ef75e 100644 --- a/config/coreboot/x301_8mb/config/libgfxinit_txtmode +++ b/config/coreboot/x301_8mb/config/libgfxinit_txtmode @@ -269,6 +269,7 @@ CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 # CONFIG_USE_X86_64_SUPPORT is not set +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -312,7 +313,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -385,7 +385,6 @@ CONFIG_HAVE_GBE_BIN=y # CONFIG_LOCK_MANAGEMENT_ENGINE is not set CONFIG_UNLOCK_FLASH_REGIONS=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -463,6 +462,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_DRIVERS_LENOVO_WACOM=y CONFIG_DIGITIZER_AUTODETECT=y diff --git a/config/coreboot/x301_8mb/target.cfg b/config/coreboot/x301_8mb/target.cfg index 4d4a4c25..31e9f759 100644 --- a/config/coreboot/x301_8mb/target.cfg +++ b/config/coreboot/x301_8mb/target.cfg @@ -7,4 +7,4 @@ payload_grub="y" payload_memtest="y" release="n" grub_scan_disk="ahci" -payload_uboot_amd64="y" +payload_uboot="amd64" diff --git a/config/coreboot/x60/config/libgfxinit_corebootfb b/config/coreboot/x60/config/libgfxinit_corebootfb index dcef9476..e2c15f7e 100644 --- a/config/coreboot/x60/config/libgfxinit_corebootfb +++ b/config/coreboot/x60/config/libgfxinit_corebootfb @@ -265,6 +265,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -312,7 +313,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -377,9 +377,10 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_FLASH_LEDS_ON_DEATH is not set # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -458,6 +459,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_DRIVERS_LENOVO_WACOM=y CONFIG_DIGITIZER_AUTODETECT=y diff --git a/config/coreboot/x60/config/libgfxinit_txtmode b/config/coreboot/x60/config/libgfxinit_txtmode index 9ba1af3d..3163fda6 100644 --- a/config/coreboot/x60/config/libgfxinit_txtmode +++ b/config/coreboot/x60/config/libgfxinit_txtmode @@ -265,6 +265,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -312,7 +313,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -377,9 +377,10 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_FLASH_LEDS_ON_DEATH is not set # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -456,6 +457,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_DRIVERS_LENOVO_WACOM=y CONFIG_DIGITIZER_AUTODETECT=y diff --git a/config/coreboot/x60/target.cfg b/config/coreboot/x60/target.cfg index c1e3a3c6..f41e3fe9 100644 --- a/config/coreboot/x60/target.cfg +++ b/config/coreboot/x60/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" grub_scan_disk="ahci" build_depend="seabios/default grub/default u-boot/i386coreboot" -payload_uboot_i386="y" +payload_uboot="i386" diff --git a/config/coreboot/x60_16mb/config/libgfxinit_corebootfb b/config/coreboot/x60_16mb/config/libgfxinit_corebootfb index 8f2ca894..92a46efc 100644 --- a/config/coreboot/x60_16mb/config/libgfxinit_corebootfb +++ b/config/coreboot/x60_16mb/config/libgfxinit_corebootfb @@ -265,6 +265,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -312,7 +313,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -377,9 +377,10 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_FLASH_LEDS_ON_DEATH is not set # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -458,6 +459,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_DRIVERS_LENOVO_WACOM=y CONFIG_DIGITIZER_AUTODETECT=y diff --git a/config/coreboot/x60_16mb/config/libgfxinit_txtmode b/config/coreboot/x60_16mb/config/libgfxinit_txtmode index 0ef10de1..c21c7ba5 100644 --- a/config/coreboot/x60_16mb/config/libgfxinit_txtmode +++ b/config/coreboot/x60_16mb/config/libgfxinit_txtmode @@ -265,6 +265,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_PRERAM_CBFS_CACHE_SIZE=0x0 CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfec00000 CONFIG_EHCI_BAR=0xfef00000 @@ -312,7 +313,6 @@ CONFIG_TSC_SYNC_MFENCE=y CONFIG_SETUP_XIP_CACHE=y CONFIG_HAVE_SMI_HANDLER=y CONFIG_NEED_SMALL_2MB_PAGE_TABLES=y -CONFIG_CPU_PT_ROM_MAP_GB=4 CONFIG_SMM_TSEG=y CONFIG_SMM_LAPIC_REMAP_MITIGATION=y CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8 @@ -377,9 +377,10 @@ CONFIG_EC_LENOVO_H8=y # CONFIG_H8_FLASH_LEDS_ON_DEATH is not set # CONFIG_H8_SUPPORT_BT_ON_WIFI is not set # CONFIG_H8_FN_CTRL_SWAP is not set +CONFIG_H8_HAS_BDC_GPIO_DETECTION=y +CONFIG_H8_HAS_2ND_THERMAL_ZONE=y CONFIG_EC_LENOVO_PMH7=y CONFIG_ACPI_FNKEY_GEN_SCANCODE=0 -# CONFIG_GOOGLE_PVMFW_CBMEM is not set CONFIG_ARCH_X86=y CONFIG_ARCH_BOOTBLOCK_X86_32=y CONFIG_ARCH_VERSTAGE_X86_32=y @@ -456,6 +457,8 @@ CONFIG_USE_DDR2=y # Generic Drivers # CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000 +# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set +# CONFIG_DRIVERS_EFI_FW_INFO is not set # CONFIG_ELOG is not set CONFIG_DRIVERS_LENOVO_WACOM=y CONFIG_DIGITIZER_AUTODETECT=y diff --git a/config/coreboot/x60_16mb/target.cfg b/config/coreboot/x60_16mb/target.cfg index c1e3a3c6..f41e3fe9 100644 --- a/config/coreboot/x60_16mb/target.cfg +++ b/config/coreboot/x60_16mb/target.cfg @@ -6,4 +6,4 @@ payload_seabios="y" payload_grub="y" grub_scan_disk="ahci" build_depend="seabios/default grub/default u-boot/i386coreboot" -payload_uboot_i386="y" +payload_uboot="i386" diff --git a/config/data/coreboot/build.list b/config/data/coreboot/build.list new file mode 100644 index 00000000..f6535149 --- /dev/null +++ b/config/data/coreboot/build.list @@ -0,0 +1 @@ +build/coreboot.rom diff --git a/config/data/coreboot/mkhelper.cfg b/config/data/coreboot/mkhelper.cfg index 624d4ec2..8414ab53 100644 --- a/config/data/coreboot/mkhelper.cfg +++ b/config/data/coreboot/mkhelper.cfg @@ -1,19 +1,28 @@ # SPDX-License-Identifier: GPL-3.0-or-later -. "include/rom.sh" - makeargs="UPDATED_SUBMODULES=1 CPUS=$XBMK_THREADS" build_depend="seabios/default grub/default memtest86plus u-boot/amd64coreboot" -seavgabiosrom="elf/seabios/default/libgfxinit/vgabios.bin" +seavgabiosrom="elf/seabios/default/default/libgfxinit/vgabios.bin" + +payload_seabios="n" +payload_memtest="n" +payload_grub="n" +payload_grubsea="n" -pv="payload_uboot payload_seabios payload_memtest payload_grub" -pv="$pv payload_uboot_i386 payload_uboot_amd64 payload_grubsea" -v="initmode ubootelf grub_scan_disk uboot_config grubtree grubelf pname" -v="$v displaymode tmprom newrom" -eval `setvars "n" $pv` -eval `setvars "" $v` +initmode="" +ubootelf="" +grub_scan_disk="" +uboot_config="" +grubtree="" +grubelf="" +pname="" +displaymode="" +tmprom="" +newrom="" +payload_uboot="" +cbfscfg="" -premake="mkvendorfiles" -mkhelper="mkcorebootbin" -postmake="mkcoreboottar" +premake="corebootpremake" +mkhelper="coreboot_pad_one_byte" +postmake="mkcorebootbin" diff --git a/config/data/grub/mkhelper.cfg b/config/data/grub/mkhelper.cfg index 5d66f42f..e445900d 100644 --- a/config/data/grub/mkhelper.cfg +++ b/config/data/grub/mkhelper.cfg @@ -1,9 +1,7 @@ # SPDX-License-Identifier: GPL-3.0-or-later -. "include/rom.sh" - bootstrapargs="--gnulib-srcdir=gnulib/ --no-git" autoconfargs="--with-platform=coreboot --disable-werror" makeargs="FS_PAYLOAD_MODULES=\"\"" -btype="autohell" +buildtype="autohell" mkhelper="mkpayload_grub" diff --git a/config/data/grub/module/default b/config/data/grub/module/default index 1ee5327f..faa2473e 100755 --- a/config/data/grub/module/default +++ b/config/data/grub/module/default @@ -69,7 +69,6 @@ gcry_whirlpool \ geli \ gfxmenu \ gfxterm_background \ -gfxterm_menu \ gzio \ hashsum \ halt \ diff --git a/config/data/grub/module/nvme b/config/data/grub/module/nvme index a3a2847c..5ff32329 100755 --- a/config/data/grub/module/nvme +++ b/config/data/grub/module/nvme @@ -69,7 +69,6 @@ gcry_whirlpool \ geli \ gfxmenu \ gfxterm_background \ -gfxterm_menu \ gzio \ hashsum \ halt \ diff --git a/config/data/grub/module/xhci b/config/data/grub/module/xhci_nvme index ee4d10f7..05bd82aa 100755 --- a/config/data/grub/module/xhci +++ b/config/data/grub/module/xhci_nvme @@ -70,7 +70,6 @@ gcry_whirlpool \ geli \ gfxmenu \ gfxterm_background \ -gfxterm_menu \ gzio \ hashsum \ halt \ diff --git a/config/data/libarchive/build.list b/config/data/libarchive/build.list new file mode 100644 index 00000000..044f9db2 --- /dev/null +++ b/config/data/libarchive/build.list @@ -0,0 +1,3 @@ +bsdtar +bsdunzip +bsdcpio diff --git a/config/data/libarchive/mkhelper.cfg b/config/data/libarchive/mkhelper.cfg new file mode 100644 index 00000000..f1678f17 --- /dev/null +++ b/config/data/libarchive/mkhelper.cfg @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +premake="autoreconf -fiv src/libarchive" diff --git a/config/data/pcsx-redux/mkhelper.cfg b/config/data/pcsx-redux/mkhelper.cfg index af744685..6ad20de5 100644 --- a/config/data/pcsx-redux/mkhelper.cfg +++ b/config/data/pcsx-redux/mkhelper.cfg @@ -1,5 +1,3 @@ # SPDX-License-Identifier: GPL-3.0-or-later -. "include/rom.sh" - postmake="copyps1bios" diff --git a/config/data/pico-serprog/mkhelper.cfg b/config/data/pico-serprog/mkhelper.cfg index c913767c..5a4546a6 100644 --- a/config/data/pico-serprog/mkhelper.cfg +++ b/config/data/pico-serprog/mkhelper.cfg @@ -1,10 +1,7 @@ # SPDX-License-Identifier: GPL-3.0-or-later -. "include/rom.sh" - sersrc="src/pico-serprog" serx="$sersrc/build/pico_serprog.uf2" picosdk="src/pico-sdk" serdir="$picosdk/src/boards/include/boards" -premake="mkserprog pico" -picotool="$xbmkpwd/src/picotool/xbmkbin" +premake="$if_not_dry_build eval fx_ \"buildser pico\" x_ basename -as .h \"\$serdir/\"*.h" diff --git a/config/data/stm32-vserprog/mkhelper.cfg b/config/data/stm32-vserprog/mkhelper.cfg index 54b05caf..26ea5acd 100644 --- a/config/data/stm32-vserprog/mkhelper.cfg +++ b/config/data/stm32-vserprog/mkhelper.cfg @@ -1,8 +1,6 @@ # SPDX-License-Identifier: GPL-3.0-or-later -. "include/rom.sh" - sersrc="src/stm32-vserprog" serx="$sersrc/stm32-vserprog.hex" serdir="$sersrc/boards" -mkhelper="mkserprog stm32" +mkhelper="$if_not_dry_build eval fx_ \"buildser stm32\" x_ basename -as .h \"\$serdir/\"*.h" diff --git a/config/deguard/patches/0001-t480s-delta.patch b/config/deguard/patches/0001-t480s-delta.patch deleted file mode 100644 index 741ee08d..00000000 --- a/config/deguard/patches/0001-t480s-delta.patch +++ /dev/null @@ -1,221 +0,0 @@ -From 054a4ffdfef9a649f5668c379cb68b5342d02e3f Mon Sep 17 00:00:00 2001 -From: Leah Rowe <info@minifree.org> -Date: Mon, 2 Dec 2024 01:59:43 +0000 -Subject: [PATCH 1/1] t480s delta - -thank you mkukri for guiding me through this - -Signed-off-by: Leah Rowe <info@minifree.org> ---- - .../thinkpad_t480s/home/bup/bup_sku/plat_n_sku | Bin 0 -> 4 bytes - data/delta/thinkpad_t480s/home/bup/mbp | Bin 0 -> 44 bytes - data/delta/thinkpad_t480s/home/gpio/csme_pins | 0 - data/delta/thinkpad_t480s/home/icc/dynregs | Bin 0 -> 28 bytes - data/delta/thinkpad_t480s/home/icc/header | Bin 0 -> 4 bytes - data/delta/thinkpad_t480s/home/icc/namestr | Bin 0 -> 48 bytes - data/delta/thinkpad_t480s/home/icc/prof1 | 0 - data/delta/thinkpad_t480s/home/icc/prof10 | 0 - data/delta/thinkpad_t480s/home/icc/prof2 | 0 - data/delta/thinkpad_t480s/home/icc/prof3 | 0 - data/delta/thinkpad_t480s/home/icc/prof4 | 0 - data/delta/thinkpad_t480s/home/icc/prof5 | 0 - data/delta/thinkpad_t480s/home/icc/prof6 | 0 - data/delta/thinkpad_t480s/home/icc/prof7 | 0 - data/delta/thinkpad_t480s/home/icc/prof8 | 0 - data/delta/thinkpad_t480s/home/icc/prof9 | 0 - data/delta/thinkpad_t480s/home/mca/eom | 1 + - data/delta/thinkpad_t480s/home/mca/ish_policy | Bin 0 -> 1 bytes - data/delta/thinkpad_t480s/home/mctp/device_ports | Bin 0 -> 4 bytes - .../thinkpad_t480s/home/policy/Bist/auto_config | Bin 0 -> 4 bytes - .../thinkpad_t480s/home/policy/cfgmgr/cfg_rules | Bin 0 -> 660 bytes - .../thinkpad_t480s/home/policy/hci/sysintid1 | 1 + - .../thinkpad_t480s/home/policy/hci/sysintid2 | 1 + - .../thinkpad_t480s/home/policy/hci/sysintid3 | 1 + - 24 files changed, 4 insertions(+) - create mode 100644 data/delta/thinkpad_t480s/home/bup/bup_sku/plat_n_sku - create mode 100644 data/delta/thinkpad_t480s/home/bup/mbp - create mode 100644 data/delta/thinkpad_t480s/home/gpio/csme_pins - create mode 100644 data/delta/thinkpad_t480s/home/icc/dynregs - create mode 100644 data/delta/thinkpad_t480s/home/icc/header - create mode 100644 data/delta/thinkpad_t480s/home/icc/namestr - create mode 100644 data/delta/thinkpad_t480s/home/icc/prof1 - create mode 100644 data/delta/thinkpad_t480s/home/icc/prof10 - create mode 100644 data/delta/thinkpad_t480s/home/icc/prof2 - create mode 100644 data/delta/thinkpad_t480s/home/icc/prof3 - create mode 100644 data/delta/thinkpad_t480s/home/icc/prof4 - create mode 100644 data/delta/thinkpad_t480s/home/icc/prof5 - create mode 100644 data/delta/thinkpad_t480s/home/icc/prof6 - create mode 100644 data/delta/thinkpad_t480s/home/icc/prof7 - create mode 100644 data/delta/thinkpad_t480s/home/icc/prof8 - create mode 100644 data/delta/thinkpad_t480s/home/icc/prof9 - create mode 100644 data/delta/thinkpad_t480s/home/mca/eom - create mode 100644 data/delta/thinkpad_t480s/home/mca/ish_policy - create mode 100644 data/delta/thinkpad_t480s/home/mctp/device_ports - create mode 100644 data/delta/thinkpad_t480s/home/policy/Bist/auto_config - create mode 100644 data/delta/thinkpad_t480s/home/policy/cfgmgr/cfg_rules - create mode 100644 data/delta/thinkpad_t480s/home/policy/hci/sysintid1 - create mode 100644 data/delta/thinkpad_t480s/home/policy/hci/sysintid2 - create mode 100644 data/delta/thinkpad_t480s/home/policy/hci/sysintid3 - -diff --git a/data/delta/thinkpad_t480s/home/bup/bup_sku/plat_n_sku b/data/delta/thinkpad_t480s/home/bup/bup_sku/plat_n_sku -new file mode 100644 -index 0000000000000000000000000000000000000000..d0514be7b35d1d6ca7a4e09603bf1ce50d764720 -GIT binary patch -literal 4 -LcmZQ(U}yjU0FVHL - -literal 0 -HcmV?d00001 - -diff --git a/data/delta/thinkpad_t480s/home/bup/mbp b/data/delta/thinkpad_t480s/home/bup/mbp -new file mode 100644 -index 0000000000000000000000000000000000000000..f5f419c14e67bb40eca97369288637203849b165 -GIT binary patch -literal 44 -tcmd;PWnf_BU}69PMph;UMP^|~MkXc(2O$ALMouOM=YW5WY>Z&}1^_We1G@kK - -literal 0 -HcmV?d00001 - -diff --git a/data/delta/thinkpad_t480s/home/gpio/csme_pins b/data/delta/thinkpad_t480s/home/gpio/csme_pins -new file mode 100644 -index 0000000..e69de29 -diff --git a/data/delta/thinkpad_t480s/home/icc/dynregs b/data/delta/thinkpad_t480s/home/icc/dynregs -new file mode 100644 -index 0000000000000000000000000000000000000000..912ab3579185250403dc1db1cb95ed24b1e7f2ab -GIT binary patch -literal 28 -icmb1PU}RuoU|?VpV7)W*<V*&8AX`m<@s5B|NErY;Qw3}Q - -literal 0 -HcmV?d00001 - -diff --git a/data/delta/thinkpad_t480s/home/icc/header b/data/delta/thinkpad_t480s/home/icc/header -new file mode 100644 -index 0000000000000000000000000000000000000000..4b75556082e2c00ea8a888450d05627b20f0ec61 -GIT binary patch -literal 4 -LcmZQ%U|<9Q00{sC - -literal 0 -HcmV?d00001 - -diff --git a/data/delta/thinkpad_t480s/home/icc/namestr b/data/delta/thinkpad_t480s/home/icc/namestr -new file mode 100644 -index 0000000000000000000000000000000000000000..b0f3735c08f70e800a5dcce8ba8a2ef5ac9b075e -GIT binary patch -literal 48 -ZcmeZC&C4&#XTSi#C5d?{iA5>s5&*Dj1*HH0 - -literal 0 -HcmV?d00001 - -diff --git a/data/delta/thinkpad_t480s/home/icc/prof1 b/data/delta/thinkpad_t480s/home/icc/prof1 -new file mode 100644 -index 0000000..e69de29 -diff --git a/data/delta/thinkpad_t480s/home/icc/prof10 b/data/delta/thinkpad_t480s/home/icc/prof10 -new file mode 100644 -index 0000000..e69de29 -diff --git a/data/delta/thinkpad_t480s/home/icc/prof2 b/data/delta/thinkpad_t480s/home/icc/prof2 -new file mode 100644 -index 0000000..e69de29 -diff --git a/data/delta/thinkpad_t480s/home/icc/prof3 b/data/delta/thinkpad_t480s/home/icc/prof3 -new file mode 100644 -index 0000000..e69de29 -diff --git a/data/delta/thinkpad_t480s/home/icc/prof4 b/data/delta/thinkpad_t480s/home/icc/prof4 -new file mode 100644 -index 0000000..e69de29 -diff --git a/data/delta/thinkpad_t480s/home/icc/prof5 b/data/delta/thinkpad_t480s/home/icc/prof5 -new file mode 100644 -index 0000000..e69de29 -diff --git a/data/delta/thinkpad_t480s/home/icc/prof6 b/data/delta/thinkpad_t480s/home/icc/prof6 -new file mode 100644 -index 0000000..e69de29 -diff --git a/data/delta/thinkpad_t480s/home/icc/prof7 b/data/delta/thinkpad_t480s/home/icc/prof7 -new file mode 100644 -index 0000000..e69de29 -diff --git a/data/delta/thinkpad_t480s/home/icc/prof8 b/data/delta/thinkpad_t480s/home/icc/prof8 -new file mode 100644 -index 0000000..e69de29 -diff --git a/data/delta/thinkpad_t480s/home/icc/prof9 b/data/delta/thinkpad_t480s/home/icc/prof9 -new file mode 100644 -index 0000000..e69de29 -diff --git a/data/delta/thinkpad_t480s/home/mca/eom b/data/delta/thinkpad_t480s/home/mca/eom -new file mode 100644 -index 0000000..6b2aaa7 ---- /dev/null -+++ b/data/delta/thinkpad_t480s/home/mca/eom -@@ -0,0 +1 @@ -+ -\ No newline at end of file -diff --git a/data/delta/thinkpad_t480s/home/mca/ish_policy b/data/delta/thinkpad_t480s/home/mca/ish_policy -new file mode 100644 -index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d -GIT binary patch -literal 1 -IcmZPo000310RR91 - -literal 0 -HcmV?d00001 - -diff --git a/data/delta/thinkpad_t480s/home/mctp/device_ports b/data/delta/thinkpad_t480s/home/mctp/device_ports -new file mode 100644 -index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4 -GIT binary patch -literal 4 -LcmZQzU|;|M00aO5 - -literal 0 -HcmV?d00001 - -diff --git a/data/delta/thinkpad_t480s/home/policy/Bist/auto_config b/data/delta/thinkpad_t480s/home/policy/Bist/auto_config -new file mode 100644 -index 0000000000000000000000000000000000000000..f66c9cf4c9672fa2832bce76f4082fd97b823506 -GIT binary patch -literal 4 -LcmZQ%U|;|M00;mA - -literal 0 -HcmV?d00001 - -diff --git a/data/delta/thinkpad_t480s/home/policy/cfgmgr/cfg_rules b/data/delta/thinkpad_t480s/home/policy/cfgmgr/cfg_rules -new file mode 100644 -index 0000000000000000000000000000000000000000..6243fe92703b15ca1f7f387ba5c4d899a79c569b -GIT binary patch -literal 660 -zcmY+=OHKk|5Cq^>K!kw6@D_P1@<u>igPOP^;RM`;4F~aZ-U6s51t}Jj`cnC)|Cu&3 -zOPGZhK{|6oBkY#;E<__NOnV=p5q3v=9~Iw=W3<os$56i)yfV5=pA<icQ?!3qn%*HZ -z^Z^;r2+N9dw4cd~3*sW}|5Bn6R;Imwq~pj6?K7X~ul0UarJJGbvPS#6b#Vj6j!ye; -z(%<X-wsr22ZTk0T^Y=_6?1lE39X!5I_bYpZb;UjSyz{<zAZLc+k$BAWK7S(pn|Lao -NiRa>X@rU?Rd<6FI7iRzf - -literal 0 -HcmV?d00001 - -diff --git a/data/delta/thinkpad_t480s/home/policy/hci/sysintid1 b/data/delta/thinkpad_t480s/home/policy/hci/sysintid1 -new file mode 100644 -index 0000000..b508e57 ---- /dev/null -+++ b/data/delta/thinkpad_t480s/home/policy/hci/sysintid1 -@@ -0,0 +1 @@ -+Zâ# -\ No newline at end of file -diff --git a/data/delta/thinkpad_t480s/home/policy/hci/sysintid2 b/data/delta/thinkpad_t480s/home/policy/hci/sysintid2 -new file mode 100644 -index 0000000..9611653 ---- /dev/null -+++ b/data/delta/thinkpad_t480s/home/policy/hci/sysintid2 -@@ -0,0 +1 @@ -+²R˦ -\ No newline at end of file -diff --git a/data/delta/thinkpad_t480s/home/policy/hci/sysintid3 b/data/delta/thinkpad_t480s/home/policy/hci/sysintid3 -new file mode 100644 -index 0000000..7f55b1e ---- /dev/null -+++ b/data/delta/thinkpad_t480s/home/policy/hci/sysintid3 -@@ -0,0 +1 @@ -+Œ¼6 -\ No newline at end of file --- -2.39.5 - diff --git a/config/dependencies/arch b/config/dependencies/arch index 2b1b7157..79819bda 100644 --- a/config/dependencies/arch +++ b/config/dependencies/arch @@ -11,4 +11,4 @@ pandoc parted pciutils perl perl-libwww python python-setuptools rsync \ sharutils subversion swig texinfo ttf-dejavu unarchiver unzip wget xz zlib mtools \ " -aur_notice="bdf-unifont unifont cross-mipsel-linux-gnu-binutils cross-mipsel-linux-gnu-gcc" +aur_notice="bdf-unifont pcf-unifont psf-unifont mipsel-linux-gnu-binutils mipsel-linux-gnu-gcc" diff --git a/config/dependencies/debian b/config/dependencies/debian index 00ccfc1a..c7de8be0 100755..100644 --- a/config/dependencies/debian +++ b/config/dependencies/debian @@ -1,18 +1,18 @@ # SPDX-License-Identifier: GPL-3.0-or-later -pkg_add="apt-get install $reinstall" +pkg_add="apt-get install --no-install-recommends $reinstall" pkglist=" \ acpica-tools autoconf autogen automake autopoint autotools-dev bc \ binutils-arm-none-eabi bison build-essential cmake curl device-tree-compiler \ doxygen e2fsprogs efitools flex fonts-unifont gawk gcc-arm-linux-gnueabi \ gcc-arm-none-eabi gdb gettext git gnat help2man innoextract libdevmapper-dev \ libfdt-dev libfont-freetype-perl libfreetype-dev libftdi-dev libftdi1-dev libfuse-dev \ -libjaylink-dev libgnutls28-dev libgpiod-dev lz4 liblz4-dev liblzma-dev libncurses5-dev +libjaylink-dev libgnutls28-dev libgpiod-dev lz4 liblz4-dev liblzma-dev libncurses5-dev \ libncurses-dev libnewlib-arm-none-eabi libopts25 libopts25-dev libpci-dev libpython3-dev \ -libsdl2-dev libselinux1-dev libssl-dev libtool libusb-1.0 libusb-1.0-0-dev \ +libsdl2-dev libselinux1-dev libssl-dev libtool libusb-1.0-0 libusb-1.0-0-dev \ libusb-dev lz4 lzma lzma-alone m4 nasm openssl p7zip p7zip-full parted pciutils \ perl pkg-config python3 python3-distutils-extra python3-pkg-resources python3-pycryptodome \ python3-pyelftools python3-setuptools python-is-python3 sharutils swig unar \ unifont unifont-bin unzip uuid-dev wget xfonts-unifont zlib1g-dev ccache \ -g++-mipsel-linux-gnu make genisoimage mtools \ +g++-mipsel-linux-gnu make genisoimage mtools libx86-1 libx86-dev libstdc++-arm-none-eabi-newlib \ " diff --git a/config/dependencies/fedora42 b/config/dependencies/fedora42 new file mode 100644 index 00000000..c7e34aad --- /dev/null +++ b/config/dependencies/fedora42 @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +pkg_add="dnf ${reinstall}install" +pkglist=" \ +acpica-tools arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-gcc-cs-c++ \ +arm-none-eabi-gcc arm-none-eabi-newlib autogen bison bzip2 cmake curl \ +dejavu-fonts-all device-mapper doxygen e2fsprogs flex freetype-devel fuse \ +gawk gcc gcc-gnat gdb gettext gettext-devel git gprbuild help2man \ +innoextract intltool libftdi-devel libgpiod-devel libjaylink-devel \ +libselinux-devel libusb1 libusb1-devel nasm ncurses-devel openssl-devel openssl-devel-engine \ +p7zip p7zip-plugins pandoc parted pciutils-devel perl perl-libwww-perl \ +python-unversioned-command python3 python3-setuptools rsync sharutils \ +subversion systemd-devel texinfo unifont unifont-fonts uuid-devel \ +unifont-ttf-fonts unzip wget xz zlib-devel ccache swig python3-devel \ +libuuid-devel gnutls-devel tar unar \ +" diff --git a/config/dependencies/fedora43 b/config/dependencies/fedora43 new file mode 100644 index 00000000..c7e34aad --- /dev/null +++ b/config/dependencies/fedora43 @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +pkg_add="dnf ${reinstall}install" +pkglist=" \ +acpica-tools arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-gcc-cs-c++ \ +arm-none-eabi-gcc arm-none-eabi-newlib autogen bison bzip2 cmake curl \ +dejavu-fonts-all device-mapper doxygen e2fsprogs flex freetype-devel fuse \ +gawk gcc gcc-gnat gdb gettext gettext-devel git gprbuild help2man \ +innoextract intltool libftdi-devel libgpiod-devel libjaylink-devel \ +libselinux-devel libusb1 libusb1-devel nasm ncurses-devel openssl-devel openssl-devel-engine \ +p7zip p7zip-plugins pandoc parted pciutils-devel perl perl-libwww-perl \ +python-unversioned-command python3 python3-setuptools rsync sharutils \ +subversion systemd-devel texinfo unifont unifont-fonts uuid-devel \ +unifont-ttf-fonts unzip wget xz zlib-devel ccache swig python3-devel \ +libuuid-devel gnutls-devel tar unar \ +" diff --git a/config/dependencies/parabola b/config/dependencies/parabola deleted file mode 100644 index eb7115f7..00000000 --- a/config/dependencies/parabola +++ /dev/null @@ -1,15 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -pkg_add="pacman -S --needed" -pkglist=" \ -acpica arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib \ -autogen base-devel bdf-unifont bison cmake curl device-mapper doxygen \ -dtc e2fsprogs flex freetype2 fuse2 gawk gcc-ada gdb gettext git \ -help2man innoextract libftdi libgpiod libjaylink libpciaccess libusb nasm \ -ncurses openssl p7zip less libx86 \ -pandoc parted pciutils perl perl-libwww python python-setuptools rsync \ -sharutils subversion swig texinfo ttf-dejavu unarchiver unifont-utils unzip \ -wget xz zlib ccache \ -" - -aur_notice="cross-mipsel-linux-gnu-binutils cross-mipsel-linux-gnu-gcc" diff --git a/config/dependencies/popos b/config/dependencies/popos deleted file mode 120000 index b2f7fd3e..00000000 --- a/config/dependencies/popos +++ /dev/null @@ -1 +0,0 @@ -debian
\ No newline at end of file diff --git a/config/dependencies/trisquel b/config/dependencies/trisquel deleted file mode 100755 index fb364c28..00000000 --- a/config/dependencies/trisquel +++ /dev/null @@ -1,18 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -pkg_add="apt-get install $reinstall" -pkglist=" \ -autoconf autogen automake autopoint autotools-dev bc binutils-arm-none-eabi \ -bison build-essential cmake curl device-tree-compiler doxygen e2fsprogs efitools \ -flex gawk gcc-arm-linux-gnueabi gcc-arm-none-eabi gdb gettext git gnat help2man \ -innoextract libdevmapper-dev libfdt-dev libfont-freetype-perl libfreetype6-dev \ -libftdi-dev libfuse-dev libgnutls28-dev libgpiod-dev libjaylink-dev \ -liblzma-dev libncurses5-dev ccache lz4 liblz4-dev \ -libncurses-dev libnewlib-arm-none-eabi libopts25 libopts25-dev libpci-dev \ -libpython3-dev libsdl2-dev libselinux1-dev libssl-dev libtool libusb-1.0-0 \ -libusb-1.0-0-dev lz4 lzma lzma-alone m4 nasm openssl p7zip p7zip-full parted \ -pciutils perl pkg-config python3 python3-distutils python3-pkg-resources \ -python3-pycryptodome python3-pyelftools python3-setuptools python-is-python3 \ -sharutils swig fonts-unifont unar unifont unzip uuid-dev wget zlib1g-dev \ -g++-mipsel-linux-gnu make genisoimage mtools \ -" diff --git a/config/dependencies/ubuntu2004 b/config/dependencies/ubuntu2004 deleted file mode 100755 index ce69a4d9..00000000 --- a/config/dependencies/ubuntu2004 +++ /dev/null @@ -1,17 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -pkg_add="apt-get install $reinstall" -pkglist=" \ -autoconf autogen automake autopoint autotools-dev bc binutils-arm-none-eabi \ -bison build-essential cmake curl device-tree-compiler doxygen e2fsprogs efitools \ -flex gawk gcc-arm-linux-gnueabi gcc-arm-none-eabi gdb gettext git gnat help2man \ -innoextract libdevmapper-dev libfdt-dev libfont-freetype-perl libfreetype6-dev \ -libftdi-dev libfuse-dev libgnutls28-dev lz4 liblz4-dev liblzma-dev libncurses5-dev \ -libncurses-dev libnewlib-arm-none-eabi libopts25 libopts25-dev libpci-dev \ -libpython3-dev libsdl2-dev libselinux1-dev libssl-dev libtool libusb-1.0-0 \ -libusb-1.0-0-dev lz4 lzma lzma-alone m4 nasm openssl p7zip p7zip-full parted \ -pciutils perl pkg-config python3 python3-distutils python3-pkg-resources \ -python3-pycryptodome python3-pyelftools python3-setuptools python-is-python3 \ -sharutils swig ttf-unifont unar unifont unzip uuid-dev wget zlib1g-dev ccache \ -g++-mipsel-linux-gnu make genisoimage mtools \ -" diff --git a/config/dependencies/ubuntu2404 b/config/dependencies/ubuntu2404 index b0633e69..a54a3177 100755 --- a/config/dependencies/ubuntu2404 +++ b/config/dependencies/ubuntu2404 @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-3.0-or-later -pkg_add="apt-get install $reinstall" +pkg_add="apt-get install --no-install-recommends $reinstall" pkglist=" \ autoconf autogen automake autopoint autotools-dev bc binutils-arm-none-eabi \ bison build-essential cmake curl device-tree-compiler doxygen e2fsprogs efitools \ diff --git a/config/flashprog/patches/0002-lbmk-hack-add-config-Makefile-options.patch b/config/flashprog/patches/0002-lbmk-hack-add-config-Makefile-options.patch new file mode 100644 index 00000000..d2702d23 --- /dev/null +++ b/config/flashprog/patches/0002-lbmk-hack-add-config-Makefile-options.patch @@ -0,0 +1,48 @@ +From b7a4d2907d3358173510aa6e31af08afe4969b38 Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Thu, 22 May 2025 11:25:42 +0100 +Subject: [PATCH 1/1] lbmk hack: add config Makefile options + +this prevents a build error when running the +-u, -m, -s, -l and -n options in lbmk without +argument. + +this makes no functional changes to flashprog. + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + Makefile | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 12adf61..701f842 100644 +--- a/Makefile ++++ b/Makefile +@@ -1113,7 +1113,23 @@ libpayload: clean + gitconfig: + ./util/getrevision.sh -c 2>/dev/null && ./util/git-hooks/install.sh + +-.PHONY: all install clean distclean config branch tag versioninfo _export export tarball libpayload gitconfig ++oldconfig: ++ : ++ ++menuconfig: ++ : ++ ++savedefconfig: ++ : ++ ++olddefconfig: ++ : ++ ++nconfig: ++ : ++ ++ ++.PHONY: all install clean distclean config branch tag versioninfo _export export tarball libpayload gitconfig oldconfig menuconfig savedefconfig olddefconfig nconfig + + # Disable implicit suffixes and built-in rules (for performance and profit) + .SUFFIXES: +-- +2.39.5 + diff --git a/config/git/deguard/pkg.cfg b/config/git/deguard/pkg.cfg index 300417ca..ea9b0a57 100644 --- a/config/git/deguard/pkg.cfg +++ b/config/git/deguard/pkg.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -rev="de176a7f20650b272a01efb633931a63128c1647" +rev="0ed3e4ff824fc42f71ee22907d0594ded38ba7b2" url="https://review.coreboot.org/deguard" bkup_url="https://codeberg.org/libreboot/deguard" diff --git a/config/git/docs/pkg.cfg b/config/git/docs/pkg.cfg index 144292fd..83820858 100644 --- a/config/git/docs/pkg.cfg +++ b/config/git/docs/pkg.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -rev="e72d055915c3a9ffe739982946e101b146b2483c" -url="https://codeberg.org/vimuser/untitled" -bkup_url="https://notabug.org/untitled/untitled" +rev="e4abe735ae13cf43e5da1d79fe63726ab01ac907" +url="https://codeberg.org/libreboot/lbssg" +bkup_url="https://notabug.org/libreboot/lbssg" diff --git a/config/git/flashprog/pkg.cfg b/config/git/flashprog/pkg.cfg index 6cfbdb38..16231efe 100644 --- a/config/git/flashprog/pkg.cfg +++ b/config/git/flashprog/pkg.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -rev="eb2c04185f8f471c768b742d66e4c552effdd9cb" +rev="e060018655f802896dc226832d25e223102889c8" url="https://review.sourcearcade.org/flashprog" bkup_url="https://github.com/SourceArcade/flashprog.git" diff --git a/config/git/libarchive/pkg.cfg b/config/git/libarchive/pkg.cfg new file mode 100644 index 00000000..afce5b26 --- /dev/null +++ b/config/git/libarchive/pkg.cfg @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +rev="9525f90ca4bd14c7b335e2f8c84a4607b0af6bdf" +url="https://codeberg.org/libreboot/libarchive" +bkup_url="https://git.disroot.org/libreboot/libarchive" diff --git a/config/git/me_cleaner/pkg.cfg b/config/git/me_cleaner/pkg.cfg new file mode 100644 index 00000000..8a09d9c3 --- /dev/null +++ b/config/git/me_cleaner/pkg.cfg @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +rev="f20532d90378120b1ed2e710cecb36505cc70c31" +url="https://codeberg.org/libreboot/me_cleaner" +bkup_url="https://git.disroot.org/libreboot/me_cleaner" diff --git a/config/git/pcsx-redux/pkg.cfg b/config/git/pcsx-redux/pkg.cfg index 88443cb3..d63d6b84 100644 --- a/config/git/pcsx-redux/pkg.cfg +++ b/config/git/pcsx-redux/pkg.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -rev="6ec5348058413619b290b069adbdae68180ce8c0" +rev="8f8cc3d5637dedd6ca1e40b5407127e2afc18b34" url="https://github.com/grumpycoders/pcsx-redux" bkup_url="https://codeberg.org/vimuser/pcsx-redux" diff --git a/config/git/pico-sdk/pkg.cfg b/config/git/pico-sdk/pkg.cfg index 8af13d09..284ee057 100644 --- a/config/git/pico-sdk/pkg.cfg +++ b/config/git/pico-sdk/pkg.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -rev="95ea6acad131124694cda1c162c52cd30e0aece0" +rev="6a7db34ff63345a7badec79ebea3aaef1712f374" url="https://codeberg.org/libreboot/pico-sdk" bkup_url="https://github.com/raspberrypi/pico-sdk" diff --git a/config/git/pico-serprog/pkg.cfg b/config/git/pico-serprog/pkg.cfg index 3d3e0f19..03b45a1b 100644 --- a/config/git/pico-serprog/pkg.cfg +++ b/config/git/pico-serprog/pkg.cfg @@ -3,4 +3,4 @@ rev="3ea792664ed29ca1ff3e2e78d1d16099684781bd" url="https://codeberg.org/libreboot/pico-serprog" bkup_url="https://git.disroot.org/libreboot/pico-serprog" -depend="pico-sdk picotool" +depend="pico-sdk" diff --git a/config/git/picotool/pkg.cfg b/config/git/picotool/pkg.cfg deleted file mode 100644 index 3711ce04..00000000 --- a/config/git/picotool/pkg.cfg +++ /dev/null @@ -1,5 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -rev="df21059f7ca6f1babc7f1f3b92122cacffc85951" -url="https://github.com/raspberrypi/picotool" -bkup_url="https://codeberg.org/libreboot/picotool" diff --git a/config/git/uefitool/pkg.cfg b/config/git/uefitool/pkg.cfg index 8b269666..f972acb2 100644 --- a/config/git/uefitool/pkg.cfg +++ b/config/git/uefitool/pkg.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -rev="4a41c33596e9bc3ae812e763965d91ac57553e02" +rev="a072527138637a0e2808ad1544a02d187ab1ed79" url="https://codeberg.org/libreboot/UEFITool" bkup_url="https://github.com/LongSoft/UEFITool" diff --git a/config/grub/default/config/payload b/config/grub/default/config/payload index 3f134f1d..3d84413e 100644 --- a/config/grub/default/config/payload +++ b/config/grub/default/config/payload @@ -184,7 +184,7 @@ menuentry 'Load Operating System (incl. fully encrypted disks) [o]' --hotkey='o # using * is slow on some machines, but we use it here, # just once. in so doing, we find every lvm volume for vol in (*); do - if regexp ^lvm/ $vol; then + if regexp ^\\(lvm/ $vol; then lvmvol="${lvmvol} ${vol}" try_bootcfg "${vol}" fi diff --git a/config/grub/default/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch b/config/grub/default/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch index ffd2c537..c41f2d4d 100644 --- a/config/grub/default/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch +++ b/config/grub/default/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch @@ -1,7 +1,7 @@ -From 8ccafb60665bba3759248b13d2d1683818aaf4ee Mon Sep 17 00:00:00 2001 +From dae0cfdbb484eb3576300ad9c4d2c362f4e8fa64 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sun, 31 Oct 2021 03:47:05 +0000 -Subject: [PATCH 01/13] mitigate grub's missing characters for borders/arrow +Subject: [PATCH 01/14] mitigate grub's missing characters for borders/arrow characters This cleans up the display on the main screen in GRUB. diff --git a/config/grub/default/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch b/config/grub/default/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch index 933e7dfa..e30f1386 100644 --- a/config/grub/default/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch +++ b/config/grub/default/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch @@ -1,14 +1,14 @@ -From 3fb09986e62a9945862456d5f1d63a6ccba2c861 Mon Sep 17 00:00:00 2001 +From 25ae072be49c23abffff657085c16ac3780b8cda Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sat, 19 Nov 2022 16:30:24 +0000 -Subject: [PATCH 02/13] say the name libreboot, in the grub menu +Subject: [PATCH 02/14] say the name libreboot, in the grub menu --- grub-core/normal/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c -index 04d058f55..b1cc8f236 100644 +index 96abfda2f..d806db9c4 100644 --- a/grub-core/normal/main.c +++ b/grub-core/normal/main.c @@ -209,7 +209,7 @@ grub_normal_init_page (struct grub_term_output *term, @@ -16,7 +16,7 @@ index 04d058f55..b1cc8f236 100644 grub_term_cls (term); - msg_formatted = grub_xasprintf (_("GNU GRUB version %s"), PACKAGE_VERSION); -+ msg_formatted = grub_xasprintf (_("Libreboot 20241206, 8th revision (GRUB menu): https://libreboot.org/")); ++ msg_formatted = grub_xasprintf (_("Libreboot 25.06 Luminous Lemon (GRUB menu): https://libreboot.org/")); if (!msg_formatted) return; diff --git a/config/grub/default/patches/0003-Add-CC0-license.patch b/config/grub/default/patches/0003-Add-CC0-license.patch index c074099a..09b70f1c 100644 --- a/config/grub/default/patches/0003-Add-CC0-license.patch +++ b/config/grub/default/patches/0003-Add-CC0-license.patch @@ -1,7 +1,7 @@ -From dc790ff2ba2702ee863c9d16e05cf843a152f3d4 Mon Sep 17 00:00:00 2001 +From e9969b4ee38e3d9fda1fdff02e127830d7fdf2ec Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 03/13] Add CC0 license +Subject: [PATCH 03/14] Add CC0 license Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- diff --git a/config/grub/default/patches/0004-Define-GRUB_UINT32_MAX.patch b/config/grub/default/patches/0004-Define-GRUB_UINT32_MAX.patch index af617683..6d413bae 100644 --- a/config/grub/default/patches/0004-Define-GRUB_UINT32_MAX.patch +++ b/config/grub/default/patches/0004-Define-GRUB_UINT32_MAX.patch @@ -1,7 +1,7 @@ -From 298eaaca770545e19dfacd47511c2081c1fece08 Mon Sep 17 00:00:00 2001 +From 421a44b2f8211fa46ea523fc0feeaba9940af0e7 Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 04/13] Define GRUB_UINT32_MAX +Subject: [PATCH 04/14] Define GRUB_UINT32_MAX Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- diff --git a/config/grub/default/patches/0005-Add-Argon2-algorithm.patch b/config/grub/default/patches/0005-Add-Argon2-algorithm.patch index dacd83ee..26a150b7 100644 --- a/config/grub/default/patches/0005-Add-Argon2-algorithm.patch +++ b/config/grub/default/patches/0005-Add-Argon2-algorithm.patch @@ -1,7 +1,7 @@ -From 378aa081ac1211d0bf4043eeb0bb7d4aa534043f Mon Sep 17 00:00:00 2001 +From a31496a4fb9dc85dfbfc3442898aca4b64716986 Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 05/13] Add Argon2 algorithm +Subject: [PATCH 05/14] Add Argon2 algorithm Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- @@ -111,7 +111,7 @@ index f4367f895..9d96cedf9 100644 @section Gnulib diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def -index f70e02e69..f5f9b040c 100644 +index 24e8c8437..0ee65d54d 100644 --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def @@ -1219,6 +1219,14 @@ module = { diff --git a/config/grub/default/patches/0006-Error-on-missing-Argon2id-parameters.patch b/config/grub/default/patches/0006-Error-on-missing-Argon2id-parameters.patch index f1ea10c2..1531d60c 100644 --- a/config/grub/default/patches/0006-Error-on-missing-Argon2id-parameters.patch +++ b/config/grub/default/patches/0006-Error-on-missing-Argon2id-parameters.patch @@ -1,7 +1,7 @@ -From febaf431d235f07b97f07f935611dc168b0b35bb Mon Sep 17 00:00:00 2001 +From 594a7011d551af530bbbdf5e39b941811a0b7811 Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 06/13] Error on missing Argon2id parameters +Subject: [PATCH 06/14] Error on missing Argon2id parameters Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- @@ -9,7 +9,7 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c -index 8036d76ff..efae8ac65 100644 +index b17cd2115..bbd8f5579 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c @@ -39,6 +39,7 @@ GRUB_MOD_LICENSE ("GPLv3+"); diff --git a/config/grub/default/patches/0007-Compile-with-Argon2id-support.patch b/config/grub/default/patches/0007-Compile-with-Argon2id-support.patch index c0a8fffb..344dfb1d 100644 --- a/config/grub/default/patches/0007-Compile-with-Argon2id-support.patch +++ b/config/grub/default/patches/0007-Compile-with-Argon2id-support.patch @@ -1,7 +1,7 @@ -From 12d3e4dfff3f92daf2f3f73cc0797425f7bb9df6 Mon Sep 17 00:00:00 2001 +From 6a757a3cdf22e840162bb222a87446a32d9b94a2 Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 07/13] Compile with Argon2id support +Subject: [PATCH 07/14] Compile with Argon2id support Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- @@ -35,7 +35,7 @@ index 038253b37..2f19569c9 100644 common = grub-core/disk/luks.c; common = grub-core/disk/luks2.c; diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def -index f5f9b040c..f1f38d8d3 100644 +index 0ee65d54d..cd29a9df8 100644 --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def @@ -1242,7 +1242,7 @@ module = { @@ -48,7 +48,7 @@ index f5f9b040c..f1f38d8d3 100644 module = { diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c -index efae8ac65..2e742f5be 100644 +index bbd8f5579..02cd615d9 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c @@ -28,6 +28,7 @@ diff --git a/config/grub/default/patches/0008-Make-grub-install-work-with-Argon2.patch b/config/grub/default/patches/0008-Make-grub-install-work-with-Argon2.patch index 12e78752..b7ea852a 100644 --- a/config/grub/default/patches/0008-Make-grub-install-work-with-Argon2.patch +++ b/config/grub/default/patches/0008-Make-grub-install-work-with-Argon2.patch @@ -1,7 +1,7 @@ -From 8e639e9558c98019566743cc5723e641b1726d15 Mon Sep 17 00:00:00 2001 +From 4e4ded3f127f5567bdb41de7b671bd9b2a478125 Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 08/13] Make grub-install work with Argon2 +Subject: [PATCH 08/14] Make grub-install work with Argon2 Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- diff --git a/config/grub/default/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch b/config/grub/default/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch index 50195201..12f6f111 100644 --- a/config/grub/default/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch +++ b/config/grub/default/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch @@ -1,7 +1,7 @@ -From 8a098ee241040ccfdf03636f558ef6a3b431bb90 Mon Sep 17 00:00:00 2001 +From fc815438e70cbb13166ab6711b6f6460521b1fd4 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Mon, 30 Oct 2023 22:19:21 +0000 -Subject: [PATCH 09/13] at_keyboard coreboot: force scancodes2+translate +Subject: [PATCH 09/14] at_keyboard coreboot: force scancodes2+translate Scan code set 2 with translation should be assumed in every case, as the default starting position. diff --git a/config/grub/default/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch b/config/grub/default/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch index 685e21c4..8c0a5054 100644 --- a/config/grub/default/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch +++ b/config/grub/default/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch @@ -1,7 +1,7 @@ -From d86b69fa2c0d73440e5b990d8ab4b66c5c23fa46 Mon Sep 17 00:00:00 2001 +From defb7ad35579c321d32b81af7ddd6fecf34cb618 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Tue, 31 Oct 2023 10:33:28 +0000 -Subject: [PATCH 10/13] keylayouts: don't print "Unknown key" message +Subject: [PATCH 10/14] keylayouts: don't print "Unknown key" message on keyboards with stuck keys, this results in GRUB just spewing it repeatedly, preventing use of GRUB. diff --git a/config/grub/default/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch b/config/grub/default/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch index f15d78e1..cef7a273 100644 --- a/config/grub/default/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch +++ b/config/grub/default/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch @@ -1,7 +1,7 @@ -From 3726c1e12b8896e4a77cc7a2b490e933dc2c08da Mon Sep 17 00:00:00 2001 +From d0345db429be8089145e0c072db9ac8db0b644bd Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sun, 5 Nov 2023 16:14:58 +0000 -Subject: [PATCH 11/13] don't print missing prefix errors on the screen +Subject: [PATCH 11/14] don't print missing prefix errors on the screen we do actually set the prefix. this patch modifies grub to still set grub_errno and return accordingly, diff --git a/config/grub/default/patches/0012-don-t-print-error-if-module-not-found.patch b/config/grub/default/patches/0012-don-t-print-error-if-module-not-found.patch index 713f1244..e30c3f9a 100644 --- a/config/grub/default/patches/0012-don-t-print-error-if-module-not-found.patch +++ b/config/grub/default/patches/0012-don-t-print-error-if-module-not-found.patch @@ -1,7 +1,7 @@ -From c86a635609a4623baa9312f5c1bebfd51f5883a1 Mon Sep 17 00:00:00 2001 +From 2fe963570ac19e3390a792ca2c195112d4efdc24 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sun, 5 Nov 2023 16:36:22 +0000 -Subject: [PATCH 12/13] don't print error if module not found +Subject: [PATCH 12/14] don't print error if module not found still set grub_errno accordingly, and otherwise behave the same. in libreboot, we remove a lot of diff --git a/config/grub/default/patches/0013-don-t-print-empty-error-messages.patch b/config/grub/default/patches/0013-don-t-print-empty-error-messages.patch index d23ea109..0cdadbe9 100644 --- a/config/grub/default/patches/0013-don-t-print-empty-error-messages.patch +++ b/config/grub/default/patches/0013-don-t-print-empty-error-messages.patch @@ -1,7 +1,7 @@ -From 715ba566042aa140cbeb06836c558460ef6f446f Mon Sep 17 00:00:00 2001 +From 5a1dd3c19307859aac7d1a22a7a0c0c7ffb09ddb Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sun, 5 Nov 2023 17:25:20 +0000 -Subject: [PATCH 13/13] don't print empty error messages +Subject: [PATCH 13/14] don't print empty error messages this is part two of the quest to kill the prefix error message. after i disabled prefix-related diff --git a/config/grub/default/patches/0014-kern-coreboot-mmap-Map-to-reserved.patch b/config/grub/default/patches/0014-kern-coreboot-mmap-Map-to-reserved.patch new file mode 100644 index 00000000..78e4eafc --- /dev/null +++ b/config/grub/default/patches/0014-kern-coreboot-mmap-Map-to-reserved.patch @@ -0,0 +1,37 @@ +From 818f1b19f32e355cc2a0ebe29eee2a2bac7bcb3f Mon Sep 17 00:00:00 2001 +From: Paul Menzel <pmenzel@molgen.mpg.de> +Date: Mon, 17 May 2021 10:24:36 +0200 +Subject: [PATCH 14/14] kern/coreboot/mmap: Map to reserved + +https://git.savannah.gnu.org/cgit/grub.git/commit/?id=6de9ee86bf9ae50967413e6a73b5dfd13e5ffb50 + +Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de> +--- + grub-core/kern/coreboot/mmap.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/grub-core/kern/coreboot/mmap.c b/grub-core/kern/coreboot/mmap.c +index caf8f7cef..2fc316e8d 100644 +--- a/grub-core/kern/coreboot/mmap.c ++++ b/grub-core/kern/coreboot/mmap.c +@@ -59,7 +59,7 @@ iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data) + /* Multiboot mmaps match with the coreboot mmap + definition. Therefore, we can just pass type + through. */ +- mem_region->type, ++ (mem_region->type >= 13) ? 2 : mem_region->type, + ctx->hook_data)) + return 1; + if (start < 0xa0000) +@@ -81,7 +81,7 @@ iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data) + /* Multiboot mmaps match with the coreboot mmap + definition. Therefore, we can just pass type + through. */ +- mem_region->type, ++ (mem_region->type >= 13) ? 2 : mem_region->type, + ctx->hook_data)) + return 1; + } +-- +2.39.5 + diff --git a/config/grub/default/target.cfg b/config/grub/default/target.cfg index a9dab736..6a13a189 100644 --- a/config/grub/default/target.cfg +++ b/config/grub/default/target.cfg @@ -1,4 +1,4 @@ # SPDX-License-Identifier: GPL-3.0-or-later tree="default" -rev="a4da71dafeea519b034beb159dfe80c486c2107c" +rev="a68a7dece464c35b1c8d20b98502b6881b103911" diff --git a/config/grub/nvme/config/payload b/config/grub/nvme/config/payload index 22dd8fe1..4f3de36e 100644 --- a/config/grub/nvme/config/payload +++ b/config/grub/nvme/config/payload @@ -196,7 +196,7 @@ menuentry 'Load Operating System (incl. fully encrypted disks) [o]' --hotkey='o # using * is slow on some machines, but we use it here, # just once. in so doing, we find every lvm volume for vol in (*); do - if regexp ^lvm/ $vol; then + if regexp ^\\(lvm/ $vol; then lvmvol="${lvmvol} ${vol}" try_bootcfg "${vol}" fi diff --git a/config/grub/nvme/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch b/config/grub/nvme/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch index dff2503c..1c55b85a 100644 --- a/config/grub/nvme/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch +++ b/config/grub/nvme/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch @@ -1,7 +1,7 @@ -From 5f8189d928309146675a56279458d8bb7534ec0c Mon Sep 17 00:00:00 2001 +From 759a673b3c4601a32837f2b26661d2998f6cb8d6 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sun, 31 Oct 2021 03:47:05 +0000 -Subject: [PATCH 01/14] mitigate grub's missing characters for borders/arrow +Subject: [PATCH 01/15] mitigate grub's missing characters for borders/arrow characters This cleans up the display on the main screen in GRUB. diff --git a/config/grub/nvme/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch b/config/grub/nvme/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch index 8a1203d7..8515f2a8 100644 --- a/config/grub/nvme/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch +++ b/config/grub/nvme/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch @@ -1,14 +1,14 @@ -From fce8730b8c20b7de0394976861b3d2ebcc21f425 Mon Sep 17 00:00:00 2001 +From 88007c24f8bceb97d0aecf31545c3b49b380b1a6 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sat, 19 Nov 2022 16:30:24 +0000 -Subject: [PATCH 02/14] say the name libreboot, in the grub menu +Subject: [PATCH 02/15] say the name libreboot, in the grub menu --- grub-core/normal/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c -index 04d058f55..b1cc8f236 100644 +index 96abfda2f..d806db9c4 100644 --- a/grub-core/normal/main.c +++ b/grub-core/normal/main.c @@ -209,7 +209,7 @@ grub_normal_init_page (struct grub_term_output *term, @@ -16,7 +16,7 @@ index 04d058f55..b1cc8f236 100644 grub_term_cls (term); - msg_formatted = grub_xasprintf (_("GNU GRUB version %s"), PACKAGE_VERSION); -+ msg_formatted = grub_xasprintf (_("Libreboot 20241206, 8th revision (GRUB menu): https://libreboot.org/")); ++ msg_formatted = grub_xasprintf (_("Libreboot 25.06 Luminous Lemon (GRUB menu): https://libreboot.org/")); if (!msg_formatted) return; diff --git a/config/grub/nvme/patches/0003-Add-CC0-license.patch b/config/grub/nvme/patches/0003-Add-CC0-license.patch index 5a664f32..5b09922b 100644 --- a/config/grub/nvme/patches/0003-Add-CC0-license.patch +++ b/config/grub/nvme/patches/0003-Add-CC0-license.patch @@ -1,7 +1,7 @@ -From 088901d1a7577b52d110803d3c6a0e198130e524 Mon Sep 17 00:00:00 2001 +From d1925aadf848c269b35a3004c104e014df582536 Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 03/14] Add CC0 license +Subject: [PATCH 03/15] Add CC0 license Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- diff --git a/config/grub/nvme/patches/0004-Define-GRUB_UINT32_MAX.patch b/config/grub/nvme/patches/0004-Define-GRUB_UINT32_MAX.patch index 9e7b2b99..be0e6b13 100644 --- a/config/grub/nvme/patches/0004-Define-GRUB_UINT32_MAX.patch +++ b/config/grub/nvme/patches/0004-Define-GRUB_UINT32_MAX.patch @@ -1,7 +1,7 @@ -From 1a3fdb4075f32eab6ebda0c813720f0336f1bde7 Mon Sep 17 00:00:00 2001 +From b0adafee9fcd820dd9d1c03a9619953cb3407854 Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 04/14] Define GRUB_UINT32_MAX +Subject: [PATCH 04/15] Define GRUB_UINT32_MAX Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- diff --git a/config/grub/nvme/patches/0005-Add-Argon2-algorithm.patch b/config/grub/nvme/patches/0005-Add-Argon2-algorithm.patch index df088e63..772a05d9 100644 --- a/config/grub/nvme/patches/0005-Add-Argon2-algorithm.patch +++ b/config/grub/nvme/patches/0005-Add-Argon2-algorithm.patch @@ -1,7 +1,7 @@ -From 490fb23a8bd4d669a3dc48f0581321f08f6f2020 Mon Sep 17 00:00:00 2001 +From c42e09330674005d8b2d74f75fca387af87e5465 Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 05/14] Add Argon2 algorithm +Subject: [PATCH 05/15] Add Argon2 algorithm Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- @@ -111,7 +111,7 @@ index f4367f895..9d96cedf9 100644 @section Gnulib diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def -index f70e02e69..f5f9b040c 100644 +index 24e8c8437..0ee65d54d 100644 --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def @@ -1219,6 +1219,14 @@ module = { diff --git a/config/grub/nvme/patches/0006-Error-on-missing-Argon2id-parameters.patch b/config/grub/nvme/patches/0006-Error-on-missing-Argon2id-parameters.patch index ef109bd3..508fd740 100644 --- a/config/grub/nvme/patches/0006-Error-on-missing-Argon2id-parameters.patch +++ b/config/grub/nvme/patches/0006-Error-on-missing-Argon2id-parameters.patch @@ -1,7 +1,7 @@ -From c8fac788716d0c8723149eee205f1f0bdc92efbe Mon Sep 17 00:00:00 2001 +From 6c74f4ff91f741e74dca1accc6c173c277f4ca5b Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 06/14] Error on missing Argon2id parameters +Subject: [PATCH 06/15] Error on missing Argon2id parameters Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- @@ -9,7 +9,7 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c -index 8036d76ff..efae8ac65 100644 +index b17cd2115..bbd8f5579 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c @@ -39,6 +39,7 @@ GRUB_MOD_LICENSE ("GPLv3+"); diff --git a/config/grub/nvme/patches/0007-Compile-with-Argon2id-support.patch b/config/grub/nvme/patches/0007-Compile-with-Argon2id-support.patch index 517752ee..1cfe1ab7 100644 --- a/config/grub/nvme/patches/0007-Compile-with-Argon2id-support.patch +++ b/config/grub/nvme/patches/0007-Compile-with-Argon2id-support.patch @@ -1,7 +1,7 @@ -From c9046b0a40ddc43d97e93127538bec0fde62d04e Mon Sep 17 00:00:00 2001 +From 50157401f90366e5b7c8f80ae7bc59c2276f7c35 Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 07/14] Compile with Argon2id support +Subject: [PATCH 07/15] Compile with Argon2id support Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- @@ -35,7 +35,7 @@ index 038253b37..2f19569c9 100644 common = grub-core/disk/luks.c; common = grub-core/disk/luks2.c; diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def -index f5f9b040c..f1f38d8d3 100644 +index 0ee65d54d..cd29a9df8 100644 --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def @@ -1242,7 +1242,7 @@ module = { @@ -48,7 +48,7 @@ index f5f9b040c..f1f38d8d3 100644 module = { diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c -index efae8ac65..2e742f5be 100644 +index bbd8f5579..02cd615d9 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c @@ -28,6 +28,7 @@ diff --git a/config/grub/nvme/patches/0008-Make-grub-install-work-with-Argon2.patch b/config/grub/nvme/patches/0008-Make-grub-install-work-with-Argon2.patch index 1cf06602..bdf9343e 100644 --- a/config/grub/nvme/patches/0008-Make-grub-install-work-with-Argon2.patch +++ b/config/grub/nvme/patches/0008-Make-grub-install-work-with-Argon2.patch @@ -1,7 +1,7 @@ -From bc99124fb0de2e4b0407f5b8591306241ffc7dc1 Mon Sep 17 00:00:00 2001 +From 2f7814e55cbae04cb2b307fee559f40cdc70609c Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 08/14] Make grub-install work with Argon2 +Subject: [PATCH 08/15] Make grub-install work with Argon2 Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- diff --git a/config/grub/nvme/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch b/config/grub/nvme/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch index 9a1d866b..3a8591d1 100644 --- a/config/grub/nvme/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch +++ b/config/grub/nvme/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch @@ -1,7 +1,7 @@ -From 47ee3e0a5635e99d04fb1248a4896c24ff5bc746 Mon Sep 17 00:00:00 2001 +From a90a11f02d5bfc8b9f9e1253a67906fde9102a14 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Mon, 30 Oct 2023 22:19:21 +0000 -Subject: [PATCH 09/14] at_keyboard coreboot: force scancodes2+translate +Subject: [PATCH 09/15] at_keyboard coreboot: force scancodes2+translate Scan code set 2 with translation should be assumed in every case, as the default starting position. diff --git a/config/grub/nvme/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch b/config/grub/nvme/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch index d11d424f..8cc2f1b6 100644 --- a/config/grub/nvme/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch +++ b/config/grub/nvme/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch @@ -1,7 +1,7 @@ -From 1934b92519503bfbb8c2f331afab6a34255250ad Mon Sep 17 00:00:00 2001 +From 86d06a8075d87cdaece0c5495f7505ff01f1e752 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Tue, 31 Oct 2023 10:33:28 +0000 -Subject: [PATCH 10/14] keylayouts: don't print "Unknown key" message +Subject: [PATCH 10/15] keylayouts: don't print "Unknown key" message on keyboards with stuck keys, this results in GRUB just spewing it repeatedly, preventing use of GRUB. diff --git a/config/grub/nvme/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch b/config/grub/nvme/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch index 3315f731..4f7014d8 100644 --- a/config/grub/nvme/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch +++ b/config/grub/nvme/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch @@ -1,7 +1,7 @@ -From 6f48f88cd472729f0274f36cef87e76a31b6db35 Mon Sep 17 00:00:00 2001 +From 92aab8e78e0a9dc400376f31fdd7eee980aa33aa Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sun, 5 Nov 2023 16:14:58 +0000 -Subject: [PATCH 11/14] don't print missing prefix errors on the screen +Subject: [PATCH 11/15] don't print missing prefix errors on the screen we do actually set the prefix. this patch modifies grub to still set grub_errno and return accordingly, diff --git a/config/grub/nvme/patches/0012-don-t-print-error-if-module-not-found.patch b/config/grub/nvme/patches/0012-don-t-print-error-if-module-not-found.patch index 26e08383..fb4c836a 100644 --- a/config/grub/nvme/patches/0012-don-t-print-error-if-module-not-found.patch +++ b/config/grub/nvme/patches/0012-don-t-print-error-if-module-not-found.patch @@ -1,7 +1,7 @@ -From aab095ed496aec3be4428b48a36a502426e0d275 Mon Sep 17 00:00:00 2001 +From 62f4bd17485c3d65649de2cef398ec708f35ea9d Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sun, 5 Nov 2023 16:36:22 +0000 -Subject: [PATCH 12/14] don't print error if module not found +Subject: [PATCH 12/15] don't print error if module not found still set grub_errno accordingly, and otherwise behave the same. in libreboot, we remove a lot of diff --git a/config/grub/nvme/patches/0013-don-t-print-empty-error-messages.patch b/config/grub/nvme/patches/0013-don-t-print-empty-error-messages.patch index 2519d1cc..90aefde6 100644 --- a/config/grub/nvme/patches/0013-don-t-print-empty-error-messages.patch +++ b/config/grub/nvme/patches/0013-don-t-print-empty-error-messages.patch @@ -1,7 +1,7 @@ -From 703903ca50b9a5705db0cf5dad1ed2561b28d886 Mon Sep 17 00:00:00 2001 +From 97381d8c85c0934ca500f07339d89f9f6245b079 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sun, 5 Nov 2023 17:25:20 +0000 -Subject: [PATCH 13/14] don't print empty error messages +Subject: [PATCH 13/15] don't print empty error messages this is part two of the quest to kill the prefix error message. after i disabled prefix-related diff --git a/config/grub/nvme/patches/0014-Add-native-NVMe-driver-based-on-SeaBIOS.patch b/config/grub/nvme/patches/0014-Add-native-NVMe-driver-based-on-SeaBIOS.patch index 9f2ee88f..a181ddc9 100644 --- a/config/grub/nvme/patches/0014-Add-native-NVMe-driver-based-on-SeaBIOS.patch +++ b/config/grub/nvme/patches/0014-Add-native-NVMe-driver-based-on-SeaBIOS.patch @@ -1,7 +1,7 @@ -From e2d0d0695ded985463aac53f6fec5ce945bd4893 Mon Sep 17 00:00:00 2001 +From c8d5481586133d7738a9e2d27b5554470bef719d Mon Sep 17 00:00:00 2001 From: Mate Kukri <km@mkukri.xyz> Date: Mon, 20 May 2024 11:43:35 +0100 -Subject: [PATCH 14/14] Add native NVMe driver based on SeaBIOS +Subject: [PATCH 14/15] Add native NVMe driver based on SeaBIOS Tested to successfully boot Debian on QEMU and OptiPlex 3050. @@ -31,10 +31,10 @@ index 43635d5ff..2c86dbbf6 100644 endif diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def -index f1f38d8d3..6f45989f8 100644 +index cd29a9df8..0034f8c61 100644 --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def -@@ -2677,3 +2677,9 @@ module = { +@@ -2682,3 +2682,9 @@ module = { cflags = '-Wno-uninitialized'; cppflags = '-I$(srcdir)/lib/libtasn1-grub -I$(srcdir)/tests/asn1/'; }; diff --git a/config/grub/nvme/patches/0015-kern-coreboot-mmap-Map-to-reserved.patch b/config/grub/nvme/patches/0015-kern-coreboot-mmap-Map-to-reserved.patch new file mode 100644 index 00000000..06ebc37c --- /dev/null +++ b/config/grub/nvme/patches/0015-kern-coreboot-mmap-Map-to-reserved.patch @@ -0,0 +1,37 @@ +From 9228fa35d5af64e67a33372231baa3862f6fad67 Mon Sep 17 00:00:00 2001 +From: Paul Menzel <pmenzel@molgen.mpg.de> +Date: Mon, 17 May 2021 10:24:36 +0200 +Subject: [PATCH 15/15] kern/coreboot/mmap: Map to reserved + +https://git.savannah.gnu.org/cgit/grub.git/commit/?id=6de9ee86bf9ae50967413e6a73b5dfd13e5ffb50 + +Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de> +--- + grub-core/kern/coreboot/mmap.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/grub-core/kern/coreboot/mmap.c b/grub-core/kern/coreboot/mmap.c +index caf8f7cef..2fc316e8d 100644 +--- a/grub-core/kern/coreboot/mmap.c ++++ b/grub-core/kern/coreboot/mmap.c +@@ -59,7 +59,7 @@ iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data) + /* Multiboot mmaps match with the coreboot mmap + definition. Therefore, we can just pass type + through. */ +- mem_region->type, ++ (mem_region->type >= 13) ? 2 : mem_region->type, + ctx->hook_data)) + return 1; + if (start < 0xa0000) +@@ -81,7 +81,7 @@ iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data) + /* Multiboot mmaps match with the coreboot mmap + definition. Therefore, we can just pass type + through. */ +- mem_region->type, ++ (mem_region->type >= 13) ? 2 : mem_region->type, + ctx->hook_data)) + return 1; + } +-- +2.39.5 + diff --git a/config/grub/nvme/target.cfg b/config/grub/nvme/target.cfg index aa86509f..0aff1315 100644 --- a/config/grub/nvme/target.cfg +++ b/config/grub/nvme/target.cfg @@ -1,4 +1,4 @@ # SPDX-License-Identifier: GPL-3.0-or-later tree="nvme" -rev="a4da71dafeea519b034beb159dfe80c486c2107c" +rev="a68a7dece464c35b1c8d20b98502b6881b103911" diff --git a/config/grub/xhci/target.cfg b/config/grub/xhci/target.cfg deleted file mode 100644 index 5727e70b..00000000 --- a/config/grub/xhci/target.cfg +++ /dev/null @@ -1,4 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -tree="xhci" -rev="a4da71dafeea519b034beb159dfe80c486c2107c" diff --git a/config/grub/xhci/config/payload b/config/grub/xhci_nvme/config/payload index d1f81fd3..9db22fe2 100644 --- a/config/grub/xhci/config/payload +++ b/config/grub/xhci_nvme/config/payload @@ -197,7 +197,7 @@ menuentry 'Load Operating System (incl. fully encrypted disks) [o]' --hotkey='o # using * is slow on some machines, but we use it here, # just once. in so doing, we find every lvm volume for vol in (*); do - if regexp ^lvm/ $vol; then + if regexp ^\\(lvm/ $vol; then lvmvol="${lvmvol} ${vol}" try_bootcfg "${vol}" fi diff --git a/config/grub/xhci/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch b/config/grub/xhci_nvme/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch index 5ce90533..d480d60a 100644 --- a/config/grub/xhci/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch +++ b/config/grub/xhci_nvme/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch @@ -1,7 +1,7 @@ -From 836f5ba3fe25ef53b4cfcd8a0a1f7a6fb9bcb21c Mon Sep 17 00:00:00 2001 +From 6a04ceb244366ddab75ce229afd19687ce35d15a Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sun, 31 Oct 2021 03:47:05 +0000 -Subject: [PATCH 01/25] mitigate grub's missing characters for borders/arrow +Subject: [PATCH 01/26] mitigate grub's missing characters for borders/arrow characters This cleans up the display on the main screen in GRUB. diff --git a/config/grub/xhci/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch b/config/grub/xhci_nvme/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch index 14163ab0..e50e6c6a 100644 --- a/config/grub/xhci/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch +++ b/config/grub/xhci_nvme/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch @@ -1,14 +1,14 @@ -From cb5fe4b9cae34e6ebb12953f62328c883a89a9f2 Mon Sep 17 00:00:00 2001 +From c18175417d4fa4501dac21ef26b9c30f67ece0fd Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sat, 19 Nov 2022 16:30:24 +0000 -Subject: [PATCH 02/25] say the name libreboot, in the grub menu +Subject: [PATCH 02/26] say the name libreboot, in the grub menu --- grub-core/normal/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c -index 04d058f55..b1cc8f236 100644 +index 96abfda2f..d806db9c4 100644 --- a/grub-core/normal/main.c +++ b/grub-core/normal/main.c @@ -209,7 +209,7 @@ grub_normal_init_page (struct grub_term_output *term, @@ -16,7 +16,7 @@ index 04d058f55..b1cc8f236 100644 grub_term_cls (term); - msg_formatted = grub_xasprintf (_("GNU GRUB version %s"), PACKAGE_VERSION); -+ msg_formatted = grub_xasprintf (_("Libreboot 20241206, 8th revision (GRUB menu): https://libreboot.org/")); ++ msg_formatted = grub_xasprintf (_("Libreboot 25.06 Luminous Lemon (GRUB menu): https://libreboot.org/")); if (!msg_formatted) return; diff --git a/config/grub/xhci/patches/0003-Add-CC0-license.patch b/config/grub/xhci_nvme/patches/0003-Add-CC0-license.patch index 19e195fa..c2fd1c01 100644 --- a/config/grub/xhci/patches/0003-Add-CC0-license.patch +++ b/config/grub/xhci_nvme/patches/0003-Add-CC0-license.patch @@ -1,7 +1,7 @@ -From ef94d2c0a9dab9cb1a6888b07893fa341c463649 Mon Sep 17 00:00:00 2001 +From 72b0b0f76b3cc7f03e42322b77400b89c3ccf766 Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 03/25] Add CC0 license +Subject: [PATCH 03/26] Add CC0 license Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- diff --git a/config/grub/xhci/patches/0004-Define-GRUB_UINT32_MAX.patch b/config/grub/xhci_nvme/patches/0004-Define-GRUB_UINT32_MAX.patch index cc309abd..d41c802e 100644 --- a/config/grub/xhci/patches/0004-Define-GRUB_UINT32_MAX.patch +++ b/config/grub/xhci_nvme/patches/0004-Define-GRUB_UINT32_MAX.patch @@ -1,7 +1,7 @@ -From aebfb4ee87203cc0dbe53ae1e951061efb73452f Mon Sep 17 00:00:00 2001 +From 451ca97719aa9178f3202554c74ab636baece616 Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 04/25] Define GRUB_UINT32_MAX +Subject: [PATCH 04/26] Define GRUB_UINT32_MAX Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- diff --git a/config/grub/xhci/patches/0005-Add-Argon2-algorithm.patch b/config/grub/xhci_nvme/patches/0005-Add-Argon2-algorithm.patch index 35b96718..d2d202db 100644 --- a/config/grub/xhci/patches/0005-Add-Argon2-algorithm.patch +++ b/config/grub/xhci_nvme/patches/0005-Add-Argon2-algorithm.patch @@ -1,7 +1,7 @@ -From 22a609e508350e2606f90f96d9d0569b2294cfcf Mon Sep 17 00:00:00 2001 +From 93404ba667dae9a5da9953f7a17245adfe529c78 Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 05/25] Add Argon2 algorithm +Subject: [PATCH 05/26] Add Argon2 algorithm Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- @@ -111,7 +111,7 @@ index f4367f895..9d96cedf9 100644 @section Gnulib diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def -index f70e02e69..f5f9b040c 100644 +index 24e8c8437..0ee65d54d 100644 --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def @@ -1219,6 +1219,14 @@ module = { diff --git a/config/grub/xhci/patches/0006-Error-on-missing-Argon2id-parameters.patch b/config/grub/xhci_nvme/patches/0006-Error-on-missing-Argon2id-parameters.patch index 5f487314..3fc6d3dc 100644 --- a/config/grub/xhci/patches/0006-Error-on-missing-Argon2id-parameters.patch +++ b/config/grub/xhci_nvme/patches/0006-Error-on-missing-Argon2id-parameters.patch @@ -1,7 +1,7 @@ -From 0c0da88e7619e5424ef062ea6867dfe32f032164 Mon Sep 17 00:00:00 2001 +From c75424efa3a6357d4785c7a66721809a642b3968 Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 06/25] Error on missing Argon2id parameters +Subject: [PATCH 06/26] Error on missing Argon2id parameters Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- @@ -9,7 +9,7 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c -index 8036d76ff..efae8ac65 100644 +index b17cd2115..bbd8f5579 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c @@ -39,6 +39,7 @@ GRUB_MOD_LICENSE ("GPLv3+"); diff --git a/config/grub/xhci/patches/0007-Compile-with-Argon2id-support.patch b/config/grub/xhci_nvme/patches/0007-Compile-with-Argon2id-support.patch index a809e2e4..0f9d92ee 100644 --- a/config/grub/xhci/patches/0007-Compile-with-Argon2id-support.patch +++ b/config/grub/xhci_nvme/patches/0007-Compile-with-Argon2id-support.patch @@ -1,7 +1,7 @@ -From 2a52c5c4f481469667c7c00e43befac28645d57f Mon Sep 17 00:00:00 2001 +From 801aa8b85d8f3b999f4660cc299a3517e811f0bb Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 07/25] Compile with Argon2id support +Subject: [PATCH 07/26] Compile with Argon2id support Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- @@ -35,7 +35,7 @@ index 038253b37..2f19569c9 100644 common = grub-core/disk/luks.c; common = grub-core/disk/luks2.c; diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def -index f5f9b040c..f1f38d8d3 100644 +index 0ee65d54d..cd29a9df8 100644 --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def @@ -1242,7 +1242,7 @@ module = { @@ -48,7 +48,7 @@ index f5f9b040c..f1f38d8d3 100644 module = { diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c -index efae8ac65..2e742f5be 100644 +index bbd8f5579..02cd615d9 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c @@ -28,6 +28,7 @@ diff --git a/config/grub/xhci/patches/0008-Make-grub-install-work-with-Argon2.patch b/config/grub/xhci_nvme/patches/0008-Make-grub-install-work-with-Argon2.patch index 7948ec91..21ad8855 100644 --- a/config/grub/xhci/patches/0008-Make-grub-install-work-with-Argon2.patch +++ b/config/grub/xhci_nvme/patches/0008-Make-grub-install-work-with-Argon2.patch @@ -1,7 +1,7 @@ -From 15076c6c38f4b7bc8e684974a908295478fbae9d Mon Sep 17 00:00:00 2001 +From c114684bb103af427296e40b78adc0d036a9b237 Mon Sep 17 00:00:00 2001 From: Ax333l <main@axelen.xyz> Date: Thu, 17 Aug 2023 00:00:00 +0000 -Subject: [PATCH 08/25] Make grub-install work with Argon2 +Subject: [PATCH 08/26] Make grub-install work with Argon2 Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- diff --git a/config/grub/xhci/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch b/config/grub/xhci_nvme/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch index c18061ba..87164461 100644 --- a/config/grub/xhci/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch +++ b/config/grub/xhci_nvme/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch @@ -1,7 +1,7 @@ -From 696f0d54d306472ad00b46e5a702080ae16d0101 Mon Sep 17 00:00:00 2001 +From dfbfe525d6f138e3db1e683096302045c064096f Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Mon, 30 Oct 2023 22:19:21 +0000 -Subject: [PATCH 09/25] at_keyboard coreboot: force scancodes2+translate +Subject: [PATCH 09/26] at_keyboard coreboot: force scancodes2+translate Scan code set 2 with translation should be assumed in every case, as the default starting position. diff --git a/config/grub/xhci/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch b/config/grub/xhci_nvme/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch index 80f04547..607f3541 100644 --- a/config/grub/xhci/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch +++ b/config/grub/xhci_nvme/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch @@ -1,7 +1,7 @@ -From 907e8f373bac0c618c491a3a5cb4137d4446de05 Mon Sep 17 00:00:00 2001 +From 18f88785a46e6657e1404e1914638f4768d65008 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Tue, 31 Oct 2023 10:33:28 +0000 -Subject: [PATCH 10/25] keylayouts: don't print "Unknown key" message +Subject: [PATCH 10/26] keylayouts: don't print "Unknown key" message on keyboards with stuck keys, this results in GRUB just spewing it repeatedly, preventing use of GRUB. diff --git a/config/grub/xhci/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch b/config/grub/xhci_nvme/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch index a89f9e29..4f03515e 100644 --- a/config/grub/xhci/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch +++ b/config/grub/xhci_nvme/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch @@ -1,7 +1,7 @@ -From b5693f53db4d337b4345192da08130b0f2f9bd08 Mon Sep 17 00:00:00 2001 +From afd68d1e132970e4fa8e26e9ca0ccb7efb69dc37 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sun, 5 Nov 2023 16:14:58 +0000 -Subject: [PATCH 11/25] don't print missing prefix errors on the screen +Subject: [PATCH 11/26] don't print missing prefix errors on the screen we do actually set the prefix. this patch modifies grub to still set grub_errno and return accordingly, diff --git a/config/grub/xhci/patches/0012-don-t-print-error-if-module-not-found.patch b/config/grub/xhci_nvme/patches/0012-don-t-print-error-if-module-not-found.patch index 913e148c..e817ca85 100644 --- a/config/grub/xhci/patches/0012-don-t-print-error-if-module-not-found.patch +++ b/config/grub/xhci_nvme/patches/0012-don-t-print-error-if-module-not-found.patch @@ -1,7 +1,7 @@ -From 55c2e4b1d413fa03d9597007b16d136b3a6fa713 Mon Sep 17 00:00:00 2001 +From 06f9480a670d374e1599bf9871f6cd26656418a7 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sun, 5 Nov 2023 16:36:22 +0000 -Subject: [PATCH 12/25] don't print error if module not found +Subject: [PATCH 12/26] don't print error if module not found still set grub_errno accordingly, and otherwise behave the same. in libreboot, we remove a lot of diff --git a/config/grub/xhci/patches/0013-don-t-print-empty-error-messages.patch b/config/grub/xhci_nvme/patches/0013-don-t-print-empty-error-messages.patch index 381bca8b..4bf96b50 100644 --- a/config/grub/xhci/patches/0013-don-t-print-empty-error-messages.patch +++ b/config/grub/xhci_nvme/patches/0013-don-t-print-empty-error-messages.patch @@ -1,7 +1,7 @@ -From 93210cf7c046c0c9c8c77ffde4397a25d391c64d Mon Sep 17 00:00:00 2001 +From 272c5f5724c0790aff48b0d6ba75928de2275b33 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sun, 5 Nov 2023 17:25:20 +0000 -Subject: [PATCH 13/25] don't print empty error messages +Subject: [PATCH 13/26] don't print empty error messages this is part two of the quest to kill the prefix error message. after i disabled prefix-related diff --git a/config/grub/xhci/patches/0014-grub-core-bus-usb-Parse-SuperSpeed-companion-descrip.patch b/config/grub/xhci_nvme/patches/0014-grub-core-bus-usb-Parse-SuperSpeed-companion-descrip.patch index a2df041f..c04e138e 100644 --- a/config/grub/xhci/patches/0014-grub-core-bus-usb-Parse-SuperSpeed-companion-descrip.patch +++ b/config/grub/xhci_nvme/patches/0014-grub-core-bus-usb-Parse-SuperSpeed-companion-descrip.patch @@ -1,7 +1,7 @@ -From a216d09bffcb2f2bff96445cca412c9328b4a6bf Mon Sep 17 00:00:00 2001 +From 1c5716f42deb27b1111839b9782fd06b077eaa90 Mon Sep 17 00:00:00 2001 From: Patrick Rudolph <patrick.rudolph@9elements.com> Date: Sun, 15 Nov 2020 19:00:27 +0100 -Subject: [PATCH 14/25] grub-core/bus/usb: Parse SuperSpeed companion +Subject: [PATCH 14/26] grub-core/bus/usb: Parse SuperSpeed companion descriptors Parse the SS_ENDPOINT_COMPANION descriptor, which is only present on USB 3.0 diff --git a/config/grub/xhci/patches/0015-usb-Add-enum-for-xHCI.patch b/config/grub/xhci_nvme/patches/0015-usb-Add-enum-for-xHCI.patch index 1e45acc8..4de9d894 100644 --- a/config/grub/xhci/patches/0015-usb-Add-enum-for-xHCI.patch +++ b/config/grub/xhci_nvme/patches/0015-usb-Add-enum-for-xHCI.patch @@ -1,7 +1,7 @@ -From cb56fbac65869f04fcf9b0b4b360f4ccc6deabed Mon Sep 17 00:00:00 2001 +From 260f27e1ea1dbcdeb63d4411dbdddb97ebb39668 Mon Sep 17 00:00:00 2001 From: Patrick Rudolph <patrick.rudolph@9elements.com> Date: Mon, 7 Dec 2020 08:41:22 +0100 -Subject: [PATCH 15/25] usb: Add enum for xHCI +Subject: [PATCH 15/26] usb: Add enum for xHCI Will be used in future patches. diff --git a/config/grub/xhci/patches/0016-usbtrans-Set-default-maximum-packet-size.patch b/config/grub/xhci_nvme/patches/0016-usbtrans-Set-default-maximum-packet-size.patch index 537ed958..908c3adb 100644 --- a/config/grub/xhci/patches/0016-usbtrans-Set-default-maximum-packet-size.patch +++ b/config/grub/xhci_nvme/patches/0016-usbtrans-Set-default-maximum-packet-size.patch @@ -1,7 +1,7 @@ -From 3c735bf84a74e5a5612ca9b59868e050da8a46fe Mon Sep 17 00:00:00 2001 +From 97f71a34c011ad9d37b96c02eb7483fe253c6025 Mon Sep 17 00:00:00 2001 From: Patrick Rudolph <patrick.rudolph@9elements.com> Date: Mon, 7 Dec 2020 08:41:23 +0100 -Subject: [PATCH 16/25] usbtrans: Set default maximum packet size +Subject: [PATCH 16/26] usbtrans: Set default maximum packet size Set the maximum packet size to 512 for SuperSpeed devices. diff --git a/config/grub/xhci/patches/0017-grub-core-bus-usb-Add-function-pointer-for-attach-de.patch b/config/grub/xhci_nvme/patches/0017-grub-core-bus-usb-Add-function-pointer-for-attach-de.patch index d61f2a8a..e4798a8d 100644 --- a/config/grub/xhci/patches/0017-grub-core-bus-usb-Add-function-pointer-for-attach-de.patch +++ b/config/grub/xhci_nvme/patches/0017-grub-core-bus-usb-Add-function-pointer-for-attach-de.patch @@ -1,7 +1,7 @@ -From c01366a852d40e060fc060dda6cf2891c9c50bd0 Mon Sep 17 00:00:00 2001 +From ea5081844c3112b582f52360cfb14ef95b56f5e1 Mon Sep 17 00:00:00 2001 From: Patrick Rudolph <patrick.rudolph@9elements.com> Date: Sun, 15 Nov 2020 19:51:42 +0100 -Subject: [PATCH 17/25] grub-core/bus/usb: Add function pointer for +Subject: [PATCH 17/26] grub-core/bus/usb: Add function pointer for attach/detach events The xHCI code needs to be called for attaching or detaching a device. diff --git a/config/grub/xhci/patches/0018-grub-core-bus-usb-usbhub-Add-new-private-fields-for-.patch b/config/grub/xhci_nvme/patches/0018-grub-core-bus-usb-usbhub-Add-new-private-fields-for-.patch index 75314780..d2067637 100644 --- a/config/grub/xhci/patches/0018-grub-core-bus-usb-usbhub-Add-new-private-fields-for-.patch +++ b/config/grub/xhci_nvme/patches/0018-grub-core-bus-usb-usbhub-Add-new-private-fields-for-.patch @@ -1,7 +1,7 @@ -From 1ec77a83178e5c1c005b6b27139287f1463f1b49 Mon Sep 17 00:00:00 2001 +From 7db1cdd1cdbb79a8da04648dcbf7318d200f72a4 Mon Sep 17 00:00:00 2001 From: Patrick Rudolph <patrick.rudolph@9elements.com> Date: Mon, 7 Dec 2020 08:41:25 +0100 -Subject: [PATCH 18/25] grub-core/bus/usb/usbhub: Add new private fields for +Subject: [PATCH 18/26] grub-core/bus/usb/usbhub: Add new private fields for xHCI controller Store the root port number, the route, consisting out of the port ID diff --git a/config/grub/xhci/patches/0019-grub-core-bus-usb-Add-xhci-support.patch b/config/grub/xhci_nvme/patches/0019-grub-core-bus-usb-Add-xhci-support.patch index 043320b9..b4d6e956 100644 --- a/config/grub/xhci/patches/0019-grub-core-bus-usb-Add-xhci-support.patch +++ b/config/grub/xhci_nvme/patches/0019-grub-core-bus-usb-Add-xhci-support.patch @@ -1,7 +1,7 @@ -From 03998bc9b74366ecf64d5f76fe4b398ec7fc5d31 Mon Sep 17 00:00:00 2001 +From 6b34ac2449362da5139e702e484a432d828a505d Mon Sep 17 00:00:00 2001 From: Patrick Rudolph <patrick.rudolph@9elements.com> Date: Mon, 7 Dec 2020 08:41:26 +0100 -Subject: [PATCH 19/25] grub-core/bus/usb: Add xhci support +Subject: [PATCH 19/26] grub-core/bus/usb: Add xhci support Add support for xHCI USB controllers. The code is based on seabios implementation, but has been heavily @@ -67,7 +67,7 @@ index 43635d5ff..65016f856 100644 endif diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def -index f1f38d8d3..fda723f0c 100644 +index cd29a9df8..d3947739f 100644 --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def @@ -667,6 +667,13 @@ module = { diff --git a/config/grub/xhci/patches/0020-grub-core-bus-usb-usbhub-Add-xHCI-non-root-hub-suppo.patch b/config/grub/xhci_nvme/patches/0020-grub-core-bus-usb-usbhub-Add-xHCI-non-root-hub-suppo.patch index 6c5c1731..31e831ec 100644 --- a/config/grub/xhci/patches/0020-grub-core-bus-usb-usbhub-Add-xHCI-non-root-hub-suppo.patch +++ b/config/grub/xhci_nvme/patches/0020-grub-core-bus-usb-usbhub-Add-xHCI-non-root-hub-suppo.patch @@ -1,7 +1,7 @@ -From 7571efed2cdd949a203401630a19f42c74095797 Mon Sep 17 00:00:00 2001 +From d84ac94dc55baad9a2297980b2017cd22e4ecb3c Mon Sep 17 00:00:00 2001 From: Patrick Rudolph <patrick.rudolph@9elements.com> Date: Mon, 7 Dec 2020 08:41:27 +0100 -Subject: [PATCH 20/25] grub-core/bus/usb/usbhub: Add xHCI non root hub support +Subject: [PATCH 20/26] grub-core/bus/usb/usbhub: Add xHCI non root hub support Tested on Intel PCH C246, the USB3 hub can be configured by grub. diff --git a/config/grub/xhci/patches/0021-xHCI-also-accept-SBRN-0x31-and-0x32.patch b/config/grub/xhci_nvme/patches/0021-xHCI-also-accept-SBRN-0x31-and-0x32.patch index 587782c2..f6e0f366 100644 --- a/config/grub/xhci/patches/0021-xHCI-also-accept-SBRN-0x31-and-0x32.patch +++ b/config/grub/xhci_nvme/patches/0021-xHCI-also-accept-SBRN-0x31-and-0x32.patch @@ -1,7 +1,7 @@ -From 0c58853bd1e4ca63cdeb5b5ef949d78cbd9028d0 Mon Sep 17 00:00:00 2001 +From 0433c5bb1e40fba93205e1c9fd6b1b397d31ae5a Mon Sep 17 00:00:00 2001 From: Sven Anderson <sven@anderson.de> Date: Sat, 28 May 2022 21:39:23 +0200 -Subject: [PATCH 21/25] xHCI: also accept SBRN 0x31 and 0x32 +Subject: [PATCH 21/26] xHCI: also accept SBRN 0x31 and 0x32 Signed-off-by: Sven Anderson <sven@anderson.de> --- diff --git a/config/grub/xhci/patches/0022-xhci-fix-port-indexing.patch b/config/grub/xhci_nvme/patches/0022-xhci-fix-port-indexing.patch index 64872650..edfcca2c 100644 --- a/config/grub/xhci/patches/0022-xhci-fix-port-indexing.patch +++ b/config/grub/xhci_nvme/patches/0022-xhci-fix-port-indexing.patch @@ -1,7 +1,7 @@ -From 0da64bd7a144361198ee3dbcd4921fbbdf5c08fa Mon Sep 17 00:00:00 2001 +From d300f12cb624998f3d5ab5948c3fc64d6d7baf4f Mon Sep 17 00:00:00 2001 From: Sven Anderson <sven@anderson.de> Date: Mon, 13 Jan 2025 19:51:41 +0100 -Subject: [PATCH 22/25] xhci: fix port indexing +Subject: [PATCH 22/26] xhci: fix port indexing --- grub-core/bus/usb/xhci.c | 10 +++++----- diff --git a/config/grub/xhci/patches/0023-xhci-configure-TT-for-non-root-hubs.patch b/config/grub/xhci_nvme/patches/0023-xhci-configure-TT-for-non-root-hubs.patch index c63850d6..b41db45f 100644 --- a/config/grub/xhci/patches/0023-xhci-configure-TT-for-non-root-hubs.patch +++ b/config/grub/xhci_nvme/patches/0023-xhci-configure-TT-for-non-root-hubs.patch @@ -1,7 +1,7 @@ -From fa9c2124b1ca476f8b2ce168d56527100757ef90 Mon Sep 17 00:00:00 2001 +From 0a669ef9815267de4fb14f3c329431ac531755c9 Mon Sep 17 00:00:00 2001 From: Sven Anderson <sven@anderson.de> Date: Mon, 13 Jan 2025 20:26:32 +0100 -Subject: [PATCH 23/25] xhci: configure TT for non-root-hubs +Subject: [PATCH 23/26] xhci: configure TT for non-root-hubs --- grub-core/bus/usb/usbhub.c | 6 +++++ diff --git a/config/grub/xhci/patches/0024-Fix-compilation-on-x86_64.patch b/config/grub/xhci_nvme/patches/0024-Fix-compilation-on-x86_64.patch index d03db740..cdc692d6 100644 --- a/config/grub/xhci/patches/0024-Fix-compilation-on-x86_64.patch +++ b/config/grub/xhci_nvme/patches/0024-Fix-compilation-on-x86_64.patch @@ -1,7 +1,7 @@ -From b049a11e2cf54e51b3a9fd4d3435089999e61702 Mon Sep 17 00:00:00 2001 +From 625fdcf42f2cf11a4bfe644412450c9e4f551d25 Mon Sep 17 00:00:00 2001 From: Patrick Rudolph <patrick.rudolph@9elements.com> Date: Wed, 24 Feb 2021 08:25:41 +0100 -Subject: [PATCH 24/25] Fix compilation on x86_64 +Subject: [PATCH 24/26] Fix compilation on x86_64 Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> --- diff --git a/config/grub/xhci/patches/0025-Add-native-NVMe-driver-based-on-SeaBIOS.patch b/config/grub/xhci_nvme/patches/0025-Add-native-NVMe-driver-based-on-SeaBIOS.patch index 96ecbaaf..e9dc54b5 100644 --- a/config/grub/xhci/patches/0025-Add-native-NVMe-driver-based-on-SeaBIOS.patch +++ b/config/grub/xhci_nvme/patches/0025-Add-native-NVMe-driver-based-on-SeaBIOS.patch @@ -1,7 +1,7 @@ -From 7bb8bb98b86fc97e1ce04e6169d517acbd476e1e Mon Sep 17 00:00:00 2001 +From 1ede42b39a87ccb2cc43d919f3ee4803d6551102 Mon Sep 17 00:00:00 2001 From: Mate Kukri <km@mkukri.xyz> Date: Mon, 20 May 2024 11:43:35 +0100 -Subject: [PATCH 25/25] Add native NVMe driver based on SeaBIOS +Subject: [PATCH 25/26] Add native NVMe driver based on SeaBIOS Tested to successfully boot Debian on QEMU and OptiPlex 3050. @@ -31,10 +31,10 @@ index 65016f856..7bc0866ba 100644 endif diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def -index fda723f0c..367e4b5e6 100644 +index d3947739f..fb9f24c0f 100644 --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def -@@ -2684,3 +2684,9 @@ module = { +@@ -2689,3 +2689,9 @@ module = { cflags = '-Wno-uninitialized'; cppflags = '-I$(srcdir)/lib/libtasn1-grub -I$(srcdir)/tests/asn1/'; }; diff --git a/config/grub/xhci_nvme/patches/0026-kern-coreboot-mmap-Map-to-reserved.patch b/config/grub/xhci_nvme/patches/0026-kern-coreboot-mmap-Map-to-reserved.patch new file mode 100644 index 00000000..712d2218 --- /dev/null +++ b/config/grub/xhci_nvme/patches/0026-kern-coreboot-mmap-Map-to-reserved.patch @@ -0,0 +1,37 @@ +From d73ca74ef879bf602274bee6eb24f0080a45d235 Mon Sep 17 00:00:00 2001 +From: Paul Menzel <pmenzel@molgen.mpg.de> +Date: Mon, 17 May 2021 10:24:36 +0200 +Subject: [PATCH 26/26] kern/coreboot/mmap: Map to reserved + +https://git.savannah.gnu.org/cgit/grub.git/commit/?id=6de9ee86bf9ae50967413e6a73b5dfd13e5ffb50 + +Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de> +--- + grub-core/kern/coreboot/mmap.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/grub-core/kern/coreboot/mmap.c b/grub-core/kern/coreboot/mmap.c +index caf8f7cef..2fc316e8d 100644 +--- a/grub-core/kern/coreboot/mmap.c ++++ b/grub-core/kern/coreboot/mmap.c +@@ -59,7 +59,7 @@ iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data) + /* Multiboot mmaps match with the coreboot mmap + definition. Therefore, we can just pass type + through. */ +- mem_region->type, ++ (mem_region->type >= 13) ? 2 : mem_region->type, + ctx->hook_data)) + return 1; + if (start < 0xa0000) +@@ -81,7 +81,7 @@ iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data) + /* Multiboot mmaps match with the coreboot mmap + definition. Therefore, we can just pass type + through. */ +- mem_region->type, ++ (mem_region->type >= 13) ? 2 : mem_region->type, + ctx->hook_data)) + return 1; + } +-- +2.39.5 + diff --git a/config/grub/xhci_nvme/target.cfg b/config/grub/xhci_nvme/target.cfg new file mode 100644 index 00000000..c3c8127d --- /dev/null +++ b/config/grub/xhci_nvme/target.cfg @@ -0,0 +1,4 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +tree="xhci_nvme" +rev="a68a7dece464c35b1c8d20b98502b6881b103911" diff --git a/config/ifd/hp8300usdt/ifd b/config/ifd/hp8300usdt/ifd Binary files differindex 3b81b704..282a8abb 100644 --- a/config/ifd/hp8300usdt/ifd +++ b/config/ifd/hp8300usdt/ifd diff --git a/config/ifd/hppro3500series/ifd b/config/ifd/hppro3500series/ifd Binary files differnew file mode 100644 index 00000000..f3cebe6e --- /dev/null +++ b/config/ifd/hppro3500series/ifd diff --git a/config/ifd/x2e_n150/ifd b/config/ifd/x2e_n150/ifd Binary files differnew file mode 100644 index 00000000..3d58d9a1 --- /dev/null +++ b/config/ifd/x2e_n150/ifd diff --git a/config/me_cleaner/patches/0001-Add-a-p-option-skip-FPTR-checks.patch b/config/me_cleaner/patches/0001-Add-a-p-option-skip-FPTR-checks.patch new file mode 100644 index 00000000..0689f0a6 --- /dev/null +++ b/config/me_cleaner/patches/0001-Add-a-p-option-skip-FPTR-checks.patch @@ -0,0 +1,71 @@ +From e9ceef92dc53501d8d6debc9f5ac9580149eb3dc Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Sat, 27 Sep 2025 22:52:45 +0100 +Subject: [PATCH 1/1] Add a -p option (skip FPTR checks) + +if you pass -k (keep fptr modules), don't use -r, don't +use -t, you can essentially just use me_cleaner to +extract a ME image without changing it. this is useful +when for example, you just want to set the HAP bit. + +however, me_cleaner still performs a FPTR check. + +on some newer ME versions, it's always invalid according +to me_cleaner, because for example it doesn't handle +ME16 very well yet. + +this patch adds an option to override the FPTR check + +either pass -p or --pass-fptr + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + me_cleaner.py | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/me_cleaner.py b/me_cleaner.py +index 473e761..36760fb 100755 +--- a/me_cleaner.py ++++ b/me_cleaner.py +@@ -276,8 +276,10 @@ def check_partition_signature(f, offset): + return "{:#x}".format(decrypted_sig).endswith(sha256.hexdigest()) # FIXME + + +-def print_check_partition_signature(f, offset): +- if check_partition_signature(f, offset): ++def print_check_partition_signature(f, offset, pass_fptr): ++ if pass_fptr: ++ print("Skipping FPTR checks because the user told us to") ++ elif check_partition_signature(f, offset): + print("VALID") + else: + print("INVALID!!") +@@ -517,6 +519,8 @@ if __name__ == "__main__": + "--extract-me)", action="store_true") + parser.add_argument("-k", "--keep-modules", help="don't remove the FTPR " + "modules, even when possible", action="store_true") ++ parser.add_argument("-p", "--pass-fptr", help="skip FTPR signature checks" ++ "regardless of other operations", action="store_true") + bw_list.add_argument("-w", "--whitelist", metavar="whitelist", + help="Comma separated list of additional partitions " + "to keep in the final image. This can be used to " +@@ -1024,12 +1028,14 @@ if __name__ == "__main__": + print("Checking the FTPR RSA signature of the extracted ME " + "image... ", end="") + print_check_partition_signature(mef_copy, +- ftpr_offset + ftpr_mn2_offset) ++ ftpr_offset + ftpr_mn2_offset, ++ args.pass_fptr) + mef_copy.close() + + if not me6_ignition: + print("Checking the FTPR RSA signature... ", end="") +- print_check_partition_signature(mef, ftpr_offset + ftpr_mn2_offset) ++ print_check_partition_signature(mef, ftpr_offset + ftpr_mn2_offset, ++ args.pass_fptr) + + f.close() + +-- +2.47.3 + diff --git a/config/pcsx-redux/patches/0002-lbmk-hack-add-no-ops-for-config-commands.patch b/config/pcsx-redux/patches/0002-lbmk-hack-add-no-ops-for-config-commands.patch new file mode 100644 index 00000000..1a495d60 --- /dev/null +++ b/config/pcsx-redux/patches/0002-lbmk-hack-add-no-ops-for-config-commands.patch @@ -0,0 +1,43 @@ +From e4cd98fb5e3baf8260a3692cab745dea925b0764 Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Thu, 22 May 2025 11:29:37 +0100 +Subject: [PATCH 1/1] lbmk hack: add no-ops for config commands + +./mk -u, -m, -s, -l and -n cause errors without +arguments, because pcsx-redux's makefile doesn't +have them. additionally, i use my own makefile here, +so that only the openbios is compiled. + +add these so that lbmk doesn't crash during tests. + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + lbmkbofhmakefile | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/lbmkbofhmakefile b/lbmkbofhmakefile +index fe2e36d2..e0e2a11e 100644 +--- a/lbmkbofhmakefile ++++ b/lbmkbofhmakefile +@@ -14,3 +14,18 @@ clean: + + distclean: + make -C src/mips/openbios clean ++ ++oldconfig: ++ : ++ ++menuconfig: ++ : ++ ++savedefconfig: ++ : ++ ++olddefconfig: ++ : ++ ++nconfig: ++ : +-- +2.39.5 + diff --git a/config/pico-sdk/patches/0001-Fix-GCC14.1-compile-error-in-w25x10cls.S-2000.patch b/config/pico-sdk/patches/0001-Fix-GCC14.1-compile-error-in-w25x10cls.S-2000.patch new file mode 100644 index 00000000..c52e701d --- /dev/null +++ b/config/pico-sdk/patches/0001-Fix-GCC14.1-compile-error-in-w25x10cls.S-2000.patch @@ -0,0 +1,37 @@ +From 5c1f16cd723de3c2e0b57f1a34e2317cdabef294 Mon Sep 17 00:00:00 2001 +From: "Earle F. Philhower, III" <earlephilhower@yahoo.com> +Date: Tue, 5 Nov 2024 12:06:04 -0800 +Subject: [PATCH 1/1] Fix GCC14.1 compile error in w25x10cls.S (#2000) + +GCC14 doesn't like the 2-character temporary label "00" and throws an error +.../pico-sdk/src/rp2040/boot_stage2/boot2_w25x10cl.S: Assembler messages: +.../pico-sdk/src/rp2040/boot_stage2/boot2_w25x10cl.S:147: Error: junk at end of line, first unrecognized character is `0' +.../pico/rp2040/pico-sdk/src/rp2040/boot_stage2/boot2_w25x10cl.S:150: Error: garbage following instruction -- `beq 00b' + +Convert it to a single number, "1", like in other boot2xxx.S files + +Fixes #1999 +--- + src/rp2_common/boot_stage2/boot2_w25x10cl.S | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/rp2_common/boot_stage2/boot2_w25x10cl.S b/src/rp2_common/boot_stage2/boot2_w25x10cl.S +index 89d2cd1..1bf7e10 100644 +--- a/src/rp2_common/boot_stage2/boot2_w25x10cl.S ++++ b/src/rp2_common/boot_stage2/boot2_w25x10cl.S +@@ -139,10 +139,10 @@ regular_func _stage2_boot + // status register and checking for the "RX FIFO Not Empty" flag to assert. + + movs r1, #SSI_SR_RFNE_BITS +-00: ++1: + ldr r0, [r3, #SSI_SR_OFFSET] // Read status register + tst r0, r1 // RFNE status flag set? +- beq 00b // If not then wait ++ beq 1b // If not then wait + + // At this point CN# will be deasserted and the SPI clock will not be running. + // The Winbond WX25X10CL device will be in continuous read, dual I/O mode and +-- +2.39.5 + diff --git a/config/seabios/default/patches/0001-romfile-implement-a-generic-loader.patch b/config/seabios/default/patches/0001-romfile-implement-a-generic-loader.patch index f0682c11..dc1464bb 100644 --- a/config/seabios/default/patches/0001-romfile-implement-a-generic-loader.patch +++ b/config/seabios/default/patches/0001-romfile-implement-a-generic-loader.patch @@ -1,7 +1,7 @@ -From 2aff8adc1dcd1315877fdb4ac4ef5e649c5b7d11 Mon Sep 17 00:00:00 2001 +From 04e972e14191f3a480e569e972c195ba8eb53a30 Mon Sep 17 00:00:00 2001 From: Riku Viitanen <riku.viitanen@protonmail.com> Date: Sat, 10 Feb 2024 21:23:33 +0200 -Subject: [PATCH 1/2] romfile: implement a generic loader +Subject: [PATCH 1/4] romfile: implement a generic loader romfile_loadfile_g: Based on romfile_loadfile but more flexible. User has to supply pointer @@ -18,7 +18,7 @@ Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com> 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/romfile.c b/src/romfile.c -index b598274e..8bf95713 100644 +index 8072a915..f4d5f82d 100644 --- a/src/romfile.c +++ b/src/romfile.c @@ -47,10 +47,12 @@ romfile_find(const char *name) @@ -33,7 +33,7 @@ index b598274e..8bf95713 100644 void * -romfile_loadfile(const char *name, int *psize) +romfile_loadfile_g(const char *name, int *psize, -+ void *(*malloc_fn)(), int add_len) ++ void *(*malloc_fn)(u32), int add_len) { struct romfile_s *file = romfile_find(name); if (!file) @@ -69,7 +69,7 @@ index b598274e..8bf95713 100644 } diff --git a/src/romfile.h b/src/romfile.h -index 3e0f8200..a320a5bc 100644 +index ae2f4ac7..f62b2fee 100644 --- a/src/romfile.h +++ b/src/romfile.h @@ -13,6 +13,8 @@ struct romfile_s { @@ -77,10 +77,10 @@ index 3e0f8200..a320a5bc 100644 struct romfile_s *romfile_findprefix(const char *prefix, struct romfile_s *prev); struct romfile_s *romfile_find(const char *name); +void *romfile_loadfile_g(const char *name, int *psize, -+ void *(*malloc_fn)(), int add_len); ++ void *(*malloc_fn)(u32), int add_len); void *romfile_loadfile(const char *name, int *psize); u64 romfile_loadint(const char *name, u64 defval); - + u32 romfile_loadbool(const char *name, u32 defval); -- -2.43.0 +2.39.5 diff --git a/config/seabios/default/patches/0002-vgahooks-optionroms-implement-mxm-3.0-interrupts.patch b/config/seabios/default/patches/0002-vgahooks-optionroms-implement-mxm-3.0-interrupts.patch index f05a34c2..5224d768 100644 --- a/config/seabios/default/patches/0002-vgahooks-optionroms-implement-mxm-3.0-interrupts.patch +++ b/config/seabios/default/patches/0002-vgahooks-optionroms-implement-mxm-3.0-interrupts.patch @@ -1,7 +1,7 @@ -From 1e7c443d069ef817c4e699bd6675efff4ebddb86 Mon Sep 17 00:00:00 2001 +From 270ac30b862c58c69455dbdace716044d29b20e2 Mon Sep 17 00:00:00 2001 From: Riku Viitanen <riku.viitanen@protonmail.com> Date: Sat, 10 Feb 2024 21:38:17 +0200 -Subject: [PATCH 2/2] vgahooks, optionroms: implement mxm 3.0 interrupts +Subject: [PATCH 2/4] vgahooks, optionroms: implement mxm 3.0 interrupts VGAROMs on MXM graphics cards need certain int15h functions present. @@ -184,5 +184,5 @@ index 00000000..f0c203af + +#endif // vgahooks.h -- -2.43.0 +2.39.5 diff --git a/config/seabios/default/patches/0003-Print-the-Libreboot-version-in-the-SeaBIOS-menu.patch b/config/seabios/default/patches/0003-Print-the-Libreboot-version-in-the-SeaBIOS-menu.patch index 5cf60763..c78d6660 100644 --- a/config/seabios/default/patches/0003-Print-the-Libreboot-version-in-the-SeaBIOS-menu.patch +++ b/config/seabios/default/patches/0003-Print-the-Libreboot-version-in-the-SeaBIOS-menu.patch @@ -1,7 +1,7 @@ -From ebd8293eb1af20c204beb3aa1394865185e2f3f0 Mon Sep 17 00:00:00 2001 +From cc6b13ddea9086586d34621d0b82d820af5ae785 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Mon, 6 Jan 2025 18:49:58 +0000 -Subject: [PATCH 1/1] Print the Libreboot version in the SeaBIOS menu +Subject: [PATCH 3/4] Print the Libreboot version in the SeaBIOS menu Signed-off-by: Leah Rowe <leah@libreboot.org> --- @@ -9,7 +9,7 @@ Signed-off-by: Leah Rowe <leah@libreboot.org> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bootsplash.c b/src/bootsplash.c -index 538b316d..8746098c 100644 +index 538b316d..9eed0b12 100644 --- a/src/bootsplash.c +++ b/src/bootsplash.c @@ -48,7 +48,7 @@ enable_vga_console(void) @@ -17,7 +17,7 @@ index 538b316d..8746098c 100644 // Write to screen. - printf("SeaBIOS (version %s)\n", VERSION); -+ printf("Libreboot 20241206, 8th revision (SeaBIOS menu): https://libreboot.org/\n"); ++ printf("Libreboot 25.06 Luminous Lemon (SeaBIOS menu): https://libreboot.org/\n"); display_uuid(); } diff --git a/config/seabios/default/target.cfg b/config/seabios/default/target.cfg index 9ff1db3e..5058266d 100644 --- a/config/seabios/default/target.cfg +++ b/config/seabios/default/target.cfg @@ -1,4 +1,4 @@ # SPDX-License-Identifier: GPL-3.0-or-later tree="default" -rev="1602647f1be24fe63d11138d802e735c8e674e63" +rev="b686f4600792c504f01929f761be473e298de33d" diff --git a/config/submodule/coreboot/coreboot413/module.list b/config/submodule/coreboot/coreboot413/module.list deleted file mode 100644 index 08e76de0..00000000 --- a/config/submodule/coreboot/coreboot413/module.list +++ /dev/null @@ -1 +0,0 @@ -3rdparty/vboot diff --git a/config/submodule/coreboot/coreboot413/vboot/module.cfg b/config/submodule/coreboot/coreboot413/vboot/module.cfg deleted file mode 100644 index 79c98870..00000000 --- a/config/submodule/coreboot/coreboot413/vboot/module.cfg +++ /dev/null @@ -1,5 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -subrepo="https://review.coreboot.org/vboot.git" -subrepo_bkup="https://github.com/coreboot/vboot" -subhash="4c523ed10f25de872ac0513ebd6ca53d3970b9de" diff --git a/config/submodule/coreboot/coreboot413/vboot/patches/0001-extract_vmlinuz.c-Fix-the-bounds-check-on-vmlinuz_he.patch b/config/submodule/coreboot/coreboot413/vboot/patches/0001-extract_vmlinuz.c-Fix-the-bounds-check-on-vmlinuz_he.patch deleted file mode 100644 index 1ac41de6..00000000 --- a/config/submodule/coreboot/coreboot413/vboot/patches/0001-extract_vmlinuz.c-Fix-the-bounds-check-on-vmlinuz_he.patch +++ /dev/null @@ -1,178 +0,0 @@ -From 195f61375aeec9eec16604ec59f6eda2e6058cc1 Mon Sep 17 00:00:00 2001 -From: "Luke T. Shumaker" <lukeshu@lukeshu.com> -Date: Thu, 30 May 2024 14:08:33 -0600 -Subject: [PATCH 1/1] extract_vmlinuz.c: Fix the bounds check on - vmlinuz_header_{offset,size} - -The check on vmlinuz_header_offset and vmlinuz_header_size is obviously -wrong: - - if (!vmlinuz_header_size || - kpart_data + vmlinuz_header_offset + vmlinuz_header_size > - kpart_data) { - return 1; - } - -`kpart_data + some_unsigned_values` can obviously never be `> kpart_data`, -unless something has overflowed! And `vmlinuz_header_offset` hasn't even -been set yet (besides being initialized to zero)! - -GCC will deduce that if the check didn't cause the function to bail, then -vmlinuz_header_size (a uint32_t) must be "negative"; that is: in the range -[2GiB,4GiB). - -On platforms where size_t is 32-bits, this is *especially* broken. -memcpy's size argument must be in the range [0,2GiB). Because GCC has -proved that vmlinuz_header_size is higher than that, it will fail to -compile: - - host/lib/extract_vmlinuz.c:67:9: error: 'memcpy' specified bound between 2147483648 and 4294967295 exceeds maximum object size 2147483647 [-Werror=stringop-overflow=] - -So, fix the check. - -I can now say that what I suspect the original author meant to write would -be the following patch, if `vmlinuz_header_offset` were already set: - - -kpart_data + vmlinuz_header_offset + vmlinuz_header_size > kpart_data - +now + vmlinuz_header_offset + vmlinuz_header_size > kpart_size - -This hypothesis is supported by `now` not getting incremented by -`kblob_size` the way it is for the keyblock and preamble sizes. - -However, we can also see that even this "corrected" bounds check is -insufficient: it does not detect the vmlinuz_header overflowing into -kblob_data. - -OK, so let's describe the fix: - -Have a `*vmlinuz_header` pointer instead of a -`uint64_t vmlinuz_header_offset`, to be more similar to all the other -regions. With this change, the correct check becomes a simple - - vmlinuz_header + vmlinuz_header_size > kblob_data - -While we're at it, make some changes that could have helped avoid this in -the first place: - - - Add comments. - - Calculate the vmlinuz_header offset right away, instead of waiting. - - Go ahead and increment `now` by `kblob_size`, to increase regularity. - -Change-Id: I5c03e49070b6dd2e04459566ef7dd129d27736e4 ---- - host/lib/extract_vmlinuz.c | 72 +++++++++++++++++++++++++++----------- - 1 file changed, 51 insertions(+), 21 deletions(-) - -diff --git a/host/lib/extract_vmlinuz.c b/host/lib/extract_vmlinuz.c -index 4ccfcf33..d2c09443 100644 ---- a/host/lib/extract_vmlinuz.c -+++ b/host/lib/extract_vmlinuz.c -@@ -15,16 +15,44 @@ - - int ExtractVmlinuz(void *kpart_data, size_t kpart_size, - void **vmlinuz_out, size_t *vmlinuz_size) { -+ // We're going to be extracting `vmlinuz_header` and -+ // `kblob_data`, and returning the concatenation of them. -+ // -+ // kpart_data = +-[kpart_size]------------------------------------+ -+ // | | -+ // keyblock = | +-[keyblock->keyblock_size]-------------------+ | -+ // | | struct vb2_keyblock keyblock | | -+ // | | char [] ...data... | | -+ // | +---------------------------------------------+ | -+ // | | -+ // preamble = | +-[preamble->preamble_size]-------------------+ | -+ // | | struct vb2_kernel_preamble preamble | | -+ // | | char [] ...data... | | -+ // | | char [] vmlinuz_header | | -+ // | | char [] ...data... | | -+ // | +---------------------------------------------+ | -+ // | | -+ // kblob_data= | +-[preamble->body_signature.data_size]--------+ | -+ // | | char [] ...data... | | -+ // | +---------------------------------------------+ | -+ // | | -+ // +-------------------------------------------------+ -+ - size_t now = 0; -+ // The 3 sections of kpart_data. -+ struct vb2_keyblock *keyblock = NULL; - struct vb2_kernel_preamble *preamble = NULL; - uint8_t *kblob_data = NULL; - uint32_t kblob_size = 0; -+ // vmlinuz_header -+ uint8_t *vmlinuz_header = NULL; - uint32_t vmlinuz_header_size = 0; -- uint64_t vmlinuz_header_address = 0; -- uint64_t vmlinuz_header_offset = 0; -+ // The concatenated result. - void *vmlinuz = NULL; - -- struct vb2_keyblock *keyblock = (struct vb2_keyblock *)kpart_data; -+ // Isolate the 3 sections of kpart_data. -+ -+ keyblock = (struct vb2_keyblock *)kpart_data; - now += keyblock->keyblock_size; - if (now > kpart_size) - return 1; -@@ -36,37 +64,39 @@ int ExtractVmlinuz(void *kpart_data, size_t kpart_size, - - kblob_data = kpart_data + now; - kblob_size = preamble->body_signature.data_size; -- -- if (!kblob_data || (now + kblob_size) > kpart_size) -+ now += kblob_size; -+ if (now > kpart_size) - return 1; - -+ // Find `vmlinuz_header` within `preamble`. -+ - if (preamble->header_version_minor > 0) { -- vmlinuz_header_address = preamble->vmlinuz_header_address; -+ // calculate the vmlinuz_header offset from -+ // the beginning of the kpart_data. The kblob doesn't -+ // include the body_load_offset, but does include -+ // the keyblock and preamble sections. -+ size_t vmlinuz_header_offset = -+ preamble->vmlinuz_header_address - -+ preamble->body_load_address + -+ keyblock->keyblock_size + -+ preamble->preamble_size; -+ -+ vmlinuz_header = kpart_data + vmlinuz_header_offset; - vmlinuz_header_size = preamble->vmlinuz_header_size; - } - -- if (!vmlinuz_header_size || -- kpart_data + vmlinuz_header_offset + vmlinuz_header_size > -- kpart_data) { -+ if (!vmlinuz_header || -+ !vmlinuz_header_size || -+ vmlinuz_header + vmlinuz_header_size > kblob_data) { - return 1; - } - -- // calculate the vmlinuz_header offset from -- // the beginning of the kpart_data. The kblob doesn't -- // include the body_load_offset, but does include -- // the keyblock and preamble sections. -- vmlinuz_header_offset = vmlinuz_header_address - -- preamble->body_load_address + -- keyblock->keyblock_size + -- preamble->preamble_size; -+ // Concatenate and return. - - vmlinuz = malloc(vmlinuz_header_size + kblob_size); - if (vmlinuz == NULL) - return 1; -- -- memcpy(vmlinuz, kpart_data + vmlinuz_header_offset, -- vmlinuz_header_size); -- -+ memcpy(vmlinuz, vmlinuz_header, vmlinuz_header_size); - memcpy(vmlinuz + vmlinuz_header_size, kblob_data, kblob_size); - - *vmlinuz_out = vmlinuz; --- -2.45.1 - diff --git a/config/submodule/coreboot/default/acpica-unix-20241212.tar.gz/module.cfg b/config/submodule/coreboot/default/acpica-unix-20241212.tar.gz/module.cfg deleted file mode 100644 index 30baf001..00000000 --- a/config/submodule/coreboot/default/acpica-unix-20241212.tar.gz/module.cfg +++ /dev/null @@ -1,5 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -subfile="https://www.mirrorservice.org/sites/libreboot.org/release/misc/acpica/acpica-unix-20241212.tar.gz" -subfile_bkup="https://mirror.math.princeton.edu/pub/libreboot/misc/acpica/acpica-unix-20241212.tar.gz" -subhash="daa4243f927451ac18c337cf17c27849e68329b3f7eb25b8c3379fda9c6a484201b73d4ffccab89a0ae22cc5e432f141ba149015a003834b0515bdb3d4efe0a8" diff --git a/config/submodule/coreboot/default/acpica-unix-20250404.tar.gz/module.cfg b/config/submodule/coreboot/default/acpica-unix-20250404.tar.gz/module.cfg new file mode 100644 index 00000000..c3bb710a --- /dev/null +++ b/config/submodule/coreboot/default/acpica-unix-20250404.tar.gz/module.cfg @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +subcurl="https://www.mirrorservice.org/sites/libreboot.org/release/misc/acpica/acpica-unix-20250404.tar.gz" +subcurl_bkup="https://mirror.math.princeton.edu/pub/libreboot/misc/acpica/acpica-unix-20250404.tar.gz" +subhash="38688493ca42425065b9b05f801e286de02e31ab5313616201ba20d7c7c9c46944ab82d2a46dd1a8b8744f300d940e31be32674573c093fae9fcea0f4a6e699e" diff --git a/config/submodule/coreboot/default/arm-trusted-firmware/module.cfg b/config/submodule/coreboot/default/arm-trusted-firmware/module.cfg index 911f3fa9..cdd82c2d 100644 --- a/config/submodule/coreboot/default/arm-trusted-firmware/module.cfg +++ b/config/submodule/coreboot/default/arm-trusted-firmware/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subrepo="https://review.coreboot.org/arm-trusted-firmware.git" -subrepo_bkup="https://github.com/coreboot/arm-trusted-firmware" -subhash="57ac3f74b34a3303f03deee264a1f2247c68008d" +subgit="https://review.coreboot.org/arm-trusted-firmware.git" +subgit_bkup="https://github.com/coreboot/arm-trusted-firmware" +subhash="9109143417b24337d39a2a9583828a44996f8aac" diff --git a/config/submodule/coreboot/default/binutils-2.43.1.tar.xz/module.cfg b/config/submodule/coreboot/default/binutils-2.43.1.tar.xz/module.cfg deleted file mode 100644 index 1e16b92a..00000000 --- a/config/submodule/coreboot/default/binutils-2.43.1.tar.xz/module.cfg +++ /dev/null @@ -1,5 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -subfile="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/binutils/binutils-2.43.1.tar.xz" -subfile_bkup="https://ftp.nluug.nl/pub/gnu/binutils/binutils-2.43.1.tar.xz" -subhash="20977ad17729141a2c26d358628f44a0944b84dcfefdec2ba029c2d02f40dfc41cc91c0631044560d2bd6f9a51e1f15846b4b311befbe14f1239f14ff7d57824" diff --git a/config/submodule/coreboot/default/binutils-2.44.tar.xz/module.cfg b/config/submodule/coreboot/default/binutils-2.44.tar.xz/module.cfg new file mode 100644 index 00000000..81391c1b --- /dev/null +++ b/config/submodule/coreboot/default/binutils-2.44.tar.xz/module.cfg @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +subcurl="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/binutils/binutils-2.44.tar.xz" +subcurl_bkup="https://ftp.nluug.nl/pub/gnu/binutils/binutils-2.44.tar.xz" +subhash="b85d3bbc0e334cf67a96219d3c7c65fbf3e832b2c98a7417bf131f3645a0307057ec81cd2b29ff2563cec53e3d42f73e2c60cc5708e80d4a730efdcc6ae14ad7" diff --git a/config/submodule/coreboot/default/fsp/module.cfg b/config/submodule/coreboot/default/fsp/module.cfg index 2b39812b..297e1703 100644 --- a/config/submodule/coreboot/default/fsp/module.cfg +++ b/config/submodule/coreboot/default/fsp/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subrepo="https://review.coreboot.org/fsp.git" -subrepo_bkup="https://github.com/coreboot/fsp" -subhash="86c9111639d357e0f369c14248097b119112a71c" +subgit="https://review.coreboot.org/fsp.git" +subgit_bkup="https://github.com/coreboot/fsp" +subhash="cc36ae2b5775fa7400cb3282680afc0f6cb37a3c" diff --git a/config/submodule/coreboot/default/gcc-14.2.0.tar.xz/module.cfg b/config/submodule/coreboot/default/gcc-14.2.0.tar.xz/module.cfg index 4ef88d1d..e637ba03 100644 --- a/config/submodule/coreboot/default/gcc-14.2.0.tar.xz/module.cfg +++ b/config/submodule/coreboot/default/gcc-14.2.0.tar.xz/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subfile="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/gcc/gcc-14.2.0/gcc-14.2.0.tar.xz" -subfile_bkup="https://ftp.nluug.nl/pub/gnu/gcc/gcc-14.2.0/gcc-14.2.0.tar.xz" +subcurl="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/gcc/gcc-14.2.0/gcc-14.2.0.tar.xz" +subcurl_bkup="https://ftp.nluug.nl/pub/gnu/gcc/gcc-14.2.0/gcc-14.2.0.tar.xz" subhash="932bdef0cda94bacedf452ab17f103c0cb511ff2cec55e9112fc0328cbf1d803b42595728ea7b200e0a057c03e85626f937012e49a7515bc5dd256b2bf4bc396" diff --git a/config/submodule/coreboot/default/gmp-6.3.0.tar.xz/module.cfg b/config/submodule/coreboot/default/gmp-6.3.0.tar.xz/module.cfg index 46b55c01..90466fed 100644 --- a/config/submodule/coreboot/default/gmp-6.3.0.tar.xz/module.cfg +++ b/config/submodule/coreboot/default/gmp-6.3.0.tar.xz/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subfile="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz" -subfile_bkup="https://ftp.nluug.nl/pub/gnu/gmp/gmp-6.3.0.tar.xz" +subcurl="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz" +subcurl_bkup="https://ftp.nluug.nl/pub/gnu/gmp/gmp-6.3.0.tar.xz" subhash="e85a0dab5195889948a3462189f0e0598d331d3457612e2d3350799dba2e244316d256f8161df5219538eb003e4b5343f989aaa00f96321559063ed8c8f29fd2" diff --git a/config/submodule/coreboot/default/intel-microcode/module.cfg b/config/submodule/coreboot/default/intel-microcode/module.cfg index 0ae50bd0..ff3f430d 100644 --- a/config/submodule/coreboot/default/intel-microcode/module.cfg +++ b/config/submodule/coreboot/default/intel-microcode/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subrepo="https://review.coreboot.org/intel-microcode.git" -subrepo_bkup="https://github.com/coreboot/intel-microcode" -subhash="8a62de41c011615d749f8e72bb906dddc72e56a8" +subgit="https://review.coreboot.org/intel-microcode.git" +subgit_bkup="https://github.com/coreboot/intel-microcode" +subhash="eeb93b7a818bb27cb6b7a2be0454f8a0a75f1bd6" diff --git a/config/submodule/coreboot/default/libgfxinit/module.cfg b/config/submodule/coreboot/default/libgfxinit/module.cfg index 93383129..87589128 100644 --- a/config/submodule/coreboot/default/libgfxinit/module.cfg +++ b/config/submodule/coreboot/default/libgfxinit/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subrepo="https://review.coreboot.org/libgfxinit.git" -subrepo_bkup="https://github.com/coreboot/libgfxinit" +subgit="https://review.coreboot.org/libgfxinit.git" +subgit_bkup="https://github.com/coreboot/libgfxinit" subhash="17cfc92f402493979783585b6581efbd98c0cf07" diff --git a/config/submodule/coreboot/default/libgfxinit/patches/0002-re-try-EDID-reading-when-it-fails.patch b/config/submodule/coreboot/default/libgfxinit/patches/0002-re-try-EDID-reading-when-it-fails.patch new file mode 100644 index 00000000..889218fe --- /dev/null +++ b/config/submodule/coreboot/default/libgfxinit/patches/0002-re-try-EDID-reading-when-it-fails.patch @@ -0,0 +1,38 @@ +From cbac507d93dc357a75ccc11fdda5c7ed60935538 Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Sun, 13 Jul 2025 15:18:53 +0100 +Subject: [PATCH 1/1] re-try EDID reading when it fails + +some video converters are a bit buggy and have to be +probed twice; linux works fine, but in these cases, +coreboot won't set up the display. + +try it twice, to mitigate, when probing the EDID + +This entire function should probably be rewritten, since +it's buggy in general. + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + common/hw-gfx-gma-display_probing.adb | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/common/hw-gfx-gma-display_probing.adb b/common/hw-gfx-gma-display_probing.adb +index 67f8ddf..0500217 100644 +--- a/common/hw-gfx-gma-display_probing.adb ++++ b/common/hw-gfx-gma-display_probing.adb +@@ -122,6 +122,11 @@ is + Read_EDID (Raw_EDID, Port, Success); + end if; + ++ if not Success then ++ Panel.Wait_On (Config_Helpers.To_Panel (Port)); ++ Read_EDID (Raw_EDID, Port, Success); ++ end if; ++ + if Success and then + ((not Is_DVI_I (Port) or EDID.Compatible_Display + (Raw_EDID, Config_Helpers.To_Display_Type (Port))) and +-- +2.39.5 + diff --git a/config/submodule/coreboot/default/libhwbase/module.cfg b/config/submodule/coreboot/default/libhwbase/module.cfg index 4995e70f..f09b123f 100644 --- a/config/submodule/coreboot/default/libhwbase/module.cfg +++ b/config/submodule/coreboot/default/libhwbase/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subrepo="https://review.coreboot.org/libhwbase.git" -subrepo_bkup="https://github.com/coreboot/libhwbase" +subgit="https://review.coreboot.org/libhwbase.git" +subgit_bkup="https://github.com/coreboot/libhwbase" subhash="584629b9f4771b7618951cec57df2ca3af9c6981" diff --git a/config/submodule/coreboot/default/module.list b/config/submodule/coreboot/default/module.list index 8c7f3d20..1277158f 100644 --- a/config/submodule/coreboot/default/module.list +++ b/config/submodule/coreboot/default/module.list @@ -4,10 +4,10 @@ 3rdparty/libgfxinit 3rdparty/libhwbase 3rdparty/vboot -util/crossgcc/tarballs/binutils-2.43.1.tar.xz +util/crossgcc/tarballs/binutils-2.44.tar.xz util/crossgcc/tarballs/gcc-14.2.0.tar.xz util/crossgcc/tarballs/gmp-6.3.0.tar.xz util/crossgcc/tarballs/mpc-1.3.1.tar.gz -util/crossgcc/tarballs/mpfr-4.2.1.tar.xz +util/crossgcc/tarballs/mpfr-4.2.2.tar.xz util/crossgcc/tarballs/nasm-2.16.03.tar.bz2 -util/crossgcc/tarballs/acpica-unix-20241212.tar.gz +util/crossgcc/tarballs/acpica-unix-20250404.tar.gz diff --git a/config/submodule/coreboot/default/mpc-1.3.1.tar.gz/module.cfg b/config/submodule/coreboot/default/mpc-1.3.1.tar.gz/module.cfg index 9b6cc57a..9a1ec4cb 100644 --- a/config/submodule/coreboot/default/mpc-1.3.1.tar.gz/module.cfg +++ b/config/submodule/coreboot/default/mpc-1.3.1.tar.gz/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subfile="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz" -subfile_bkup="https://ftp.nluug.nl/pub/gnu/mpc/mpc-1.3.1.tar.gz" +subcurl="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz" +subcurl_bkup="https://ftp.nluug.nl/pub/gnu/mpc/mpc-1.3.1.tar.gz" subhash="4bab4ef6076f8c5dfdc99d810b51108ced61ea2942ba0c1c932d624360a5473df20d32b300fc76f2ba4aa2a97e1f275c9fd494a1ba9f07c4cb2ad7ceaeb1ae97" diff --git a/config/submodule/coreboot/default/mpfr-4.2.1.tar.xz/module.cfg b/config/submodule/coreboot/default/mpfr-4.2.1.tar.xz/module.cfg deleted file mode 100644 index 93cc1a05..00000000 --- a/config/submodule/coreboot/default/mpfr-4.2.1.tar.xz/module.cfg +++ /dev/null @@ -1,5 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -subfile="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/mpfr/mpfr-4.2.1.tar.xz" -subfile_bkup="https://ftp.nluug.nl/pub/gnu/mpfr/mpfr-4.2.1.tar.xz" -subhash="bc68c0d755d5446403644833ecbb07e37360beca45f474297b5d5c40926df1efc3e2067eecffdf253f946288bcca39ca89b0613f545d46a9e767d1d4cf358475" diff --git a/config/submodule/coreboot/default/mpfr-4.2.2.tar.xz/module.cfg b/config/submodule/coreboot/default/mpfr-4.2.2.tar.xz/module.cfg new file mode 100644 index 00000000..a1eb1e54 --- /dev/null +++ b/config/submodule/coreboot/default/mpfr-4.2.2.tar.xz/module.cfg @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +subcurl="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/mpfr/mpfr-4.2.2.tar.xz" +subcurl_bkup="https://ftp.nluug.nl/pub/gnu/mpfr/mpfr-4.2.2.tar.xz" +subhash="eb9e7f51b5385fb349cc4fba3a45ffdf0dd53be6dfc74932dc01258158a10514667960c530c47dd9dfc5aa18be2bd94859d80499844c5713710581e6ac6259a9" diff --git a/config/submodule/coreboot/default/nasm-2.16.03.tar.bz2/module.cfg b/config/submodule/coreboot/default/nasm-2.16.03.tar.bz2/module.cfg index 3895e2ef..bc486e80 100644 --- a/config/submodule/coreboot/default/nasm-2.16.03.tar.bz2/module.cfg +++ b/config/submodule/coreboot/default/nasm-2.16.03.tar.bz2/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subfile="https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/nasm-2.16.03.tar.bz2" -subfile_bkup="https://www.mirrorservice.org/sites/distfiles.macports.org/nasm/nasm-2.16.03.tar.bz2" +subcurl="https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/nasm-2.16.03.tar.bz2" +subcurl_bkup="https://www.mirrorservice.org/sites/distfiles.macports.org/nasm/nasm-2.16.03.tar.bz2" subhash="f28445d368debdf44219cc57df33800a8c0e49186cd60836d4adfec7700d53b801d34aa9fc9bfda74169843f33a1e8b465e11292582eb968bb9c3a26f54dd172" diff --git a/config/submodule/coreboot/default/vboot/module.cfg b/config/submodule/coreboot/default/vboot/module.cfg index d13a1b29..8b4e15de 100644 --- a/config/submodule/coreboot/default/vboot/module.cfg +++ b/config/submodule/coreboot/default/vboot/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subrepo="https://review.coreboot.org/vboot.git" -subrepo_bkup="https://github.com/coreboot/vboot" +subgit="https://review.coreboot.org/vboot.git" +subgit_bkup="https://github.com/coreboot/vboot" subhash="3f94e2c7ed58c4e67d6e7dc6052ec615dbbb9bb4" diff --git a/config/submodule/coreboot/fam15h/acpica-unix2-20190703.tar.gz/module.cfg b/config/submodule/coreboot/fam15h/acpica-unix2-20190703.tar.gz/module.cfg index 50e6989e..b8365f7c 100644 --- a/config/submodule/coreboot/fam15h/acpica-unix2-20190703.tar.gz/module.cfg +++ b/config/submodule/coreboot/fam15h/acpica-unix2-20190703.tar.gz/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subfile="https://www.mirrorservice.org/sites/libreboot.org/release/misc/acpica/acpica-unix2-20190703.tar.gz" -subfile_bkup="https://mirror.math.princeton.edu/pub/libreboot/misc/acpica/acpica-unix2-20190703.tar.gz" +subcurl="https://www.mirrorservice.org/sites/libreboot.org/release/misc/acpica/acpica-unix2-20190703.tar.gz" +subcurl_bkup="https://mirror.math.princeton.edu/pub/libreboot/misc/acpica/acpica-unix2-20190703.tar.gz" subhash="8445a6d354ce3bcbfb5159f4ec0312b1e910c0b1b2033a2300f892e4ac580abab4e3f5b4ded379f0036299359d307330511ab7053678cfd9031d7df4c365f555" diff --git a/config/submodule/coreboot/fam15h/binutils-2.32.tar.xz/module.cfg b/config/submodule/coreboot/fam15h/binutils-2.32.tar.xz/module.cfg index 6e86543f..3f03f64e 100644 --- a/config/submodule/coreboot/fam15h/binutils-2.32.tar.xz/module.cfg +++ b/config/submodule/coreboot/fam15h/binutils-2.32.tar.xz/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subfile="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/binutils/binutils-2.32.tar.xz" -subfile_bkup="https://ftp.nluug.nl/pub/gnu/binutils/binutils-2.32.tar.xz" +subcurl="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/binutils/binutils-2.32.tar.xz" +subcurl_bkup="https://ftp.nluug.nl/pub/gnu/binutils/binutils-2.32.tar.xz" subhash="d326408f12a03d9a61a9de56584c2af12f81c2e50d2d7e835d51565df8314df01575724afa1e43bd0db45cfc9916b41519b67dfce03232aa4978704492a6994a" diff --git a/config/submodule/coreboot/fam15h/blobs/module.cfg b/config/submodule/coreboot/fam15h/blobs/module.cfg index f649cab2..3c34302c 100644 --- a/config/submodule/coreboot/fam15h/blobs/module.cfg +++ b/config/submodule/coreboot/fam15h/blobs/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subrepo="https://review.coreboot.org/blobs.git" -subrepo_bkup="https://github.com/coreboot/blobs" +subgit="https://review.coreboot.org/blobs.git" +subgit_bkup="https://github.com/coreboot/blobs" subhash="034b27818450428f70aa9316c8bd0d65bacd8ee8" diff --git a/config/submodule/coreboot/fam15h/gcc-8.3.0.tar.xz/module.cfg b/config/submodule/coreboot/fam15h/gcc-8.3.0.tar.xz/module.cfg index 1a111581..ce21c98b 100644 --- a/config/submodule/coreboot/fam15h/gcc-8.3.0.tar.xz/module.cfg +++ b/config/submodule/coreboot/fam15h/gcc-8.3.0.tar.xz/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subfile="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz" -subfile_bkup="https://ftp.nluug.nl/pub/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz" +subcurl="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz" +subcurl_bkup="https://ftp.nluug.nl/pub/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz" subhash="1811337ae3add9680cec64968a2509d085b6dc5b6783fc1e8c295e3e47416196fd1a3ad8dfe7e10be2276b4f62c357659ce2902f239f60a8648548231b4b5802" diff --git a/config/submodule/coreboot/fam15h/gmp-6.1.2.tar.xz/module.cfg b/config/submodule/coreboot/fam15h/gmp-6.1.2.tar.xz/module.cfg index 08926b6a..a46b9b7c 100644 --- a/config/submodule/coreboot/fam15h/gmp-6.1.2.tar.xz/module.cfg +++ b/config/submodule/coreboot/fam15h/gmp-6.1.2.tar.xz/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subfile="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.xz" -subfile_bkup="https://ftp.nluug.nl/pub/gnu/gmp/gmp-6.1.2.tar.xz" +subcurl="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.xz" +subcurl_bkup="https://ftp.nluug.nl/pub/gnu/gmp/gmp-6.1.2.tar.xz" subhash="9f098281c0593b76ee174b722936952671fab1dae353ce3ed436a31fe2bc9d542eca752353f6645b7077c1f395ab4fdd355c58e08e2a801368f1375690eee2c6" diff --git a/config/submodule/coreboot/fam15h/module.list b/config/submodule/coreboot/fam15h/module.list index 64f09aea..00befad9 100644 --- a/config/submodule/coreboot/fam15h/module.list +++ b/config/submodule/coreboot/fam15h/module.list @@ -6,4 +6,4 @@ util/crossgcc/tarballs/gcc-8.3.0.tar.xz util/crossgcc/tarballs/gmp-6.1.2.tar.xz util/crossgcc/tarballs/mpc-1.1.0.tar.gz util/crossgcc/tarballs/mpfr-4.0.2.tar.xz -util/crossgcc/tarballs/nasm-2.14.02.tar.bz2 +util/crossgcc/tarballs/nasm-2.16.03.tar.bz2 diff --git a/config/submodule/coreboot/fam15h/mpc-1.1.0.tar.gz/module.cfg b/config/submodule/coreboot/fam15h/mpc-1.1.0.tar.gz/module.cfg index 89cfabc7..13a66a87 100644 --- a/config/submodule/coreboot/fam15h/mpc-1.1.0.tar.gz/module.cfg +++ b/config/submodule/coreboot/fam15h/mpc-1.1.0.tar.gz/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subfile="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz" -subfile_bkup="https://ftp.nluug.nl/pub/gnu/mpc/mpc-1.1.0.tar.gz" +subcurl="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz" +subcurl_bkup="https://ftp.nluug.nl/pub/gnu/mpc/mpc-1.1.0.tar.gz" subhash="72d657958b07c7812dc9c7cbae093118ce0e454c68a585bfb0e2fa559f1bf7c5f49b93906f580ab3f1073e5b595d23c6494d4d76b765d16dde857a18dd239628" diff --git a/config/submodule/coreboot/fam15h/mpfr-4.0.2.tar.xz/module.cfg b/config/submodule/coreboot/fam15h/mpfr-4.0.2.tar.xz/module.cfg index c6ebf4de..f2a4f0fe 100644 --- a/config/submodule/coreboot/fam15h/mpfr-4.0.2.tar.xz/module.cfg +++ b/config/submodule/coreboot/fam15h/mpfr-4.0.2.tar.xz/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subfile="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/mpfr/mpfr-4.0.2.tar.xz" -subfile_bkup="https://ftp.nluug.nl/pub/gnu/mpfr/mpfr-4.0.2.tar.xz" +subcurl="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/mpfr/mpfr-4.0.2.tar.xz" +subcurl_bkup="https://ftp.nluug.nl/pub/gnu/mpfr/mpfr-4.0.2.tar.xz" subhash="d583555d08863bf36c89b289ae26bae353d9a31f08ee3894520992d2c26e5683c4c9c193d7ad139632f71c0a476d85ea76182702a98bf08dde7b6f65a54f8b88" diff --git a/config/submodule/coreboot/fam15h/nasm-2.14.02.tar.bz2/module.cfg b/config/submodule/coreboot/fam15h/nasm-2.14.02.tar.bz2/module.cfg deleted file mode 100644 index 4c91ec05..00000000 --- a/config/submodule/coreboot/fam15h/nasm-2.14.02.tar.bz2/module.cfg +++ /dev/null @@ -1,5 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -subfile="https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2" -subfile_bkup="https://coreboot.org/releases/crossgcc-sources/nasm-2.14.02.tar.bz2" -subhash="71e3d44736493b1a56d4230bc2e5519e858aaadde5d89a692f1472fad6755084460e36b42852707f4c862eff75d3f2c232aedcc4e61e9d9ffcc8c9ca6498292b" diff --git a/config/submodule/coreboot/fam15h/nasm-2.16.03.tar.bz2/module.cfg b/config/submodule/coreboot/fam15h/nasm-2.16.03.tar.bz2/module.cfg new file mode 100644 index 00000000..bc486e80 --- /dev/null +++ b/config/submodule/coreboot/fam15h/nasm-2.16.03.tar.bz2/module.cfg @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +subcurl="https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/nasm-2.16.03.tar.bz2" +subcurl_bkup="https://www.mirrorservice.org/sites/distfiles.macports.org/nasm/nasm-2.16.03.tar.bz2" +subhash="f28445d368debdf44219cc57df33800a8c0e49186cd60836d4adfec7700d53b801d34aa9fc9bfda74169843f33a1e8b465e11292582eb968bb9c3a26f54dd172" diff --git a/config/submodule/coreboot/fam15h/vboot/module.cfg b/config/submodule/coreboot/fam15h/vboot/module.cfg index b0897e4f..a3a8f21b 100644 --- a/config/submodule/coreboot/fam15h/vboot/module.cfg +++ b/config/submodule/coreboot/fam15h/vboot/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subrepo="https://review.coreboot.org/vboot.git" -subrepo_bkup="https://github.com/coreboot/vboot" +subgit="https://review.coreboot.org/vboot.git" +subgit_bkup="https://github.com/coreboot/vboot" subhash="ecdca931ae0637d1a9498f64862939bd5bb99e0b" diff --git a/config/submodule/docs/html/module.cfg b/config/submodule/docs/html/module.cfg index c9ff5c75..e18b2fe4 100644 --- a/config/submodule/docs/html/module.cfg +++ b/config/submodule/docs/html/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subhash="090e58d4f84125bdcf035efcadd1cd5c13a03c77" -subrepo="https://codeberg.org/libreboot/lbwww" -subrepo_bkup="https://git.disroot.org/libreboot/lbwww" +subhash="2fc8efd375aef58d6c5d6b8e4ffe87b3bd2ff3d4" +subgit="https://codeberg.org/libreboot/lbwww" +subgit_bkup="https://git.disroot.org/libreboot/lbwww" diff --git a/config/submodule/docs/img/module.cfg b/config/submodule/docs/img/module.cfg index 034de191..8a176668 100644 --- a/config/submodule/docs/img/module.cfg +++ b/config/submodule/docs/img/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subhash="2bf719e6542c3ffa6df0bdcb77ef1619cb2dce01" -subrepo="https://codeberg.org/libreboot/lbwww-img" -subrepo_bkup="https://git.disroot.org/libreboot/lbwww-img" +subhash="68863fd7491f1358fb920d8ad558de35fcfec769" +subgit="https://codeberg.org/libreboot/lbwww-img" +subgit_bkup="https://git.disroot.org/libreboot/lbwww-img" diff --git a/config/submodule/docs/module.list b/config/submodule/docs/module.list index 1ad2aecb..e2570aac 100644 --- a/config/submodule/docs/module.list +++ b/config/submodule/docs/module.list @@ -1,3 +1,2 @@ -www/untitled www/html www/html/site/img diff --git a/config/submodule/docs/untitled/module.cfg b/config/submodule/docs/untitled/module.cfg deleted file mode 100644 index 3c14f225..00000000 --- a/config/submodule/docs/untitled/module.cfg +++ /dev/null @@ -1,5 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -subhash="d8e2043c1512eb1171c274559ce82e8093ef393f" -subrepo="https://codeberg.org/vimuser/untitled-website" -subrepo_bkup="https://notabug.org/untitled/untitled-website" diff --git a/config/submodule/grub/default/gnulib/module.cfg b/config/submodule/grub/default/gnulib/module.cfg index eaf40b24..eb5aa2b6 100644 --- a/config/submodule/grub/default/gnulib/module.cfg +++ b/config/submodule/grub/default/gnulib/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subrepo="https://codeberg.org/libreboot/gnulib" -subrepo_bkup="git://git.sv.gnu.org/gnulib" # ALWAYS slow. only use as backup! +subgit="https://codeberg.org/libreboot/gnulib" +subgit_bkup="git://git.sv.gnu.org/gnulib" # ALWAYS slow. only use as backup! subhash="9f48fb992a3d7e96610c4ce8be969cff2d61a01b" diff --git a/config/submodule/grub/nvme/gnulib/module.cfg b/config/submodule/grub/nvme/gnulib/module.cfg index eaf40b24..eb5aa2b6 100644 --- a/config/submodule/grub/nvme/gnulib/module.cfg +++ b/config/submodule/grub/nvme/gnulib/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -subrepo="https://codeberg.org/libreboot/gnulib" -subrepo_bkup="git://git.sv.gnu.org/gnulib" # ALWAYS slow. only use as backup! +subgit="https://codeberg.org/libreboot/gnulib" +subgit_bkup="git://git.sv.gnu.org/gnulib" # ALWAYS slow. only use as backup! subhash="9f48fb992a3d7e96610c4ce8be969cff2d61a01b" diff --git a/config/submodule/grub/xhci/gnulib/module.cfg b/config/submodule/grub/xhci/gnulib/module.cfg deleted file mode 100644 index eaf40b24..00000000 --- a/config/submodule/grub/xhci/gnulib/module.cfg +++ /dev/null @@ -1,5 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -subrepo="https://codeberg.org/libreboot/gnulib" -subrepo_bkup="git://git.sv.gnu.org/gnulib" # ALWAYS slow. only use as backup! -subhash="9f48fb992a3d7e96610c4ce8be969cff2d61a01b" diff --git a/config/submodule/grub/xhci_nvme/gnulib/module.cfg b/config/submodule/grub/xhci_nvme/gnulib/module.cfg new file mode 100644 index 00000000..eb5aa2b6 --- /dev/null +++ b/config/submodule/grub/xhci_nvme/gnulib/module.cfg @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +subgit="https://codeberg.org/libreboot/gnulib" +subgit_bkup="git://git.sv.gnu.org/gnulib" # ALWAYS slow. only use as backup! +subhash="9f48fb992a3d7e96610c4ce8be969cff2d61a01b" diff --git a/config/submodule/grub/xhci/module.list b/config/submodule/grub/xhci_nvme/module.list index 0e57095c..0e57095c 100644 --- a/config/submodule/grub/xhci/module.list +++ b/config/submodule/grub/xhci_nvme/module.list diff --git a/config/submodule/pcsx-redux/uC-sdk/module.cfg b/config/submodule/pcsx-redux/uC-sdk/module.cfg index f8f44850..75f68204 100644 --- a/config/submodule/pcsx-redux/uC-sdk/module.cfg +++ b/config/submodule/pcsx-redux/uC-sdk/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later subhash="7c6f1973a16893cf1f0868af6f8e60a028b933ad" -subrepo="https://github.com/grumpycoders/uC-sdk.git" -subrepo_bkup="https://codeberg.org/vimuser/uC-sdk" +subgit="https://github.com/grumpycoders/uC-sdk.git" +subgit_bkup="https://codeberg.org/vimuser/uC-sdk" diff --git a/config/submodule/pico-sdk/tinyusb/module.cfg b/config/submodule/pico-sdk/tinyusb/module.cfg index 988d68ba..981e5305 100644 --- a/config/submodule/pico-sdk/tinyusb/module.cfg +++ b/config/submodule/pico-sdk/tinyusb/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later subhash="86c416d4c0fb38432460b3e11b08b9de76941bf5" -subrepo="https://codeberg.org/libreboot/tinyusb" -subrepo_bkup="https://github.com/hathach/tinyusb.git" +subgit="https://codeberg.org/libreboot/tinyusb" +subgit_bkup="https://github.com/hathach/tinyusb.git" diff --git a/config/submodule/stm32-vserprog/libopencm3/module.cfg b/config/submodule/stm32-vserprog/libopencm3/module.cfg index 069020cc..3ac90162 100644 --- a/config/submodule/stm32-vserprog/libopencm3/module.cfg +++ b/config/submodule/stm32-vserprog/libopencm3/module.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later subhash="458250dc6147dc807eec9e4d5a6caf38a699ecb1" -subrepo="https://codeberg.org/libreboot/libopencm3" -subrepo_bkup="https://github.com/libopencm3/libopencm3" +subgit="https://codeberg.org/libreboot/libopencm3" +subgit_bkup="https://github.com/libopencm3/libopencm3" diff --git a/config/u-boot/amd64coreboot/target.cfg b/config/u-boot/amd64coreboot/target.cfg index 8b89408e..d3415dc6 100644 --- a/config/u-boot/amd64coreboot/target.cfg +++ b/config/u-boot/amd64coreboot/target.cfg @@ -2,6 +2,6 @@ tree="x86_64" # test building with x86_64 hostcc by commenting these: -# xtree="default" # coreboot tree containing crossgcc +# xgcctree="default" # coreboot tree containing crossgcc # xarch="x86_64-elf" # or uncomment them to use crossgcc(buggy) diff --git a/config/u-boot/default/patches/0001-clk-rockchip-rk3399-Set-hardcoded-clock-rates-same-a.patch b/config/u-boot/default/patches/0001-clk-rockchip-rk3399-Set-hardcoded-clock-rates-same-a.patch index 32647ed0..8227b076 100644 --- a/config/u-boot/default/patches/0001-clk-rockchip-rk3399-Set-hardcoded-clock-rates-same-a.patch +++ b/config/u-boot/default/patches/0001-clk-rockchip-rk3399-Set-hardcoded-clock-rates-same-a.patch @@ -1,4 +1,4 @@ -From bc5204d0d28bb431186fd106f9a79f69bfad005d Mon Sep 17 00:00:00 2001 +From ee94f55d37fc8c133faa5055184f75f99830cfdc Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak <alpernebiyasak@gmail.com> Date: Fri, 8 Oct 2021 17:33:22 +0300 Subject: [PATCH] clk: rockchip: rk3399: Set hardcoded clock rates same as @@ -60,7 +60,7 @@ index d941a129f3e5..54035c0df1f3 100644 #define PWM_CLOCK_HZ PMU_PCLK_HZ diff --git a/drivers/clk/rockchip/clk_rk3399.c b/drivers/clk/rockchip/clk_rk3399.c -index 24cefebd1b2a..6f874bd347e0 100644 +index 6e87db18be07..1b8ffe9e794e 100644 --- a/drivers/clk/rockchip/clk_rk3399.c +++ b/drivers/clk/rockchip/clk_rk3399.c @@ -53,10 +53,11 @@ struct pll_div { @@ -72,7 +72,7 @@ index 24cefebd1b2a..6f874bd347e0 100644 +static const struct pll_div gpll_init_cfg = PLL_DIVISORS(GPLL_HZ, 1, 4, 1); +static const struct pll_div cpll_init_cfg = PLL_DIVISORS(CPLL_HZ, 1, 3, 1); +static const struct pll_div npll_init_cfg = PLL_DIVISORS(NPLL_HZ, 1, 3, 1); - #if !defined(CONFIG_SPL_BUILD) + #if !defined(CONFIG_XPL_BUILD) -static const struct pll_div ppll_init_cfg = PLL_DIVISORS(PPLL_HZ, 2, 2, 1); +static const struct pll_div ppll_init_cfg = PLL_DIVISORS(PPLL_HZ, 3, 2, 1); #endif @@ -96,5 +96,5 @@ index 24cefebd1b2a..6f874bd347e0 100644 /* configure perihp aclk, hclk, pclk */ aclk_div = GPLL_HZ / PERIHP_ACLK_HZ - 1; -- -2.45.2 +2.49.0 diff --git a/config/u-boot/default/patches/0002-video-improve-UEFI-experience-on-DM_VIDEO.patch b/config/u-boot/default/patches/0002-video-improve-UEFI-experience-on-DM_VIDEO.patch index bb264b00..e2de311c 100644 --- a/config/u-boot/default/patches/0002-video-improve-UEFI-experience-on-DM_VIDEO.patch +++ b/config/u-boot/default/patches/0002-video-improve-UEFI-experience-on-DM_VIDEO.patch @@ -1,4 +1,4 @@ -From 03750188cbe305cd8383178a1ee476de2aa5953e Mon Sep 17 00:00:00 2001 +From 780d8ffe985441824a242e5b853721dfe14435dd Mon Sep 17 00:00:00 2001 From: Andre Przywara <andre.przywara@arm.com> Date: Mon, 10 Jan 2022 00:56:31 +0000 Subject: [PATCH 1/3] video: Add cursor support for video consoles @@ -36,7 +36,7 @@ index 939363653f6c..6b531718276f 100644 vc_priv->y_charsize = fontdata->height; if (vid_priv->rot % 2) { diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c -index 80e7adf6a1a4..8b2ef51f1b3b 100644 +index ebe96bf0c2f3..8613c464040f 100644 --- a/drivers/video/vidconsole-uclass.c +++ b/drivers/video/vidconsole-uclass.c @@ -57,6 +57,26 @@ int vidconsole_entry_start(struct udevice *dev) @@ -84,7 +84,7 @@ index 80e7adf6a1a4..8b2ef51f1b3b 100644 priv->xcur_frac = priv->xstart_frac; priv->ycur += priv->y_charsize; -@@ -284,6 +308,14 @@ static void vidconsole_escape_char(struct udevice *dev, char ch) +@@ -286,6 +310,14 @@ static void vidconsole_escape_char(struct udevice *dev, char ch) break; } @@ -99,7 +99,7 @@ index 80e7adf6a1a4..8b2ef51f1b3b 100644 case 'J': { int mode; -@@ -458,6 +490,11 @@ int vidconsole_put_char(struct udevice *dev, char ch) +@@ -460,6 +492,11 @@ int vidconsole_put_char(struct udevice *dev, char ch) struct vidconsole_priv *priv = dev_get_uclass_priv(dev); int cp, ret; @@ -111,7 +111,7 @@ index 80e7adf6a1a4..8b2ef51f1b3b 100644 if (priv->escape) { vidconsole_escape_char(dev, ch); return 0; -@@ -472,6 +509,7 @@ int vidconsole_put_char(struct udevice *dev, char ch) +@@ -474,6 +511,7 @@ int vidconsole_put_char(struct udevice *dev, char ch) /* beep */ break; case '\r': @@ -119,7 +119,7 @@ index 80e7adf6a1a4..8b2ef51f1b3b 100644 priv->xcur_frac = priv->xstart_frac; break; case '\n': -@@ -479,6 +517,7 @@ int vidconsole_put_char(struct udevice *dev, char ch) +@@ -481,6 +519,7 @@ int vidconsole_put_char(struct udevice *dev, char ch) vidconsole_entry_start(dev); break; case '\t': /* Tab (8 chars alignment) */ @@ -127,7 +127,7 @@ index 80e7adf6a1a4..8b2ef51f1b3b 100644 priv->xcur_frac = ((priv->xcur_frac / priv->tab_width_frac) + 1) * priv->tab_width_frac; -@@ -503,6 +542,8 @@ int vidconsole_put_char(struct udevice *dev, char ch) +@@ -505,6 +544,8 @@ int vidconsole_put_char(struct udevice *dev, char ch) break; } @@ -136,7 +136,7 @@ index 80e7adf6a1a4..8b2ef51f1b3b 100644 return 0; } -@@ -723,6 +764,7 @@ static int vidconsole_pre_probe(struct udevice *dev) +@@ -725,6 +766,7 @@ static int vidconsole_pre_probe(struct udevice *dev) struct video_priv *vid_priv = dev_get_uclass_priv(vid); priv->xsize_frac = VID_TO_POS(vid_priv->xsize); @@ -145,10 +145,10 @@ index 80e7adf6a1a4..8b2ef51f1b3b 100644 return 0; } diff --git a/include/video_console.h b/include/video_console.h -index 8b5928dc5ebb..00c5ecb664b9 100644 +index 723d2315606d..17a9aa3f9295 100644 --- a/include/video_console.h +++ b/include/video_console.h -@@ -66,6 +66,7 @@ struct vidconsole_priv { +@@ -74,6 +74,7 @@ struct vidconsole_priv { int escape_len; int row_saved; int col_saved; @@ -157,10 +157,10 @@ index 8b5928dc5ebb..00c5ecb664b9 100644 char utf8_buf[5]; }; -- -2.45.2 +2.49.0 -From f63a54996fdaac7ff995e26fd4318a09a9c14dff Mon Sep 17 00:00:00 2001 +From b2b921d7bc69b505562cf02d1b4c6f6d4325c7d5 Mon Sep 17 00:00:00 2001 From: Andre Przywara <andre.przywara@arm.com> Date: Mon, 10 Jan 2022 00:56:36 +0000 Subject: [PATCH 2/3] efi-selftest: Add international characters test @@ -196,10 +196,10 @@ index a3023c82567c..2f8d8d323c2b 100644 ret = con_out->output_string(con_out, text); if (ret != EFI_ST_SUCCESS) { -- -2.45.2 +2.49.0 -From cc05aa26c43c35e9155d958400532005ae7eeede Mon Sep 17 00:00:00 2001 +From 082422499a5f2689e715df68bfd025a5cc15cc64 Mon Sep 17 00:00:00 2001 From: Andre Przywara <andre.przywara@arm.com> Date: Mon, 10 Jan 2022 00:56:37 +0000 Subject: [PATCH 3/3] efi_selftest: Add box drawing character selftest @@ -242,5 +242,5 @@ index 2f8d8d323c2b..02209a5bf224 100644 ret = con_out->output_string(con_out, text); if (ret != EFI_ST_SUCCESS) { -- -2.45.2 +2.49.0 diff --git a/config/u-boot/default/patches/0003-Add-video-damage-tracking.patch b/config/u-boot/default/patches/0003-Add-video-damage-tracking.patch index 07a5fe8c..18c93ab8 100644 --- a/config/u-boot/default/patches/0003-Add-video-damage-tracking.patch +++ b/config/u-boot/default/patches/0003-Add-video-damage-tracking.patch @@ -1,4 +1,4 @@ -From c3ae7d7f7af47e747f85f06662e26f434c25c891 Mon Sep 17 00:00:00 2001 +From dae1f9cafd3d2061336f5d230ebc1f236423fa0e Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak <alpernebiyasak@gmail.com> Date: Fri, 18 Aug 2023 13:31:36 +0300 Subject: [PATCH 01/13] video: test: Split copy frame buffer check into a @@ -19,10 +19,10 @@ Link: https://lore.kernel.org/u-boot/20230821135111.3558478-2-alpernebiyasak@gma 1 file changed, 58 insertions(+), 11 deletions(-) diff --git a/test/dm/video.c b/test/dm/video.c -index 7dfbeb9555d1..14e6af5181f1 100644 +index e347c1403fda..01fa9e1b2415 100644 --- a/test/dm/video.c +++ b/test/dm/video.c -@@ -54,9 +54,6 @@ DM_TEST(dm_test_video_base, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); +@@ -54,9 +54,6 @@ DM_TEST(dm_test_video_base, UTF_SCAN_PDATA | UTF_SCAN_FDT); * size of the compressed data. This provides a pretty good level of * certainty and the resulting tests need only check a single value. * @@ -301,10 +301,10 @@ index 7dfbeb9555d1..14e6af5181f1 100644 return 0; } -- -2.45.2 +2.49.0 -From 575ebe8b5d9ae9c9818b4deb708f8a69f9f9a9b1 Mon Sep 17 00:00:00 2001 +From 3c4f71fb10a827db53d6ed637e39afb5cc19a871 Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak <alpernebiyasak@gmail.com> Date: Sun, 20 Aug 2023 17:46:46 +0300 Subject: [PATCH 02/13] video: test: Support checking copy frame buffer @@ -328,10 +328,10 @@ Link: https://lore.kernel.org/u-boot/20230821135111.3558478-3-alpernebiyasak@gma 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/test/dm/video.c b/test/dm/video.c -index 14e6af5181f1..50374cafc009 100644 +index 01fa9e1b2415..edb1b4ede8c9 100644 --- a/test/dm/video.c +++ b/test/dm/video.c -@@ -56,22 +56,28 @@ DM_TEST(dm_test_video_base, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); +@@ -56,22 +56,28 @@ DM_TEST(dm_test_video_base, UTF_SCAN_PDATA | UTF_SCAN_FDT); * * @uts: Test state * @dev: Video device @@ -614,10 +614,10 @@ index 14e6af5181f1..50374cafc009 100644 return 0; -- -2.45.2 +2.49.0 -From d1fddc8cbe64a5532ddc43d0b1413ff7cc1bf618 Mon Sep 17 00:00:00 2001 +From ecd9200f2068ab8bbeda5c7b8ddc4b8d7ca6b038 Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak <alpernebiyasak@gmail.com> Date: Fri, 18 Aug 2023 17:31:27 +0300 Subject: [PATCH 03/13] video: test: Test partial updates of hardware frame @@ -637,13 +637,13 @@ Link: https://lore.kernel.org/u-boot/20230821135111.3558478-4-alpernebiyasak@gma 1 file changed, 54 insertions(+) diff --git a/test/dm/video.c b/test/dm/video.c -index 50374cafc009..4798f2205a99 100644 +index edb1b4ede8c9..80e65d66dbaf 100644 --- a/test/dm/video.c +++ b/test/dm/video.c @@ -656,3 +656,57 @@ static int dm_test_video_truetype_bs(struct unit_test_state *uts) return 0; } - DM_TEST(dm_test_video_truetype_bs, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); + DM_TEST(dm_test_video_truetype_bs, UTF_SCAN_PDATA | UTF_SCAN_FDT); + +/* Test partial rendering onto hardware frame buffer */ +static int dm_test_video_copy(struct unit_test_state *uts) @@ -697,12 +697,12 @@ index 50374cafc009..4798f2205a99 100644 + + return 0; +} -+DM_TEST(dm_test_video_copy, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); ++DM_TEST(dm_test_video_copy, UTF_SCAN_PDATA | UTF_SCAN_FDT); -- -2.45.2 +2.49.0 -From 700a7cdc62fa08f425c05db2061f06c56d96d5b6 Mon Sep 17 00:00:00 2001 +From 6ecfb63749d955fc28e6312583865c902ffb1175 Mon Sep 17 00:00:00 2001 From: Alexander Graf <agraf@csgraf.de> Date: Fri, 10 Jun 2022 00:59:15 +0200 Subject: [PATCH 04/13] dm: video: Add damage tracking API @@ -728,7 +728,7 @@ Reviewed-by: Simon Glass <sjg@chromium.org> 3 files changed, 86 insertions(+), 2 deletions(-) diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig -index 6e79694fd192..d7da655cea62 100644 +index 3c3cebaacd02..5d67067891be 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -98,6 +98,19 @@ config VIDEO_COPY @@ -752,10 +752,10 @@ index 6e79694fd192..d7da655cea62 100644 bool "Generic PWM based Backlight Driver" depends on BACKLIGHT && DM_PWM diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index a5aa8dd52954..b95f2dbc7703 100644 +index ff4f21995859..da035e5c92b7 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -352,6 +352,34 @@ void video_set_default_colors(struct udevice *dev, bool invert) +@@ -367,6 +367,34 @@ void video_set_default_colors(struct udevice *dev, bool invert) priv->colour_bg = video_index_to_colour(priv, back); } @@ -790,7 +790,7 @@ index a5aa8dd52954..b95f2dbc7703 100644 /* Flush video activity to the caches */ int video_sync(struct udevice *vid, bool force) { -@@ -385,6 +413,13 @@ int video_sync(struct udevice *vid, bool force) +@@ -400,6 +428,13 @@ int video_sync(struct udevice *vid, bool force) #endif priv->last_sync = get_timer(0); @@ -805,10 +805,10 @@ index a5aa8dd52954..b95f2dbc7703 100644 } diff --git a/include/video.h b/include/video.h -index 4013a949983f..835d7734cb75 100644 +index a1f7fd7e839c..7eed112e00c4 100644 --- a/include/video.h +++ b/include/video.h -@@ -88,6 +88,11 @@ enum video_format { +@@ -85,6 +85,11 @@ enum video_format { * @fb_size: Frame buffer size * @copy_fb: Copy of the frame buffer to keep up to date; see struct * video_uc_plat @@ -820,7 +820,7 @@ index 4013a949983f..835d7734cb75 100644 * @line_length: Length of each frame buffer line, in bytes. This can be * set by the driver, but if not, the uclass will set it after * probing -@@ -116,6 +121,12 @@ struct video_priv { +@@ -113,6 +118,12 @@ struct video_priv { void *fb; int fb_size; void *copy_fb; @@ -877,10 +877,10 @@ index 4013a949983f..835d7734cb75 100644 * video_is_active() - Test if one video device it active * -- -2.45.2 +2.49.0 -From b84ee524454fbfebd71532532bf2e28ad97ef676 Mon Sep 17 00:00:00 2001 +From c23d99983901910dadf43f2b4d0b833a0a6d6c92 Mon Sep 17 00:00:00 2001 From: Alexander Graf <agraf@csgraf.de> Date: Fri, 10 Jun 2022 00:59:16 +0200 Subject: [PATCH 05/13] dm: video: Add damage notification on display fills @@ -899,10 +899,10 @@ Link: https://lore.kernel.org/u-boot/20230821135111.3558478-6-alpernebiyasak@gma 1 file changed, 4 insertions(+) diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index b95f2dbc7703..6906b2b83623 100644 +index da035e5c92b7..1c07613539f2 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -201,6 +201,8 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, +@@ -214,6 +214,8 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, if (ret) return ret; @@ -911,7 +911,7 @@ index b95f2dbc7703..6906b2b83623 100644 return 0; } -@@ -250,6 +252,8 @@ int video_fill(struct udevice *dev, u32 colour) +@@ -262,6 +264,8 @@ int video_fill(struct udevice *dev, u32 colour) if (ret) return ret; @@ -921,10 +921,10 @@ index b95f2dbc7703..6906b2b83623 100644 } -- -2.45.2 +2.49.0 -From b18a1ef92e2a003771a4a846c592302c1e92bd83 Mon Sep 17 00:00:00 2001 +From bc55519e74270926ee3680002c58fdeb21cd41ce Mon Sep 17 00:00:00 2001 From: Alexander Graf <agraf@csgraf.de> Date: Fri, 10 Jun 2022 00:59:17 +0200 Subject: [PATCH 06/13] vidconsole: Add damage notifications to all vidconsole @@ -1112,7 +1112,7 @@ index a3f8c6352f83..f11dc3a0b075 100644 } diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c -index c435162d3f94..6a17f732fc26 100644 +index 17a29817664f..073ddcfb6950 100644 --- a/drivers/video/console_truetype.c +++ b/drivers/video/console_truetype.c @@ -190,6 +190,7 @@ struct console_tt_store { @@ -1172,10 +1172,10 @@ index c435162d3f94..6a17f732fc26 100644 if (ret) return ret; -- -2.45.2 +2.49.0 -From 991d7e646de88fd019059679f659761072412e15 Mon Sep 17 00:00:00 2001 +From e759e3ab52f4373d4f2487d857118b3f0b5998b2 Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak <alpernebiyasak@gmail.com> Date: Fri, 18 Aug 2023 17:55:08 +0300 Subject: [PATCH 07/13] video: test: Test video damage tracking via vidconsole @@ -1194,10 +1194,10 @@ Link: https://lore.kernel.org/u-boot/20230821135111.3558478-8-alpernebiyasak@gma 2 files changed, 57 insertions(+) diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig -index dc5fcdbd1c9e..5e5ad60ee057 100644 +index 861a1f4cd90e..8bf36ff325d8 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig -@@ -319,6 +319,7 @@ CONFIG_USB_ETH_CDC=y +@@ -328,6 +328,7 @@ CONFIG_USB_ETH_CDC=y CONFIG_VIDEO=y CONFIG_VIDEO_FONT_SUN12X22=y CONFIG_VIDEO_COPY=y @@ -1206,13 +1206,13 @@ index dc5fcdbd1c9e..5e5ad60ee057 100644 CONFIG_CONSOLE_TRUETYPE=y CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y diff --git a/test/dm/video.c b/test/dm/video.c -index 4798f2205a99..119c43153165 100644 +index 80e65d66dbaf..e76fa986d359 100644 --- a/test/dm/video.c +++ b/test/dm/video.c @@ -710,3 +710,59 @@ static int dm_test_video_copy(struct unit_test_state *uts) return 0; } - DM_TEST(dm_test_video_copy, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); + DM_TEST(dm_test_video_copy, UTF_SCAN_PDATA | UTF_SCAN_FDT); + +/* Test video damage tracking */ +static int dm_test_video_damage(struct unit_test_state *uts) @@ -1268,12 +1268,12 @@ index 4798f2205a99..119c43153165 100644 + + return 0; +} -+DM_TEST(dm_test_video_damage, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); ++DM_TEST(dm_test_video_damage, UTF_SCAN_PDATA | UTF_SCAN_FDT); -- -2.45.2 +2.49.0 -From f74688b9828f83306dea8553eafe61b5d81fbbe0 Mon Sep 17 00:00:00 2001 +From aa9d791d839b1004809b4a6cba38cd0bfd3dafa9 Mon Sep 17 00:00:00 2001 From: Alexander Graf <agraf@csgraf.de> Date: Fri, 10 Jun 2022 00:59:18 +0200 Subject: [PATCH 08/13] video: Add damage notification on bmp display @@ -1303,10 +1303,10 @@ index ad512d99a1b9..78de95607924 100644 fb = (uchar *)(priv->fb + y * priv->line_length + x * bpix / 8); ret = video_sync_copy(dev, start, fb); -- -2.45.2 +2.49.0 -From 791b0accde45ada93fdf61773f8c7e69b934e55e Mon Sep 17 00:00:00 2001 +From 68262daa712e3202149aa0249bcff233234b6dfa Mon Sep 17 00:00:00 2001 From: Alexander Graf <agraf@csgraf.de> Date: Fri, 10 Jun 2022 00:59:19 +0200 Subject: [PATCH 09/13] efi_loader: GOP: Add damage notification on BLT @@ -1326,10 +1326,10 @@ Link: https://lore.kernel.org/u-boot/20230821135111.3558478-10-alpernebiyasak@gm 1 file changed, 7 insertions(+) diff --git a/lib/efi_loader/efi_gop.c b/lib/efi_loader/efi_gop.c -index 41e12fa72460..1694e23dcc62 100644 +index 4593975be5af..3abb47d610e6 100644 --- a/lib/efi_loader/efi_gop.c +++ b/lib/efi_loader/efi_gop.c -@@ -24,6 +24,7 @@ static const efi_guid_t efi_gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID; +@@ -26,6 +26,7 @@ static const efi_guid_t efi_gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID; * @ops: graphical output protocol interface * @info: graphical output mode information * @mode: graphical output mode @@ -1337,7 +1337,7 @@ index 41e12fa72460..1694e23dcc62 100644 * @bpix: bits per pixel * @fb: frame buffer */ -@@ -32,6 +33,7 @@ struct efi_gop_obj { +@@ -34,6 +35,7 @@ struct efi_gop_obj { struct efi_gop ops; struct efi_gop_mode_info info; struct efi_gop_mode mode; @@ -1345,7 +1345,7 @@ index 41e12fa72460..1694e23dcc62 100644 /* Fields we only have access to during init */ u32 bpix; void *fb; -@@ -120,6 +122,7 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, +@@ -122,6 +124,7 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, u32 *fb32 = gopobj->fb; u16 *fb16 = gopobj->fb; struct efi_gop_pixel *buffer = __builtin_assume_aligned(bufferp, 4); @@ -1353,7 +1353,7 @@ index 41e12fa72460..1694e23dcc62 100644 if (delta) { /* Check for 4 byte alignment */ -@@ -243,6 +246,9 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, +@@ -245,6 +248,9 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, dlineoff += dwidth; } @@ -1363,7 +1363,7 @@ index 41e12fa72460..1694e23dcc62 100644 return EFI_SUCCESS; } -@@ -549,6 +555,7 @@ efi_status_t efi_gop_register(void) +@@ -551,6 +557,7 @@ efi_status_t efi_gop_register(void) gopobj->info.pixels_per_scanline = col; gopobj->bpix = bpix; gopobj->fb = map_sysmem(fb_base, fb_size); @@ -1372,10 +1372,10 @@ index 41e12fa72460..1694e23dcc62 100644 return EFI_SUCCESS; } -- -2.45.2 +2.49.0 -From 1b0905d54711c6c170de575a36e66006b8a6583a Mon Sep 17 00:00:00 2001 +From b9d38bb68233d917a84c589b098699bd9ef08d70 Mon Sep 17 00:00:00 2001 From: Alexander Graf <agraf@csgraf.de> Date: Fri, 10 Jun 2022 00:59:20 +0200 Subject: [PATCH 10/13] video: Only dcache flush damaged lines @@ -1396,10 +1396,10 @@ Link: https://lore.kernel.org/u-boot/20230821135111.3558478-11-alpernebiyasak@gm 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index 6906b2b83623..3f6572a124ea 100644 +index 1c07613539f2..2dffcc229f6f 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -384,6 +384,40 @@ void video_damage(struct udevice *vid, int x, int y, int width, int height) +@@ -399,6 +399,40 @@ void video_damage(struct udevice *vid, int x, int y, int width, int height) } #endif @@ -1440,7 +1440,7 @@ index 6906b2b83623..3f6572a124ea 100644 /* Flush video activity to the caches */ int video_sync(struct udevice *vid, bool force) { -@@ -407,11 +441,10 @@ int video_sync(struct udevice *vid, bool force) +@@ -422,11 +456,10 @@ int video_sync(struct udevice *vid, bool force) * out whether it exists? For now, ARM is safe. */ #if defined(CONFIG_ARM) && !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) @@ -1457,10 +1457,10 @@ index 6906b2b83623..3f6572a124ea 100644 sandbox_sdl_sync(priv->fb); #endif -- -2.45.2 +2.49.0 -From 4c02e522cb00b84cfa61004c32b4e5ae28457c58 Mon Sep 17 00:00:00 2001 +From bcb0061c373dca651760928ec6f8e13842b26e55 Mon Sep 17 00:00:00 2001 From: Alexander Graf <agraf@csgraf.de> Date: Fri, 10 Jun 2022 00:59:21 +0200 Subject: [PATCH 11/13] video: Use VIDEO_DAMAGE for VIDEO_COPY @@ -1493,20 +1493,20 @@ Link: https://lore.kernel.org/u-boot/20230821135111.3558478-12-alpernebiyasak@gm drivers/video/Kconfig | 5 ++ drivers/video/console_normal.c | 13 +---- drivers/video/console_rotate.c | 44 +++----------- - drivers/video/console_truetype.c | 16 +----- + drivers/video/console_truetype.c | 20 +------ drivers/video/vidconsole-uclass.c | 16 ------ drivers/video/video-uclass.c | 96 ++++++++----------------------- drivers/video/video_bmp.c | 7 --- include/video.h | 37 ------------ include/video_console.h | 52 ----------------- test/dm/video.c | 3 +- - 11 files changed, 43 insertions(+), 247 deletions(-) + 11 files changed, 43 insertions(+), 251 deletions(-) diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig -index 5e5ad60ee057..dc5fcdbd1c9e 100644 +index 8bf36ff325d8..861a1f4cd90e 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig -@@ -319,7 +319,6 @@ CONFIG_USB_ETH_CDC=y +@@ -328,7 +328,6 @@ CONFIG_USB_ETH_CDC=y CONFIG_VIDEO=y CONFIG_VIDEO_FONT_SUN12X22=y CONFIG_VIDEO_COPY=y @@ -1515,7 +1515,7 @@ index 5e5ad60ee057..dc5fcdbd1c9e 100644 CONFIG_CONSOLE_TRUETYPE=y CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig -index d7da655cea62..d6497819ea73 100644 +index 5d67067891be..964174b01acc 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -89,11 +89,14 @@ config VIDEO_PCI_DEFAULT_FB_SIZE @@ -1729,7 +1729,7 @@ index f11dc3a0b075..886b25dcfafc 100644 return ret; diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c -index 6a17f732fc26..58dcd8e050c3 100644 +index 073ddcfb6950..56c3af3d5aad 100644 --- a/drivers/video/console_truetype.c +++ b/drivers/video/console_truetype.c @@ -194,7 +194,6 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) @@ -1786,11 +1786,29 @@ index 6a17f732fc26..58dcd8e050c3 100644 free(data); return width_frac; +@@ -872,7 +862,6 @@ static int truetype_set_cursor_visible(struct udevice *dev, bool visible, + uint row, width, height, xoff; + void *start, *line; + uint out, val; +- int ret; + + if (xpl_phase() <= PHASE_SPL) + return -ENOSYS; +@@ -962,9 +951,6 @@ static int truetype_set_cursor_visible(struct udevice *dev, bool visible, + + line += vid_priv->line_length; + } +- ret = vidconsole_sync_copy(dev, start, line); +- if (ret) +- return ret; + + return video_sync(vid, true); + } diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c -index 8b2ef51f1b3b..bcc46a08cbbd 100644 +index 8613c464040f..ce6c8bb70cb7 100644 --- a/drivers/video/vidconsole-uclass.c +++ b/drivers/video/vidconsole-uclass.c -@@ -801,22 +801,6 @@ UCLASS_DRIVER(vidconsole) = { +@@ -803,22 +803,6 @@ UCLASS_DRIVER(vidconsole) = { .per_device_auto = sizeof(struct vidconsole_priv), }; @@ -1814,10 +1832,10 @@ index 8b2ef51f1b3b..bcc46a08cbbd 100644 { int ret; diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index 3f6572a124ea..845db1c9b6d3 100644 +index 2dffcc229f6f..eeee5d960838 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -158,7 +158,7 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, +@@ -171,7 +171,7 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, struct video_priv *priv = dev_get_uclass_priv(dev); void *start, *line; int pixels = xend - xstart; @@ -1826,7 +1844,7 @@ index 3f6572a124ea..845db1c9b6d3 100644 start = priv->fb + ystart * priv->line_length; start += xstart * VNBYTES(priv->bpix); -@@ -197,9 +197,6 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, +@@ -210,9 +210,6 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, } line += priv->line_length; } @@ -1836,7 +1854,7 @@ index 3f6572a124ea..845db1c9b6d3 100644 video_damage(dev, xstart, ystart, xend - xstart, yend - ystart); -@@ -223,7 +220,6 @@ int video_reserve_from_bloblist(struct video_handoff *ho) +@@ -235,7 +232,6 @@ int video_reserve_from_bloblist(struct video_handoff *ho) int video_fill(struct udevice *dev, u32 colour) { struct video_priv *priv = dev_get_uclass_priv(dev); @@ -1844,7 +1862,7 @@ index 3f6572a124ea..845db1c9b6d3 100644 switch (priv->bpix) { case VIDEO_BPP16: -@@ -248,9 +244,6 @@ int video_fill(struct udevice *dev, u32 colour) +@@ -260,9 +256,6 @@ int video_fill(struct udevice *dev, u32 colour) memset(priv->fb, colour, priv->fb_size); break; } @@ -1854,7 +1872,7 @@ index 3f6572a124ea..845db1c9b6d3 100644 video_damage(dev, 0, 0, priv->xsize, priv->ysize); -@@ -418,6 +411,27 @@ static void video_flush_dcache(struct udevice *vid, bool use_copy) +@@ -433,6 +426,27 @@ static void video_flush_dcache(struct udevice *vid, bool use_copy) } #endif @@ -1882,7 +1900,7 @@ index 3f6572a124ea..845db1c9b6d3 100644 /* Flush video activity to the caches */ int video_sync(struct udevice *vid, bool force) { -@@ -425,6 +439,9 @@ int video_sync(struct udevice *vid, bool force) +@@ -440,6 +454,9 @@ int video_sync(struct udevice *vid, bool force) struct video_ops *ops = video_get_ops(vid); int ret; @@ -1892,7 +1910,7 @@ index 3f6572a124ea..845db1c9b6d3 100644 if (ops && ops->video_sync) { ret = ops->video_sync(vid); if (ret) -@@ -508,69 +525,6 @@ int video_get_ysize(struct udevice *dev) +@@ -523,69 +540,6 @@ int video_get_ysize(struct udevice *dev) return priv->ysize; } @@ -1987,7 +2005,7 @@ index 78de95607924..1f267d45812c 100644 return video_sync(dev, false); } diff --git a/include/video.h b/include/video.h -index 835d7734cb75..705076facfb5 100644 +index 7eed112e00c4..2fe2f73a865b 100644 --- a/include/video.h +++ b/include/video.h @@ -355,43 +355,6 @@ void video_set_default_colors(struct udevice *dev, bool invert); @@ -2035,10 +2053,10 @@ index 835d7734cb75..705076facfb5 100644 /** * video_damage() - Notify the video subsystem about screen updates. diff --git a/include/video_console.h b/include/video_console.h -index 00c5ecb664b9..ead0e05e4003 100644 +index 17a9aa3f9295..b228c725fd80 100644 --- a/include/video_console.h +++ b/include/video_console.h -@@ -530,56 +530,4 @@ void vidconsole_list_fonts(struct udevice *dev); +@@ -538,56 +538,4 @@ void vidconsole_list_fonts(struct udevice *dev); */ int vidconsole_get_font_size(struct udevice *dev, const char **name, uint *sizep); @@ -2096,7 +2114,7 @@ index 00c5ecb664b9..ead0e05e4003 100644 - #endif diff --git a/test/dm/video.c b/test/dm/video.c -index 119c43153165..9b7bb51a3dd9 100644 +index e76fa986d359..021f4b3fa733 100644 --- a/test/dm/video.c +++ b/test/dm/video.c @@ -105,6 +105,7 @@ static int check_copy_frame_buffer(struct unit_test_state *uts, @@ -2117,10 +2135,10 @@ index 119c43153165..9b7bb51a3dd9 100644 return 0; } -- -2.45.2 +2.49.0 -From 174b8b118c02e7cadf9ad56462b481c91f4a3343 Mon Sep 17 00:00:00 2001 +From 631692ed7090a8cfd0b2a3b3f23c295644f1393e Mon Sep 17 00:00:00 2001 From: Alexander Graf <agraf@csgraf.de> Date: Tue, 3 Jan 2023 22:50:03 +0100 Subject: [PATCH 12/13] video: Always compile cache flushing code @@ -2145,10 +2163,10 @@ Link: https://lore.kernel.org/u-boot/20230821135111.3558478-13-alpernebiyasak@gm 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index 845db1c9b6d3..5416e0d9030b 100644 +index eeee5d960838..6c5a86d85dbc 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -383,6 +383,9 @@ static void video_flush_dcache(struct udevice *vid, bool use_copy) +@@ -398,6 +398,9 @@ static void video_flush_dcache(struct udevice *vid, bool use_copy) struct video_priv *priv = dev_get_uclass_priv(vid); ulong fb = use_copy ? (ulong)priv->copy_fb : (ulong)priv->fb; @@ -2158,7 +2176,7 @@ index 845db1c9b6d3..5416e0d9030b 100644 if (!priv->flush_dcache) return; -@@ -452,17 +455,12 @@ int video_sync(struct udevice *vid, bool force) +@@ -467,17 +470,12 @@ int video_sync(struct udevice *vid, bool force) get_timer(priv->last_sync) < CONFIG_VIDEO_SYNC_MS) return 0; @@ -2179,10 +2197,10 @@ index 845db1c9b6d3..5416e0d9030b 100644 #endif priv->last_sync = get_timer(0); -- -2.45.2 +2.49.0 -From 2a1af00665464023c38903eeb75a0c89099892fb Mon Sep 17 00:00:00 2001 +From 08f3add44c202053f5ba882cb2f440e8e470229c Mon Sep 17 00:00:00 2001 From: Alexander Graf <agraf@csgraf.de> Date: Tue, 3 Jan 2023 22:50:04 +0100 Subject: [PATCH 13/13] video: Enable VIDEO_DAMAGE for drivers that need it @@ -2214,10 +2232,10 @@ Link: https://lore.kernel.org/u-boot/20230821135111.3558478-14-alpernebiyasak@gm 9 files changed, 16 insertions(+) diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig -index 17666814c52e..1ba0d2c1c8d7 100644 +index ba1b15414379..bb1ea961704e 100644 --- a/arch/arm/mach-sunxi/Kconfig +++ b/arch/arm/mach-sunxi/Kconfig -@@ -863,6 +863,7 @@ config VIDEO_SUNXI +@@ -882,6 +882,7 @@ config VIDEO_SUNXI depends on !SUNXI_GEN_NCAT2 select VIDEO select DISPLAY @@ -2226,7 +2244,7 @@ index 17666814c52e..1ba0d2c1c8d7 100644 default y ---help--- diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig -index d6497819ea73..8fb69e0b16c2 100644 +index 964174b01acc..6e1577ae6871 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -534,6 +534,7 @@ config VIDEO_LCD_ANX9804 @@ -2245,7 +2263,7 @@ index d6497819ea73..8fb69e0b16c2 100644 help The graphics processor already sets up the display so this driver simply checks the resolution and then sets up the frame buffer with -@@ -706,6 +708,7 @@ source "drivers/video/meson/Kconfig" +@@ -715,6 +717,7 @@ source "drivers/video/meson/Kconfig" config VIDEO_MVEBU bool "Armada XP LCD controller" @@ -2253,7 +2271,7 @@ index d6497819ea73..8fb69e0b16c2 100644 ---help--- Support for the LCD controller integrated in the Marvell Armada XP SoC. -@@ -740,6 +743,7 @@ config NXP_TDA19988 +@@ -749,6 +752,7 @@ config NXP_TDA19988 config ATMEL_HLCD bool "Enable ATMEL video support using HLCDC" @@ -2261,7 +2279,7 @@ index d6497819ea73..8fb69e0b16c2 100644 help HLCDC supports video output to an attached LCD panel. -@@ -816,6 +820,7 @@ source "drivers/video/tidss/Kconfig" +@@ -825,6 +829,7 @@ source "drivers/video/tidss/Kconfig" config VIDEO_TEGRA124 bool "Enable video support on Tegra124" @@ -2269,7 +2287,7 @@ index d6497819ea73..8fb69e0b16c2 100644 help Tegra124 supports many video output options including eDP and HDMI. At present only eDP is supported by U-Boot. This option -@@ -830,6 +835,7 @@ source "drivers/video/imx/Kconfig" +@@ -839,6 +844,7 @@ source "drivers/video/imx/Kconfig" config VIDEO_MXS bool "Enable video support on i.MX28/i.MX6UL/i.MX7 SoCs" @@ -2277,7 +2295,7 @@ index d6497819ea73..8fb69e0b16c2 100644 help Enable framebuffer driver for i.MX28/i.MX6UL/i.MX7 processors -@@ -892,6 +898,7 @@ config VIDEO_DW_MIPI_DSI +@@ -901,6 +907,7 @@ config VIDEO_DW_MIPI_DSI config VIDEO_SIMPLE bool "Simple display driver for preconfigured display" @@ -2285,7 +2303,7 @@ index d6497819ea73..8fb69e0b16c2 100644 help Enables a simple generic display driver which utilizes the simple-framebuffer devicetree bindings. -@@ -910,6 +917,7 @@ config VIDEO_DT_SIMPLEFB +@@ -919,6 +926,7 @@ config VIDEO_DT_SIMPLEFB config VIDEO_MCDE_SIMPLE bool "Simple driver for ST-Ericsson MCDE with preconfigured display" @@ -2377,5 +2395,5 @@ index 95086f3a5d66..3291b3ceb8d5 100644 TIDSS supports video output options LVDS and DPI . This option enables these supports which can be used on -- -2.45.2 +2.49.0 diff --git a/config/u-boot/default/patches/0004-HACK-Makefile-Ignore-missing-input-files-for-binman.patch b/config/u-boot/default/patches/0004-HACK-Makefile-Ignore-missing-input-files-for-binman.patch index fc3dea4d..5307f378 100644 --- a/config/u-boot/default/patches/0004-HACK-Makefile-Ignore-missing-input-files-for-binman.patch +++ b/config/u-boot/default/patches/0004-HACK-Makefile-Ignore-missing-input-files-for-binman.patch @@ -1,4 +1,4 @@ -From ec8f5b8e949995eb34b7e54b9f06894eb38d02b4 Mon Sep 17 00:00:00 2001 +From faa87ed4d2ff07e9e8cc98cd08cbb34c905c1ac6 Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak <alpernebiyasak@gmail.com> Date: Wed, 10 Jul 2024 17:37:56 +0300 Subject: [PATCH] HACK: Makefile: Ignore missing input files for binman images @@ -17,18 +17,18 @@ Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile -index 34dd029d0cda..d5d89bd2e35c 100644 +index a7593e8a1680..30deb760bf8f 100644 --- a/Makefile +++ b/Makefile -@@ -1375,7 +1375,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if $(BINMAN_DEBUG),-D) \ - --toolpath $(objtree)/tools \ +@@ -1410,7 +1410,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if $(BINMAN_DEBUG),-D) \ $(if $(BINMAN_VERBOSE),-v$(BINMAN_VERBOSE)) \ - build -u -d u-boot.dtb -O . -m \ -- --allow-missing $(if $(BINMAN_ALLOW_MISSING),--ignore-missing) \ -+ --allow-missing --ignore-missing \ + build -u -d $(binman_dtb) -O . -m \ + --allow-missing --fake-ext-blobs \ +- $(if $(BINMAN_ALLOW_MISSING),--ignore-missing) \ ++ --ignore-missing \ -I . -I $(srctree) -I $(srctree)/board/$(BOARDDIR) \ - -I $(dt_dir) -a of-list=$(CONFIG_OF_LIST) \ + $(foreach f,$(of_list_dirs),-I $(f)) -a of-list=$(of_list) \ $(foreach f,$(BINMAN_INDIRS),-I $(f)) \ -- -2.45.2 +2.49.0 diff --git a/config/u-boot/default/patches/0005-HACK-rk3399-gru-Remove-assigned-clock-dt-properties-.patch b/config/u-boot/default/patches/0005-HACK-rk3399-gru-Remove-assigned-clock-dt-properties-.patch index 45a6ab4a..018da338 100644 --- a/config/u-boot/default/patches/0005-HACK-rk3399-gru-Remove-assigned-clock-dt-properties-.patch +++ b/config/u-boot/default/patches/0005-HACK-rk3399-gru-Remove-assigned-clock-dt-properties-.patch @@ -1,4 +1,4 @@ -From 9685041c19bcc61ca847a59e93c716d23df51898 Mon Sep 17 00:00:00 2001 +From d02163324baeb817ed55df41fac863cab4be038c Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak <alpernebiyasak@gmail.com> Date: Wed, 10 Jul 2024 14:32:19 +0300 Subject: [PATCH] HACK: rk3399: gru: Remove assigned clock dt properties for @@ -18,7 +18,7 @@ Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com> 1 file changed, 3 insertions(+) diff --git a/arch/arm/dts/rk3399-gru-u-boot.dtsi b/arch/arm/dts/rk3399-gru-u-boot.dtsi -index 6bdc892bd913..f4457c1b9b48 100644 +index 5517176aa4a0..9f40cf1e0208 100644 --- a/arch/arm/dts/rk3399-gru-u-boot.dtsi +++ b/arch/arm/dts/rk3399-gru-u-boot.dtsi @@ -27,6 +27,9 @@ &cros_ec { @@ -30,7 +30,7 @@ index 6bdc892bd913..f4457c1b9b48 100644 + /delete-property/ assigned-clock-rates; }; - &pp1800_audio { + &emmc_phy { -- -2.45.2 +2.49.0 diff --git a/config/u-boot/default/patches/0007-Libreboot-branding-version-on-the-bootflow-menu.patch b/config/u-boot/default/patches/0007-Libreboot-branding-version-on-the-bootflow-menu.patch index 2f903cd7..8a09fa7d 100644 --- a/config/u-boot/default/patches/0007-Libreboot-branding-version-on-the-bootflow-menu.patch +++ b/config/u-boot/default/patches/0007-Libreboot-branding-version-on-the-bootflow-menu.patch @@ -18,7 +18,7 @@ index 84831915a2..8e26ec2aef 100644 ret |= scene_obj_set_pos(scn, OBJ_MENU, MARGIN_LEFT, 100); ret |= scene_txt_str(scn, "title", OBJ_MENU_TITLE, STR_MENU_TITLE, - "U-Boot - Boot Menu", NULL); -+ "Libreboot 20241206, 8th revision (U-Boot menu): https://libreboot.org/", NULL); ++ "Libreboot 25.06 Luminous Lemon (U-Boot menu): https://libreboot.org/", NULL); ret |= scene_menu_set_title(scn, OBJ_MENU, OBJ_PROMPT); logo = video_get_u_boot_logo(); diff --git a/config/u-boot/default/patches/0008-change-the-logo-back-to-the-plain-libreboot-one.patch b/config/u-boot/default/patches/0008-change-the-logo-back-to-the-plain-libreboot-one.patch deleted file mode 100644 index febc2372..00000000 --- a/config/u-boot/default/patches/0008-change-the-logo-back-to-the-plain-libreboot-one.patch +++ /dev/null @@ -1,157 +0,0 @@ -From d721edb391618fca096ec7f63a2fbc9df0af9231 Mon Sep 17 00:00:00 2001 -From: Leah Rowe <info@minifree.org> -Date: Tue, 17 Dec 2024 12:59:54 +0000 -Subject: [PATCH 1/1] change the logo back to the plain libreboot one - -Signed-off-by: Leah Rowe <info@minifree.org> ---- - drivers/video/u_boot_logo.bmp | Bin 27350 -> 27350 bytes - 1 file changed, 0 insertions(+), 0 deletions(-) - -diff --git a/drivers/video/u_boot_logo.bmp b/drivers/video/u_boot_logo.bmp -index bc9ae001badb25bc900058c167a47247ef91dc7c..c9262cd206cc3cf5297daa94b696fcf102fc22b5 100644 -GIT binary patch -literal 27350 -zcmeHQO>7&-6@I%EB~g@3*_3HXp(Kj3Xz^F1xI5%-k<?b5AGdL!IIdx*ZfpJcFSTSr -zQfdP=&;SXL0KNqA!D)S{6CWJF1yaC3d+?=zdov0YsFApE(VKxDdTP;Lia?zuxqsp= -zxt!S*2L%^c?%Ua!_r85I^XBc_8SdP%uik;mhPnWzF?FZ5bI@B!hh>0pu(|_>lkh&; -z7l(;p0^-4Gh=&s}6;45NBnRoSJY?eqC?o_ZCJ~4k3Cc6y0(tgDc&T&<UMe4kxfhSX -z%in$tjvRgkUODs{9DVtFaO~(C@WyxN;mu>m;l!IK;pAJV;PlD2;mqkD!jI3Kg|k0e -zfaS$=aN*oVxOn~&{N$a>aAkE3*6_Z$u?bgydJV2!y$08Rb{*dP`FrsG`yaqZAASTk -zZrp&IpWK97w?2j2w{OGUyLaK<y)WPkyx+fnAHMwZH}K%W19<rGAv}8Y2p&Iv3{Rds -zfu~<Tg=f#6!Sm<Ot2*fXb~Mn@fTjVyvvoAk(LhH7UTYu_@LB>5|L#00p<;R>!f`Zg -zJS!V6%ask~#``=ILc=&)#fN`|2|t5642c>*IonTjryiA!2s%Jvh(QfT3OYbE?2#5| -z*bZbQ4Phxl!^xwv{^3~-AYu_9-!-PSLNUZ(8|3+}!E~*b1r~cT&vSgRW~=jTT56sj -zt+m3e-=l_3%U10ssV-Vh-jp9u4b7A{{HeKSYBelHsabi#pkGxWn`V&bQ>vjBf}SXV -zmZ`61V`Mo)%gUSbY73O*NpA#Da_v(qST2VtS$R`j_gBSUZzRxhRR<BQ$1EKuk4l%c -z8kX~+@l>`jn@>&b>-I=m>uhs6KAn=p^avw^UPMP_ri$ZC_zk)VG{ci+DL>SDb+}(b -zbEUWAlVz0X!j2;CMj5M^uE(XPq<d-c1qLD!Di__h0aj4vLKN!b{BZ%5rIMJ9lJ_>% -z&)1b^qJ(|q0J)etzDq)kxVIHec<N5j7&*Xh1MdRqjcQI-9kgmf`5-yKs6Kwmr8pU% -zQDg&5O_rv~dvVNQ9xxxGEtWS7aw;g(F+<#V_^@Gsl2SzYcrNrpT2y^~6EO9pNXA$x -z)jesb<0Lts{!}9^B8oUjD5bR^iJ~p@{6SS+R!8i95!>p4X%(R~POd>cq+o>)k9HJZ -zS0Gjk>y<}n02+Fm1;%oQW;A)B$`O&;LFK+CEl`<~#0+`Nwbqk`L2?c5GJ&x^DHW!N -ziJn!0H4{-F_ZK*|9a}@wQ^nbAYN)@(2AQsvr!c1mYpR2>r%Fi3rxWqv9w+_@7pPe< -z(t!lGi*b7_4X%_>ek!Ucv#|x@R0AfBk~YD;4Nx?>g!1ulV|=_{Z9Zr(A;2!fVAKSU -z#pSY)XlQ{r%|6VKj_CRuIt%#@lFGAV-S%44Z$Dw5siA7)4lp#yQp)Y;`9L%tkH*I$ -z=J(CI0wuz6B;3eLXaY>XED2>9TRW+Ygj^zO3@&QzM<BAHJa2eEr^}<GP;OF-j_CoP -zM8kTty*NdO#jdoNid1c+ra;1%e|@SAu#-fbj&jieXRxrdM143w+k+e7mxR=Q-BBm; -z1&0lfgpDM*ajj_X+_p{5cwq<O$#Tpn*%2M|to2zbJnsmTF;jPA586ryMH*^28X9qF -zv^GLgh;>|4YW?;7Zp}V9mO`FU?9ue%n2729pIorBlBo6m!SlX`0ZV6sjk$_q$@-3^ -zELmjC-z=bIl-`_<@WE(oGMSml7m9))B7{n1B;r|W#Lt=jDeD_<j>RfR+T60L(dgb@ -zqOnb76>+hX2xdoAjh35JRl!b={)8HtwNgn-X;SMp&I!tJ+AV|=PQ(%9*_(8ymRldh -zoPzBh%_91)f{gCHQ_)WI`G*e{XfcvlVW;?TKF+^ybb1EAXlbci7&24EOq&C(S_J=K -zbTX036lMjn)FRSCa~baD@bw2nqshGB@KLmVGY0}=83%n_^u_`@)Oo-#U)0d(3}m}! -zCv_ccY=lZU+|k~xTb-(B(3(!th3wtAGd1$4qtYqTP>?&wYFviw>zIw{d+OQ)U2iJI -z20lJyXSU0&Kc%@^wJNi)O%<1kJ$aS0OUDtlM$N|(L72rQMBCU{KirqL<!a-pWpoL( -z5zsc#z2=&&o-u@vw^ATW_^g5tEaCH8R4_~Uc#HTZQ}`^R>*BUf)Yj8*eFdW?uU&T* -zZ~Y*L)R@c80<n=+AHZg+{po8Cw2Ed6Ur58H5^Ujvx(3J=KEAF2GKQ~ih$~aYa&5XH -zd2)RNoMFa6Rqm?30m{-8`R%%1lB;WgxFgR{ObT-uAy?M`6+?qY=py#+f#m8NpaM{u -zVgw)uHV?uDF9Xpn=$EsN7U8#AV{HuvR`0_4F;l5zyrE3n7ryjVk=XsBT%?8C@E|K# -zIQb^9`C$9{3g9;qP3K6>c%T(WEIH^I&srI1lm28mKj4U++nM%c9lmprb8d@vz^~uI -z%LY}C?ZD@=if*WYOh=U3?cjdh&vL*~^@@0wYI`~`=Zh8V{Ckt;WIW5Reg8be;YVHH -zVA|IHm9kMLeAN+4B^C+i#Jb-OeS7KvN?Gc)h;HKC1`wsl7cIC6OXsDorog>JYBH@{ -zFSL_Xbr6<NF*U}BV`{#8WfU$C>}I0Bnvqq{6jLo&U0@@v@|48r-%=<VN-Dz!*$lrO -zQE<hV(Wc$+h{#ri>{rxRB3z@;iXg(gm1j(;?K30n(AQ?!OA~e(+MKSgQ<IWx1^;Sl -z*{}JjQqsxNxSiH!Wu>4{Syd|~cUpLJd6jkhcyc{Ai9J=CKLBVhiYUj3QoVS65&jo7 -zymp$sKbD!m@TA%kcr?}KXp4o06Br+3Zxu`^m9dwpx2h&|Jg;<LhFvR8Sz)l_vrf0^ -zsL`p?{#eGRta4@<Uj#q>vW%|_2eKG;?RkE<ATSflu<j`Add}8(JE<KFbTsh)ssRB0 -z&gG?*jjlrgE32F9$6uX`ojUz?tmp604}0(~LVjUsW9{(#{Oj6BL+XhCd{z0L5d1l- -z@T$AqIAPcFxs4_KF`^jGc4%pBeG}7XF^#Tnt||1Vm>yiZxPZT2#Qhr6nRN^h(@&N3 -z#VY*|g}zXsc}&9K`ibM;!S^<Z>DUDWy=b79F0QZOJOa*hV0mQ~^XE@h>1Bn!uFxx& -z-^JJ}oASk^{&TC}e+wTE;5`bj!cjN|^ALkYco#0gW!Qu)KCa@F4LFXk&)Jk8sg$3` -zr516iOR$7X9Dysa0t=P$pwt1*gEw8b8|RC&l_aiz4#5Ant*w7e0rcDi_~zrSt^a<u -zwe`*C0KUHh{C-t0f8`E9`QJGGV?FJ_uK+?H0Q~k3dfMVGfZu%xF!YzTh4qDs93TGW -z&z}eQ=RJU3r}3Ag{shqXgR0)}HRU?o{Tko|*468O1o*`-0TLH5?=v>{t$c_|(_6zl -HHU0e$+Zn$= - -literal 27350 -zcmeI4X;4&Wy2qdHrW-_vf~Q+fvxtHMDuIZCglHm=fVhAxir~hgf>ENNF(W3?XpH+1 -zw}==uio$3#35sl^*F+S*+^So3t7fU1n$PoLKHXb0U#6y<|MQ++Xy|4+$n8^eeap7r -zKIil~zy3eV`@HYzCVj>4wvlMbK18wTU9&xO<R`XMCDHE#l?Umt2@lCAljLtD*%VHp -z6Rczowo=GcnJlK66y`gf!Y4%Gm<1$-#E>MXP)LkS)`eD*V$#TxIG3XQWs30+r8r5Z -zg_C89GDgvK|5-F+Vl2(^jiNcmI9lKvNArz|lx9q(#l}>MiIQplOqmi=acxsJNpBR8 -z<X4UUXCy_xPtyE6k`k*(TD*tCvSf-V1Ybb{P1_z#p*8PP#ICs%z9)&o_b#NcU!~F9 -zY?-2qWtzJ|rngqhl(bH!v=W)7m&+7cHI3pn;dxsmNlS~#ytb62oLv;MC6~fJ&7jcF -zb4V)NMw$5BIp$DW6Jn*M0dbUWe1}#CCQwPxOv;}l)3&fs+A?J})deThhx26Gjn9x{ -z%%EIjHsu?0XuYw3Hk(${W@8Ce8`o2P;Bu;)P>4qXWv!7Z1ANPhWGVq`L7_~g`7&)^ -zDN{wBOjUT)Etjc22YMKf<8gtc2t16fc>GAx#5R(GZ{zWRBx^fKZ{nDQ8zjx>AZczF -z^y(%l?YAW5og*pZ5k4pSB|nf<hvO<9lC<+4Nh_a_RDeh6FWB~!qz`+s{~1a3y%c(I -z8HFA$AnTE0vL0PW))N&ZpRT5<M?N9BVF!hrsiTnd`zYk%XEgQdX$omPL?M@tllkI# -zlFocjQ@=Y)mgXih-@HMV)@HKYxkFNG2bu5vMCKnKlDVyiq(ivg2|Ui?noW4zK>rS& -zANJDm@Y!_2vWQMw7traDG&&!;fEwgfYK(Y`j>TH(TwEwM&9Ty%`7)i0ilT2L<Ebe! -zk(v`^x(8c)zgVUR2@%x(Ryf^XBvVgPDD|YtbZgcux*k27ZpK8@owz9aDL#@8Oj=5Z -zgEHx;^d5Z$-#P?)ocuthqj)}>DN|FrOgEOu)cT%GPm-<FyHHkQ=il^y%j@=9f!7NB -zJ1AhbSWH^|9KK5W)N7N_Y_{R?lNKd3>uE-1<%~!Z`1E><#SB|(se#Y5b!$~s)#m9e -zp|95XEEb{(%vV*ll?nA4)6ZhjGoV7anXRlP>oSW8fTl{DgpufLPC-sF6Dq3&A^^2# -zV)!5vIsmn1VvEI>U}c)H8BsC;3Th6}3_>)M4bWF}fE*}5<W#d2QLIHik!mVARm0ZW -z1cZe-Q)9J4vw$-gFbeA@np6<63lFTWo`EGE&E;uUjIb_KUH##Qk($iYB1E<VZ~Jzn -zK`mMsxn+7a@II<B=`;zbC*3ySeYA6nMuV7W2IK9lMLFoFK@(#TVZ2?nwf+tZYpJTn -zit-kLx4VWdY@6R{DBB=HcJA6$yL<P(Spe+UG*Z@JkP~=&_SH`W-Nc!*VrE7A3r=ki -z64lh!*6ypXuisx+_vvR!`(zQrYN9kGng!$TtKYx>)6eX9-1&GW6M8+Qk)kK=177|9 -zPaSkN5kHQ86@X@51sKEVjww6%px!_{P%c7kIJW8<pU}W|7=tep?Qy3bi+G?8^6JO1 -z+Qn%0rdC9v9d3-vc%OfM;8z^V>Yb1%AU1a1eB97LQ>h^W#I11!-+_i`NT?bRg=Nx$ -z1<56AOCy+2)p-yg2;IRA>K(Xr;8IhX+7mMkk#YWll9JN(8`iOgY5*~&MaO(Rh>!6O -zT)NcMba@d@Y*HB}2r$E2Yk{|^tZXUf5o*SETplet<`Wl2A>XB@%a<=-**k^_3IHj* -zbp57H8_O$JAe7Yr@;SIotaB3D@WA)&x8LrC52~)daAIA=hO&+2Pkvc}z8Vu-EPjH~ -z6m8FfcDyFwUAc0l!H0A@b!Qf{2r@*hsCe?US3Mvu&c#)<qM+h@@I6-V%GIll7v8{K -ze3c18AtXcair!}{RV&EqK*U81XjhN%px)JMXp8Y}1oc+t_Y&QC_J9>sKia_u2jGG4 -zs^Gi!4JR5jb!Im6hfjb0{6&uHQ{ciVrxC@D%);_rwc$a+3rjEw;HE0snDsi{oxT?g -zsMb-;$ftFm3+pz)`PldD>amH@ex0V&u7c8R^5=ULoHE3JLn~`G8)(W4v~=Xep%3-6 -zmv7+A0^TK&mu>1P)>ZKM|Ar-#kZxR>-eMR&uL%p^247z=>C|Q`qBr{E^|!8_u<`u4 -zGhZ#9G|30HR?Mxi4lf}-y%6yJWVK!lC)P2al34~CR}eDZ$x|neeR=rc+}X2Z0|NsB -zj1Dn}yd%X1rdGD_4|szo8xFIb=wm0|0Ow=A#*639d@b<4IGC6aKW9$L!W6XF0Fi!h -zT~|Z9zJhxPG2aWML6tFr3@FsQ>_~ieyDI8kJTLH$9#-%K90Q`+8SS?$IL!^<gN0iK -zAYw#a7K8(GQQ#(Y1s~KqbNa-wBM!WI3Y+c!d4Y<I;@Wz>-p?H5YA>S6%-62k1>y5U -zI^UTyr%oL^^5qu?-%W^*U)Wzh8)9sL!yE1K<L8tL0<IK%zftRgM0=Y&st4nqgnC~d -zV!SzS=u%SVB_&N$L^K!-gnvr2%LoDc`r6y?_hhQHu#RSO;&T%k*Di|CJ${t&65Xqp -zlA4r+dU={Lcp6uHPkvspA~RT-!r3Ag0=BoexAk<WOftwY4Ic2m;miWO!v_y0zUf}R -z)YJvQTf1R{C`h0D^7GT)XU`w3%$%$+nk^CpY`fpq)7|-<8Vh48O*E6$8#ruSYgF(! -z@rlgh5*W4@HoW!VgL;q;c+Z|cgvZ?mqP^v`we@s$bs>f&yV*zjY{o5i(q9-%=fD%8 -z3-vtVVY0?}WiYNyy$8&P_Crpv%^TagJ32b=-NdVra@mh#Jo0zreD=KT%q(sIAs^2r -zF&o-cUjD?Uo*j=7e_WXk84cZnuO)l*d=`X9gIhd=u08Q3#=q@0bm4of9#7Wnc+Vd^ -zU@k}N>$`tD=QrIQot^jYwcJt>B1kW8@DRF;cl^lVLkANR<LA8XM!XcEUWu4XmUHO- -z%)ZxOJy7=D=h$HDwzS;3o;7*_iPEmPjA+UWMLm&OkeA&%Us6)Cn2B#H+lbKkg(LU5 -zhz+NDNGxr_`R=ydym_m6`RMs{q`NSPkDU)S%TXRS65m8k;HIUfCM74cdLndz_mm^o -z#k$DL?QPxN-JP9`*L?l@>e2I=NS8K{&z4!B-WTsCycz$tJL|G>1>Pnlbe{_OY>{gd -z5PXVp@3yquymkHYV-@!0Y0O?%K&9e4&ZC;h%WlMj?<wjbHh9>8dTd>AwHgfRD{o`k -zfuf+DeXqN#^X@%?mo-&QhDMF1a{*M;J9YGkZP;+9UYrQsQVw0t%bfV&d(4MnmfPf@ -zDH$1=nVH!c*%=wx+1bmo-WU1Wp4Ue6jHQAlP6Zngx+jrYjvi7fK6iL2DXB2-+EUKT -z8!I^R!S|HVXtfsz3a9J;s^)>bC`Pltu@N$!Bk_5zS>Sx7N@h_;H5QNMd(j6zlvjE; -zn4=!t93sQSx+RTFXvgDvnJYfGp_`I~yllf0&ezM<WjZvjqwMvcSSeOJb#u_6!%H!y -zB}g<E&Y%7I^r>UE#OEQiFrLWE8*Q=i?AcF_ynK7~Iix>{hdve(bmafeug{<R`XuAA -zdY*~`;Mp>Zg2(DTcql@a1q>P&KzJcfZYRC-)v04&a%N#Xccbn+N8-a0pFOiU)Kd)X -zL4+}GwyhHQOj^9yvwHA7c0Q3=5W2`L9J;KVy}`ihBVm}205dDiCm?Wkoa<aor0G;q -z6d*RZUd9S3Mm2<n3*QTay7i=C&>XwDB2=1A=i_4x2nY-ejE#+pQ}~4Mab`hmC>7rT -zx)*&@RL+DP1jBU9CKUZnN(U{Y&T}R{sHY4Y0|(uedX;nWVYmkE_T#iOpc%raIn;x7 -z*|@IOZEtTKXZ;3oDjS@NhOdL~iO@wo+COv=BJJ%x<C6hBP`PZzlA1ypfzbUAQSrIr -ziJ5rUI3++Alp$WQ#eJ44c+Xu6Qt<Wkc$;sssFZ@A-hu16;Jpxd%=aqB+#wViZkHLW -z0u%(k0ioO1!v$%FcjBWTwAsw}pA4;o)x&h7!~1-EYaHt$KD_$vXu`O_>+JM$eAtCV -z75}4yj(zWb4^MUPVj;+Wh*zJXV34D#!Xlr*>*~@BA6K=RHUXg?7OA>By6)a>Q85c2 -zC!G-_HWy?*VO-3_mubYl_|R}cAz+`PUPmY7(-I#5#qu{>mqS;~#NXGBeu{vKaXGW_ -zD$sQ;@d5C*g4e}se9ZS)OMJ*NnGc2YA+a!C^JC^4!&jtUaVR4PiZwLk<-2!bTr~W$ -z`W0Vf45#xYLr;&g1bOe~P0&4Bjb*AaobXk@6?Xu!1c}g9mLS20;^tLfWDMsc$`NaP -zSc1F(^&YL(9N!e79^_N-inXPmo(!D$T6lf=(WBq4UR^Bd$8P~ag`tVQ=TQynJ!b0` -z7l&xd|B#`VDY3zHz+0m&K4j>0+<R$;dTiV^Yl_0Ore6@_iO_|5MMb&V;`1YYGph&r -zii?Yjii!#`xl{RV4HfP`{9E9F%}(_I7|Jtvm236GUvAV#5WVk$2L-K6IO-FP(;JAU -zDzU-NXKVR9gCD2sjrO#dCfP&Rj%Sl_v}YQh<FRhNoHI*Np%V|i57@?<h!i-WNPI4M -z4nXfCf<Pp`0enSyxnWie#%R9wJ4)kY!C}sdA!OA+HplD2JdAf<{@FWGh=a#Xrx3yH -z%@sieuqodSmva+VG`(YDWjT5%J`vRUIL-@0p8fvAWNV&NE4RG@Zxq#xCubEnM-8`V -zVq-4uoDCCY<FFfEm9+*HpPSY{R~Lq{8+ggSlSA|SvkXSf<^1BUC3A6Uy<`n@8^49C -ztXwCcjf3$<bV`Z8Kf_HwSh&J4lX6RWEWcPA5yg-PnUr7Yh7JT2PN$VR6$*af0+`Fv -zsr*^MkaDQp37Qax4;FqPZp5oR)%d&(fD+2mRjcxB0V`=|5m0<$xLQ$>eZ2Epz<L&+ -zix^COx!J#w@A+Ua>>;uiVczD2E064wL}5kVr~*bt$M<UTi@Y+*js#Ewo}O1WMslzh -zj^STgg%;&$mk;t4iYc!b#2LXQ5f~VNxs2DQg@t_it2n`E5|HJCdVZ@oLyti3|Kmdd -zRj7<@A({l_u}!Q>!p<n?y)e}n+8{)^g@_G{vf83O3uElCuZqLeTGY=`8sJNV+F5$G -zSsj01P}8M>9(-6#7}`g@xK~dmP3s5kinMjte1NeKzgjMxQT*j1Jr97^&`ZoMwOraO -zi!hoS)%qDwvxQ$j#@F4~3cOa}|AzvoVXtkk*iq;69{!wJ&F<R#tn|p@wIz|hf1v>K -zp*LtDMV3|6?Oc+Vhpz*BYJdNo@)t|~JD$(w=_n7|11mSzRp4i9k=XxU#m?H@=x;(l -zdGGF>+`ovvR8dt{iT?NK&#eU@`hVc<<x2mr+}|qtoMB0-EzHlrXTxAckz4!q%lq{! -zs%m%OnE5y+x^hPi&aW?4`jy<@&;1?S_kc|_{@Gf<=9;1cJV)aZMp?9!R!|;AQaSCR -zYT8b_DIU)?*iuLN*q`p<{XD%6!#nrjo!jw_3cMqeKB65|Cf-kM0~~|q)V6L*(mb(A -z7m$v>Z}#VxFaLKY7E{j>{j=fa%YS_L^5s9TW3Bv8L{Dm*@Bio;(ZauBdxLXZ^i})< -z?=aEBUgx&*Z-_d+!UXY;JIiXz#C7<$o%$_Xi2kRAC~z(Q%FKV^NB*UXZrI2B>BjFd -h=Y>|w|C6Zk68;X)R-AjChtJK+<qqA3JjSNqzW{|XuQ>n! - --- -2.39.5 - diff --git a/config/u-boot/default/patches/0009-scripts-dtc-pylibfdt-libfdt.i_shipped-Use-SWIG_Appen.patch b/config/u-boot/default/patches/0009-scripts-dtc-pylibfdt-libfdt.i_shipped-Use-SWIG_Appen.patch deleted file mode 100644 index 905b311c..00000000 --- a/config/u-boot/default/patches/0009-scripts-dtc-pylibfdt-libfdt.i_shipped-Use-SWIG_Appen.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 3c61a3257ad5799202cac64020d3b4af21b72de3 Mon Sep 17 00:00:00 2001 -From: Markus Volk <f_l_k@t-online.de> -Date: Wed, 30 Oct 2024 06:07:16 +0100 -Subject: [PATCH 1/1] scripts/dtc/pylibfdt/libfdt.i_shipped: Use - SWIG_AppendOutput -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Swig has changed language specific AppendOutput functions. The helper -macro SWIG_AppendOutput remains unchanged. Use that instead -of SWIG_Python_AppendOutput, which would require an extra parameter -since swig 4.3.0. - -/home/flk/poky/build-test/tmp/work/qemux86_64-poky-linux/u-boot/2024.10/git/arch/x86/cpu/u-boot-64.lds -| scripts/dtc/pylibfdt/libfdt_wrap.c: In function ‘_wrap_fdt_next_node’: -| scripts/dtc/pylibfdt/libfdt_wrap.c:5581:17: error: too few arguments to function ‘SWIG_Python_AppendOutput’ -| 5581 | resultobj = SWIG_Python_AppendOutput(resultobj, val); -| | ^~~~~~~~~~~~~~~~~~~~~~~~ - -Signed-off-by: Markus Volk <f_l_k@t-online.de> -Reported-by: Rudi Heitbaum <rudi@heitbaum.com> -Link: https://github.com/dgibson/dtc/pull/154 ---- - scripts/dtc/pylibfdt/libfdt.i_shipped | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/scripts/dtc/pylibfdt/libfdt.i_shipped b/scripts/dtc/pylibfdt/libfdt.i_shipped -index 56cc5d48f4..e4659489a9 100644 ---- a/scripts/dtc/pylibfdt/libfdt.i_shipped -+++ b/scripts/dtc/pylibfdt/libfdt.i_shipped -@@ -1037,7 +1037,7 @@ typedef uint32_t fdt32_t; - fdt_string(fdt1, fdt32_to_cpu($1->nameoff))); - buff = PyByteArray_FromStringAndSize( - (const char *)($1 + 1), fdt32_to_cpu($1->len)); -- resultobj = SWIG_Python_AppendOutput(resultobj, buff); -+ resultobj = SWIG_AppendOutput(resultobj, buff); - } - } - -@@ -1076,7 +1076,7 @@ typedef uint32_t fdt32_t; - - %typemap(argout) int *depth { - PyObject *val = Py_BuildValue("i", *arg$argnum); -- resultobj = SWIG_Python_AppendOutput(resultobj, val); -+ resultobj = SWIG_AppendOutput(resultobj, val); - } - - %apply int *depth { int *depth }; -@@ -1092,7 +1092,7 @@ typedef uint32_t fdt32_t; - if (PyTuple_GET_SIZE(resultobj) == 0) - resultobj = val; - else -- resultobj = SWIG_Python_AppendOutput(resultobj, val); -+ resultobj = SWIG_AppendOutput(resultobj, val); - } - } - --- -2.39.5 - diff --git a/config/u-boot/default/target.cfg b/config/u-boot/default/target.cfg index c0fb6209..f3c856d4 100644 --- a/config/u-boot/default/target.cfg +++ b/config/u-boot/default/target.cfg @@ -1,4 +1,4 @@ # SPDX-License-Identifier: GPL-3.0-or-later tree="default" -rev="f919c3a889f0ec7d63a48b5d0ed064386b0980bd" # v2024.10 +rev="34820924edbc4ec7803eb89d9852f4b870fa760a" # v2025.04 diff --git a/config/u-boot/gru_bob/config/default b/config/u-boot/gru_bob/config/default index bdd3ee98..f6894b52 100644 --- a/config/u-boot/gru_bob/config/default +++ b/config/u-boot/gru_bob/config/default @@ -1,15 +1,17 @@ # # Automatically generated file; DO NOT EDIT. -# U-Boot 2024.10 Configuration +# U-Boot 2025.04 Configuration # # -# Compiler: gcc (Debian 12.2.0-14) 12.2.0 +# Compiler: gcc (Debian 14.2.0-19) 14.2.0 # CONFIG_CREATE_ARCH_SYMLINK=y +CONFIG_HAVE_SETJMP=y CONFIG_SUPPORT_LITTLE_ENDIAN=y CONFIG_SYS_CACHE_SHIFT_6=y CONFIG_64BIT=y +CONFIG_SPL_64BIT=y CONFIG_SYS_CACHELINE_SIZE=64 CONFIG_LINKER_LIST_ALIGN=8 # CONFIG_ARC is not set @@ -39,10 +41,11 @@ CONFIG_SKIP_LOWLEVEL_INIT=y # CONFIG_TPL_SKIP_LOWLEVEL_INIT is not set # CONFIG_SKIP_LOWLEVEL_INIT_ONLY is not set # CONFIG_SPL_SKIP_LOWLEVEL_INIT_ONLY is not set +# CONFIG_TPL_SKIP_LOWLEVEL_INIT_ONLY is not set # CONFIG_SYS_ICACHE_OFF is not set # CONFIG_SPL_SYS_ICACHE_OFF is not set # CONFIG_SYS_DCACHE_OFF is not set -CONFIG_SPL_SYS_DCACHE_OFF=y +# CONFIG_SPL_SYS_DCACHE_OFF is not set # # ARM architecture @@ -51,9 +54,9 @@ CONFIG_ARM64=y CONFIG_ARM64_CRC32=y CONFIG_COUNTER_FREQUENCY=24000000 CONFIG_POSITION_INDEPENDENT=y -CONFIG_INIT_SP_RELATIVE=y -CONFIG_SYS_INIT_SP_BSS_OFFSET=524288 +# CONFIG_INIT_SP_RELATIVE is not set CONFIG_LNX_KRNL_IMG_TEXT_OFFSET_BASE=0x18000000 +# CONFIG_DRIVER_GICV2 is not set # CONFIG_GIC_V3_ITS is not set # CONFIG_GICV3_SUPPORT_GIC600 is not set CONFIG_STATIC_RELA=y @@ -75,8 +78,10 @@ CONFIG_ARM_SMCCC=y CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK=y # CONFIG_USE_ARCH_MEMCPY is not set # CONFIG_SPL_USE_ARCH_MEMCPY is not set +# CONFIG_TPL_USE_ARCH_MEMCPY is not set # CONFIG_USE_ARCH_MEMSET is not set # CONFIG_SPL_USE_ARCH_MEMSET is not set +# CONFIG_TPL_USE_ARCH_MEMSET is not set CONFIG_ARM64_SUPPORT_AARCH32=y # CONFIG_ARCH_AT91 is not set # CONFIG_ARCH_DAVINCI is not set @@ -100,6 +105,7 @@ CONFIG_ARM64_SUPPORT_AARCH32=y # CONFIG_ARCH_OMAP2PLUS is not set # CONFIG_ARCH_MESON is not set # CONFIG_ARCH_MEDIATEK is not set +# CONFIG_ARCH_MMP is not set # CONFIG_ARCH_LPC32XX is not set # CONFIG_ARCH_IMX8 is not set # CONFIG_ARCH_IMX8M is not set @@ -183,23 +189,25 @@ CONFIG_ARCH_ROCKCHIP=y # CONFIG_TARGET_PRESIDIO_ASIC is not set # CONFIG_TARGET_XENGUEST_ARM64 is not set # CONFIG_ARCH_GXP is not set -# CONFIG_STATIC_MACH_TYPE is not set CONFIG_TEXT_BASE=0x18000000 CONFIG_SYS_MALLOC_LEN=0x2000000 -CONFIG_SYS_MALLOC_F_LEN=0x4000 +CONFIG_SYS_MALLOC_F_LEN=0x10000 +CONFIG_BLOBLIST_SIZE_RELOC=0x1000 CONFIG_SPL_GPIO=y CONFIG_SPL_LIBCOMMON_SUPPORT=y CONFIG_SPL_LIBGENERIC_SUPPORT=y CONFIG_NR_DRAM_BANKS=1 CONFIG_SPL_LDSCRIPT="arch/arm/cpu/armv8/u-boot-spl.lds" CONFIG_ENV_SOURCE_FILE="" +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x3f00000 CONFIG_SF_DEFAULT_SPEED=20000000 CONFIG_SF_DEFAULT_MODE=0x0 CONFIG_ENV_SIZE=0x1f000 CONFIG_DM_GPIO=y CONFIG_SPL_DM_SPI=y CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3399-gru-bob" -CONFIG_SPL_TEXT_BASE=0xff8c2000 +CONFIG_DDR_SI_TEST=y CONFIG_OF_LIBFDT_OVERLAY=y CONFIG_MULTI_DTB_FIT_UNCOMPRESS_SZ=0x8000 CONFIG_DM_RESET=y @@ -221,16 +229,20 @@ CONFIG_ROCKCHIP_RK3399=y # CONFIG_ROCKCHIP_RV1126 is not set # CONFIG_ROCKCHIP_USB_UART is not set # CONFIG_SPL_ROCKCHIP_BACK_TO_BROM is not set +CONFIG_TPL_ROCKCHIP_BACK_TO_BROM=y CONFIG_ROCKCHIP_COMMON_BOARD=y CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y +CONFIG_TPL_ROCKCHIP_COMMON_BOARD=y # CONFIG_ROCKCHIP_EXTERNAL_TPL is not set CONFIG_ROCKCHIP_BOOT_MODE_REG=0 # CONFIG_ROCKCHIP_RK8XX_DISABLE_BOOT_ON_POWERON is not set CONFIG_ROCKCHIP_STIMER=y CONFIG_ROCKCHIP_STIMER_BASE=0xff8680a0 -CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x4000 +CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x0 +CONFIG_ROCKCHIP_BROM_HELPER=y # CONFIG_SPL_ROCKCHIP_EARLYRETURN_TO_BROM is not set CONFIG_ROCKCHIP_DISABLE_FORCE_JTAG=y +# CONFIG_TPL_ROCKCHIP_EARLYRETURN_TO_BROM is not set # CONFIG_SPL_MMC is not set CONFIG_ROCKCHIP_SPI_IMAGE=y CONFIG_ROCKCHIP_COMMON_STACK_ADDR=y @@ -238,8 +250,12 @@ CONFIG_SPL_SERIAL=y CONFIG_TPL_LDSCRIPT="arch/arm/mach-rockchip/u-boot-tpl-v8.lds" CONFIG_TPL_TEXT_BASE=0xff8c2000 CONFIG_TPL_STACK=0xff8effff +CONFIG_TPL_SYS_MALLOC_F_LEN=0x4000 +CONFIG_TPL_LIBCOMMON_SUPPORT=y +CONFIG_TPL_LIBGENERIC_SUPPORT=y +CONFIG_TPL_SERIAL=y # CONFIG_SPL_DRIVERS_MISC is not set -CONFIG_SPL_STACK_R_ADDR=0x04000000 +CONFIG_SPL_STACK_R_ADDR=0x3e00000 CONFIG_TARGET_CHROMEBOOK_BOB=y # CONFIG_TARGET_CHROMEBOOK_KEVIN is not set # CONFIG_TARGET_EVB_RK3399 is not set @@ -250,14 +266,20 @@ CONFIG_TARGET_CHROMEBOOK_BOB=y # CONFIG_TARGET_ROCKPI4_RK3399 is not set # CONFIG_TARGET_ROCKPRO64_RK3399 is not set # CONFIG_TARGET_ROC_PC_RK3399 is not set -CONFIG_SPL_STACK=0xff8effff -CONFIG_SPL_SYS_MALLOC_F_LEN=0x4000 +CONFIG_TPL_SYS_MALLOC_F=y +CONFIG_SPL_SYS_MALLOC_F_LEN=0x8000 +CONFIG_SPL_TEXT_BASE=0x0 CONFIG_SPL_HAS_BSS_LINKER_SECTION=y -CONFIG_SPL_BSS_START_ADDR=0xff8e0000 -CONFIG_SPL_BSS_MAX_SIZE=0x10000 +CONFIG_SPL_BSS_START_ADDR=0x3f80000 +CONFIG_SPL_BSS_MAX_SIZE=0x8000 CONFIG_SPL_STACK_R=y -CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x4000 +CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x200000 +CONFIG_SYS_BOOTM_LEN=0x4000000 +CONFIG_SYS_LOAD_ADDR=0x800800 CONFIG_WATCHDOG_TIMEOUT_MSECS=60000 +CONFIG_SPL_OF_LIBFDT_ASSUME_MASK=0xff +CONFIG_SF_DEFAULT_BUS=1 +CONFIG_SF_DEFAULT_CS=0 CONFIG_SPL_SYS_MALLOC_F=y CONFIG_ERR_PTR_OFFSET=0x0 CONFIG_SPL_SIZE_LIMIT=0x0 @@ -293,24 +315,18 @@ CONFIG_PSCI_RESET=y CONFIG_ARMV8_CRYPTO=y CONFIG_ARMV8_CE_SHA1=y CONFIG_ARMV8_CE_SHA256=y -# CONFIG_CMD_DEKBLOB is not set -# CONFIG_IMX_CAAM_DEK_ENCAP is not set -# CONFIG_IMX_OPTEE_DEK_ENCAP is not set -# CONFIG_IMX_SECO_DEK_ENCAP is not set -# CONFIG_IMX_ELE_DEK_ENCAP is not set -# CONFIG_CMD_HDMIDETECT is not set -CONFIG_IMX_DCD_ADDR=0x00910000 CONFIG_SYS_MEM_TOP_HIDE=0x0 -CONFIG_SYS_LOAD_ADDR=0x800800 # # ARM debug # -CONFIG_SPL_PAYLOAD="u-boot.bin" +CONFIG_TPL_MAX_SIZE=0x2e000 +CONFIG_SPL_PAYLOAD="tpl/u-boot-with-tpl.bin" CONFIG_BUILD_TARGET="" # CONFIG_PCI is not set CONFIG_FWU_NUM_BANKS=2 CONFIG_FWU_NUM_IMAGES_PER_BANK=2 +CONFIG_TPL_SIZE_LIMIT=0x0 CONFIG_DEBUG_UART=y # CONFIG_AHCI is not set # CONFIG_OF_BOARD_FIXUP is not set @@ -327,7 +343,7 @@ CONFIG_SYS_LITTLE_ENDIAN=y CONFIG_LOCALVERSION="" CONFIG_LOCALVERSION_AUTO=y CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=120200 +CONFIG_GCC_VERSION=140200 CONFIG_CLANG_VERSION=0 CONFIG_CC_OPTIMIZE_FOR_SIZE=y # CONFIG_CC_OPTIMIZE_FOR_SPEED is not set @@ -336,6 +352,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y # CONFIG_SPL_OPTIMIZE_INLINING is not set CONFIG_ARCH_SUPPORTS_LTO=y # CONFIG_LTO is not set +# CONFIG_TPL_OPTIMIZE_INLINING is not set CONFIG_CC_HAS_ASM_INLINE=y # CONFIG_XEN is not set CONFIG_ENV_VARS_UBOOT_CONFIG=y @@ -357,8 +374,6 @@ CONFIG_REMAKE_ELF=y # CONFIG_SYS_CUSTOM_LDSCRIPT is not set CONFIG_PLATFORM_ELFENTRY="_start" CONFIG_STACK_SIZE=0x1000000 -CONFIG_SYS_SRAM_BASE=0x0 -CONFIG_SYS_SRAM_SIZE=0x0 # CONFIG_MP is not set CONFIG_HAVE_TEXT_BASE=y # CONFIG_HAVE_SYS_UBOOT_START is not set @@ -371,6 +386,63 @@ CONFIG_SYS_UBOOT_START=0x18000000 # # +# UEFI Support +# +CONFIG_EFI_LOADER=y +CONFIG_EFI_BINARY_EXEC=y +# CONFIG_EFI_SECURE_BOOT is not set + +# +# UEFI services +# +CONFIG_EFI_HAVE_RUNTIME_RESET=y + +# +# UEFI Variables +# +# CONFIG_EFI_VARIABLE_FILE_STORE is not set +CONFIG_EFI_VARIABLE_NO_STORE=y +# CONFIG_EFI_VARIABLES_PRESEED is not set +CONFIG_EFI_VAR_BUF_SIZE=131072 +CONFIG_EFI_PLATFORM_LANG_CODES="en-US" + +# +# Capsule support +# +# CONFIG_EFI_RUNTIME_UPDATE_CAPSULE is not set +# CONFIG_EFI_CAPSULE_ON_DISK is not set +CONFIG_EFI_CAPSULE_MAX=15 + +# +# UEFI protocol support +# +CONFIG_EFI_DEVICE_PATH_TO_TEXT=y +CONFIG_EFI_DEVICE_PATH_UTIL=y +CONFIG_EFI_DT_FIXUP=y +CONFIG_EFI_LOADER_HII=y +CONFIG_EFI_UNICODE_COLLATION_PROTOCOL2=y +CONFIG_EFI_UNICODE_CAPITALIZATION=y +CONFIG_EFI_RNG_PROTOCOL=y +CONFIG_EFI_LOAD_FILE2_INITRD=y +# CONFIG_EFI_IP4_CONFIG2_PROTOCOL is not set + +# +# Misc options +# +# CONFIG_EFI_LOADER_BOUNCE_BUFFER is not set +CONFIG_EFI_ECPT=y +CONFIG_EFI_EBBR_2_1_CONFORMANCE=y +# CONFIG_EFI_SCROLL_ON_CLEAR_SCREEN is not set + +# +# EFI bootmanager +# +CONFIG_EFI_BOOTMGR=y +# CONFIG_EFI_HTTP_BOOT is not set +CONFIG_BOOTEFI_HELLO_COMPILE=y +CONFIG_BOOTEFI_TESTAPP_COMPILE=y + +# # Boot images # # CONFIG_ANDROID_BOOT_IMAGE is not set @@ -378,22 +450,26 @@ CONFIG_SYS_UBOOT_START=0x18000000 CONFIG_FIT=y CONFIG_FIT_EXTERNAL_OFFSET=0x0 CONFIG_FIT_FULL_CHECK=y -# CONFIG_FIT_SIGNATURE is not set +CONFIG_FIT_SIGNATURE=y +CONFIG_FIT_SIGNATURE_MAX_SIZE=0x10000000 +# CONFIG_FIT_RSASSA_PSS is not set # CONFIG_FIT_CIPHER is not set # CONFIG_FIT_VERBOSE is not set # CONFIG_FIT_BEST_MATCH is not set CONFIG_FIT_PRINT=y CONFIG_SPL_FIT=y +# CONFIG_TPL_FIT is not set # CONFIG_SPL_FIT_PRINT is not set -# CONFIG_SPL_FIT_FULL_CHECK is not set -# CONFIG_SPL_FIT_SIGNATURE is not set +CONFIG_SPL_FIT_FULL_CHECK=y +CONFIG_SPL_FIT_SIGNATURE=y +CONFIG_SPL_FIT_SIGNATURE_MAX_SIZE=0x10000000 +# CONFIG_SPL_FIT_RSASSA_PSS is not set CONFIG_SPL_LOAD_FIT=y CONFIG_SPL_LOAD_FIT_ADDRESS=0x0 # CONFIG_SPL_LOAD_FIT_APPLY_OVERLAY is not set # CONFIG_SPL_LOAD_FIT_FULL is not set +# CONFIG_TPL_LOAD_FIT is not set # CONFIG_SPL_FIT_IMAGE_POST_PROCESS is not set -CONFIG_SPL_FIT_SOURCE="" -# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_PXE_UTILS=y CONFIG_BOOT_DEFAULTS_FEATURES=y CONFIG_BOOT_DEFAULTS_CMDS=y @@ -403,6 +479,7 @@ CONFIG_BOOTSTD=y CONFIG_BOOTSTD_FULL=y CONFIG_BOOTSTD_DEFAULTS=y CONFIG_BOOTSTD_BOOTCOMMAND=y +CONFIG_BOOTSTD_MENU=y CONFIG_BOOTMETH_GLOBAL=y # CONFIG_BOOTMETH_ANDROID is not set # CONFIG_BOOTMETH_CROS is not set @@ -413,15 +490,17 @@ CONFIG_BOOTMETH_EFI_BOOTMGR=y CONFIG_BOOTMETH_VBE=y CONFIG_BOOTMETH_DISTRO=y # CONFIG_SPL_BOOTMETH_VBE is not set +CONFIG_TPL_BOOTMETH_VBE=y CONFIG_BOOTMETH_VBE_REQUEST=y # CONFIG_SPL_BOOTMETH_VBE_REQUEST is not set CONFIG_BOOTMETH_VBE_SIMPLE=y +# CONFIG_BOOTMETH_VBE_ABREC is not set CONFIG_BOOTMETH_VBE_SIMPLE_OS=y # CONFIG_SPL_BOOTMETH_VBE_SIMPLE is not set CONFIG_EXPO=y CONFIG_BOOTMETH_SCRIPT=y +# CONFIG_UPL is not set CONFIG_LEGACY_IMAGE_FORMAT=y -CONFIG_SYS_BOOTM_LEN=0x4000000 CONFIG_SUPPORT_RAW_INITRD=y # CONFIG_CHROMEOS is not set # CONFIG_CHROMEOS_VBOOT is not set @@ -498,6 +577,7 @@ CONFIG_SYS_PBSIZE=1044 # CONFIG_DISABLE_CONSOLE is not set CONFIG_LOGLEVEL=4 CONFIG_SPL_LOGLEVEL=4 +CONFIG_TPL_LOGLEVEL=4 # CONFIG_SILENT_CONSOLE is not set # CONFIG_SPL_SILENT_CONSOLE is not set # CONFIG_TPL_SILENT_CONSOLE is not set @@ -526,6 +606,7 @@ CONFIG_LOG_CONSOLE=y CONFIG_LOGF_FUNC_PAD=20 # CONFIG_LOG_SYSLOG is not set # CONFIG_SPL_LOG is not set +# CONFIG_TPL_LOG is not set # CONFIG_LOG_ERROR_RETURN is not set # @@ -562,6 +643,7 @@ CONFIG_MISC_INIT_R=y # Security support # CONFIG_HASH=y +# CONFIG_HASH_CRC8 is not set CONFIG_SPL_HASH=y # CONFIG_STACKPROTECTOR is not set # CONFIG_BOARD_RNG_SEED is not set @@ -577,11 +659,11 @@ CONFIG_SPL_HASH=y # CONFIG_BLOBLIST=y CONFIG_SPL_BLOBLIST=y +# CONFIG_TPL_BLOBLIST is not set CONFIG_BLOBLIST_FIXED=y # CONFIG_BLOBLIST_ALLOC is not set CONFIG_BLOBLIST_ADDR=0x100000 CONFIG_BLOBLIST_SIZE=0x1000 -CONFIG_BLOBLIST_SIZE_RELOC=0x1000 CONFIG_SPL_BLOBLIST_FIXED=y # CONFIG_SPL_BLOBLIST_ALLOC is not set CONFIG_SUPPORT_SPL=y @@ -592,7 +674,7 @@ CONFIG_SUPPORT_TPL=y # CONFIG_SPL_FRAMEWORK=y # CONFIG_SPL_FRAMEWORK_BOARD_INIT_F is not set -CONFIG_SPL_MAX_SIZE=0x1e000 +CONFIG_SPL_MAX_SIZE=0x40000 CONFIG_SPL_PAD_TO=0x7f8000 # CONFIG_SPL_NO_BSS_LIMIT is not set CONFIG_SPL_BSS_LIMIT=y @@ -606,24 +688,27 @@ CONFIG_HANDOFF=y CONFIG_SPL_HANDOFF=y # CONFIG_SPL_SOC_INIT is not set CONFIG_SPL_BOARD_INIT=y +CONFIG_SPL_LOAD_BLOCK=y # CONFIG_SPL_BOOTROM_SUPPORT is not set # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set # CONFIG_SPL_LEGACY_IMAGE_FORMAT is not set # CONFIG_SPL_LOAD_IMX_CONTAINER is not set CONFIG_SPL_SYS_MALLOC_SIMPLE=y -# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set +CONFIG_SPL_SHARES_INIT_SP_ADDR=y CONFIG_SPL_SEPARATE_BSS=y # CONFIG_SPL_SYS_MALLOC is not set CONFIG_SPL_BANNER_PRINT=y # CONFIG_SPL_DISPLAY_PRINT is not set +CONFIG_SPL_SYS_MMCSD_RAW_MODE=y CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y +# CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION is not set +# CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE is not set CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x4000 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET=0x0 -# CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION is not set # CONFIG_SPL_FIT_IMAGE_TINY is not set # CONFIG_SPL_CACHE is not set # CONFIG_SPL_CPU is not set -# CONFIG_SPL_CRYPTO is not set +CONFIG_SPL_CRYPTO=y # CONFIG_SPL_DMA is not set # CONFIG_SPL_ENV_SUPPORT is not set # CONFIG_SPL_FS_EXT4 is not set @@ -640,6 +725,7 @@ CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET=0x0 # CONFIG_SPL_NAND_DRIVERS is not set # CONFIG_SPL_NAND_ECC is not set # CONFIG_SPL_NAND_SIMPLE is not set +# CONFIG_SPL_RELOC_LOADER is not set # CONFIG_SPL_UBI is not set CONFIG_SPL_DM_SPI_FLASH=y # CONFIG_SPL_NET is not set @@ -653,7 +739,7 @@ CONFIG_SPL_DM_SPI_FLASH=y # CONFIG_SPL_DM_RESET is not set # CONFIG_SPL_POWER is not set # CONFIG_SPL_POWER_DOMAIN is not set -# CONFIG_SPL_RAM_SUPPORT is not set +# CONFIG_SPL_RAM_DEVICE is not set # CONFIG_SPL_REMOTEPROC is not set # CONFIG_SPL_RTC is not set # CONFIG_SPL_SATA is not set @@ -661,7 +747,7 @@ CONFIG_SPL_DM_SPI_FLASH=y CONFIG_SPL_SPI_FLASH_TINY=y # CONFIG_SPL_SPI_FLASH_MTD is not set CONFIG_SPL_SPI_LOAD=y -CONFIG_SYS_SPI_U_BOOT_OFFS=0x40000 +CONFIG_SYS_SPI_U_BOOT_OFFS=0xE0000 # CONFIG_SPL_THERMAL is not set # CONFIG_SPL_WATCHDOG is not set # CONFIG_SPL_YMODEM_SUPPORT is not set @@ -670,8 +756,42 @@ CONFIG_SPL_ATF=y CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y # CONFIG_SPL_OPTEE_IMAGE is not set CONFIG_SPL_TARGET="" -# CONFIG_TPL is not set +CONFIG_TPL=y + +# +# TPL configuration options +# +CONFIG_TPL_BINMAN_SYMBOLS=y +CONFIG_TPL_BINMAN_UBOOT_SYMBOLS=y +CONFIG_TPL_FRAMEWORK=y +CONFIG_TPL_BANNER_PRINT=y +# CONFIG_TPL_BOARD_INIT is not set +CONFIG_TPL_SYS_MALLOC_SIMPLE=y +CONFIG_TPL_SEPARATE_BSS=y +CONFIG_TPL_NEEDS_SEPARATE_STACK=y +# CONFIG_TPL_POWER is not set +CONFIG_TPL_BOOTROM_SUPPORT=y +# CONFIG_TPL_CRC32 is not set +# CONFIG_TPL_DRIVERS_MISC is not set +# CONFIG_TPL_ENV_SUPPORT is not set +CONFIG_TPL_GPIO=y +# CONFIG_TPL_I2C is not set +# CONFIG_TPL_MPC8XXX_INIT_DDR is not set +# CONFIG_TPL_MMC is not set +# CONFIG_TPL_NAND_SUPPORT is not set +# CONFIG_TPL_PCI is not set +# CONFIG_TPL_PCH is not set +# CONFIG_TPL_RAM_SUPPORT is not set +# CONFIG_TPL_RELOC_LOADER is not set +# CONFIG_TPL_RTC is not set +# CONFIG_TPL_SPI_FLASH_SUPPORT is not set +# CONFIG_TPL_SPI is not set +# CONFIG_TPL_DM_SPI is not set +# CONFIG_TPL_DM_SPI_FLASH is not set +# CONFIG_TPL_YMODEM_SUPPORT is not set # CONFIG_VPL is not set +CONFIG_IMAGE_SIGN_INFO=y +CONFIG_SPL_IMAGE_SIGN_INFO=y CONFIG_CMDLINE=y CONFIG_HUSH_PARSER=y @@ -700,6 +820,7 @@ CONFIG_CMD_BDI=y # CONFIG_CMD_BDINFO_EXTRA is not set # CONFIG_CMD_CONFIG is not set CONFIG_CMD_CONSOLE=y +# CONFIG_CMD_UFETCH is not set # CONFIG_CMD_HISTORY is not set # CONFIG_CMD_LICENSE is not set # CONFIG_CMD_PMC is not set @@ -715,6 +836,7 @@ CONFIG_CMD_BOOTFLOW=y CONFIG_CMD_BOOTFLOW_FULL=y CONFIG_CMD_BOOTFLOW_BOOTDELAY=8 CONFIG_CMD_BOOTMETH=y +CONFIG_CMD_BOOTSTD=y CONFIG_BOOTM_EFI=y CONFIG_BOOTM_ELF=y CONFIG_CMD_BOOTZ=y @@ -725,17 +847,18 @@ CONFIG_BOOTM_NETBSD=y # CONFIG_BOOTM_OSE is not set CONFIG_BOOTM_PLAN9=y CONFIG_BOOTM_RTEMS=y +# CONFIG_CMD_UPL is not set CONFIG_CMD_VBE=y CONFIG_BOOTM_VXWORKS=y CONFIG_CMD_BOOTEFI=y CONFIG_CMD_BOOTEFI_BINARY=y CONFIG_CMD_BOOTEFI_BOOTMGR=y -CONFIG_CMD_BOOTEFI_HELLO_COMPILE=y CONFIG_CMD_BOOTEFI_HELLO=y CONFIG_CMD_BOOTEFI_SELFTEST=y CONFIG_CMD_BOOTMENU=y # CONFIG_CMD_ADTIMG is not set CONFIG_CMD_ELF=y +CONFIG_CMD_ELF_BOOTVX=y # CONFIG_CMD_ELF_FDT_SETUP is not set CONFIG_CMD_FDT=y CONFIG_CMD_GO=y @@ -826,10 +949,10 @@ CONFIG_CMD_MMC=y # CONFIG_CMD_BKOPS_ENABLE is not set # CONFIG_CMD_MMC_REG is not set # CONFIG_CMD_MMC_SWRITE is not set +CONFIG_MMC_SPEED_MODE_SET=y # CONFIG_CMD_CLONE is not set # CONFIG_CMD_MTD is not set # CONFIG_CMD_ONENAND is not set -# CONFIG_CMD_OSD is not set CONFIG_CMD_PART=y # CONFIG_CMD_PCI is not set CONFIG_CMD_PINMUX=y @@ -843,7 +966,6 @@ CONFIG_CMD_SPI=y CONFIG_DEFAULT_SPI_BUS=0 CONFIG_DEFAULT_SPI_MODE=0x0 CONFIG_CMD_USB=y -# CONFIG_CMD_USB_SDP is not set # CONFIG_CMD_RKMTD is not set # CONFIG_CMD_WRITE is not set @@ -856,13 +978,8 @@ CONFIG_CMD_ITEST=y CONFIG_CMD_SOURCE=y # CONFIG_CMD_SETEXPR is not set # CONFIG_CMD_XXD is not set - -# -# Android support commands -# CONFIG_CMD_NET=y CONFIG_CMD_BOOTP=y -CONFIG_CMD_DHCP=y # CONFIG_BOOTP_MAY_FAIL is not set CONFIG_BOOTP_BOOTPATH=y # CONFIG_BOOTP_VENDOREX is not set @@ -880,24 +997,25 @@ CONFIG_BOOTP_PXE=y CONFIG_BOOTP_PXE_CLIENTARCH=0x16 # CONFIG_BOOTP_PXE_DHCP_OPTION is not set CONFIG_BOOTP_VCI_STRING="U-Boot.armv8" -CONFIG_CMD_TFTPBOOT=y # CONFIG_CMD_TFTPPUT is not set # CONFIG_CMD_TFTPSRV is not set CONFIG_NET_TFTP_VARS=y # CONFIG_CMD_RARP is not set # CONFIG_CMD_NFS is not set # CONFIG_SYS_DISABLE_AUTOLOAD is not set -# CONFIG_CMD_WGET is not set -CONFIG_CMD_MII=y -CONFIG_CMD_MDIO=y -CONFIG_CMD_PING=y # CONFIG_CMD_CDP is not set # CONFIG_CMD_SNTP is not set -# CONFIG_CMD_DNS is not set # CONFIG_CMD_LINK_LOCAL is not set # CONFIG_CMD_ETHSW is not set -CONFIG_CMD_PXE=y # CONFIG_CMD_WOL is not set +CONFIG_CMD_DHCP=y +# CONFIG_CMD_DNS is not set +CONFIG_CMD_MII=y +CONFIG_CMD_MDIO=y +CONFIG_CMD_PING=y +CONFIG_CMD_TFTPBOOT=y +# CONFIG_CMD_WGET is not set +CONFIG_CMD_PXE=y # # Misc commands @@ -979,7 +1097,6 @@ CONFIG_CMD_CYCLIC=y # CONFIG_CMD_EVENT is not set CONFIG_CMD_LOG=y # CONFIG_CMD_UBI is not set -CONFIG_MMC_SPEED_MODE_SET=y # # Partition Types @@ -988,6 +1105,7 @@ CONFIG_PARTITIONS=y CONFIG_SPL_PARTITIONS=y # CONFIG_MAC_PARTITION is not set # CONFIG_SPL_MAC_PARTITION is not set +# CONFIG_TEGRA_PARTITION is not set CONFIG_DOS_PARTITION=y CONFIG_SPL_DOS_PARTITION=y CONFIG_ISO_PARTITION=y @@ -1013,9 +1131,11 @@ CONFIG_BINMAN=y CONFIG_OF_CONTROL=y CONFIG_OF_REAL=y CONFIG_SPL_OF_CONTROL=y +CONFIG_TPL_OF_CONTROL=y CONFIG_OF_LIVE=y CONFIG_OF_UPSTREAM=y # CONFIG_OF_UPSTREAM_BUILD_VENDOR is not set +# CONFIG_OF_UPSTREAM_INCLUDE_LOCAL_FALLBACK_DTBOS is not set CONFIG_OF_SEPARATE=y # CONFIG_OF_EMBED is not set # CONFIG_OF_INITIAL_DTB_READONLY is not set @@ -1023,19 +1143,23 @@ CONFIG_OF_SEPARATE=y # CONFIG_OF_OMIT_DTB is not set CONFIG_DEVICE_TREE_INCLUDES="" CONFIG_OF_LIST="rockchip/rk3399-gru-bob" +CONFIG_OF_OVERLAY_LIST="" # CONFIG_MULTI_DTB_FIT is not set # CONFIG_SPL_MULTI_DTB_FIT is not set CONFIG_SPL_OF_LIST="rockchip/rk3399-gru-bob" CONFIG_OF_TAG_MIGRATE=y -CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" +CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" # CONFIG_OF_DTB_PROPS_REMOVE is not set # CONFIG_SPL_OF_PLATDATA is not set CONFIG_SPL_OF_REAL=y +CONFIG_TPL_OF_REAL=y +# CONFIG_TPL_OF_PLATDATA is not set # # Environment # CONFIG_ENV_SUPPORT=y +CONFIG_ENV_CALLBACK_LIST_STATIC="" CONFIG_SAVEENV=y # CONFIG_ENV_OVERWRITE is not set # CONFIG_OVERWRITE_ETHADDR_ONCE is not set @@ -1064,17 +1188,20 @@ CONFIG_SYS_RELOC_GD_ENV_ADDR=y # CONFIG_USE_ETHPRIME is not set # CONFIG_USE_HOSTNAME is not set # CONFIG_VERSION_VARIABLE is not set + +# +# Networking +# +# CONFIG_NO_NET is not set CONFIG_NET=y +# CONFIG_NET_LWIP is not set CONFIG_ARP_TIMEOUT=5000 CONFIG_NET_RETRY_COUNT=5 # CONFIG_PROT_UDP is not set -CONFIG_BOOTDEV_ETH=y # CONFIG_BOOTP_SEND_HOSTNAME is not set -# CONFIG_NET_RANDOM_ETHADDR is not set # CONFIG_NETCONSOLE is not set # CONFIG_IP_DEFRAG is not set # CONFIG_SYS_FAULT_ECHO_LINK_DOWN is not set -CONFIG_TFTP_BLOCKSIZE=1468 # CONFIG_TFTP_PORT is not set CONFIG_TFTP_WINDOWSIZE=1 # CONFIG_TFTP_TSIZE is not set @@ -1091,6 +1218,10 @@ CONFIG_BOOTP_MAX_ROOT_PATH_LEN=64 # CONFIG_USE_SERVERIP is not set # CONFIG_PROT_TCP is not set # CONFIG_IPV6 is not set +CONFIG_BOOTDEV_ETH=y +# CONFIG_NET_RANDOM_ETHADDR is not set +# CONFIG_WGET is not set +CONFIG_TFTP_BLOCKSIZE=1468 CONFIG_SYS_RX_ETH_BUFFER=4 # @@ -1102,6 +1233,7 @@ CONFIG_SYS_RX_ETH_BUFFER=4 # CONFIG_DM=y CONFIG_SPL_DM=y +CONFIG_TPL_DM=y # CONFIG_DM_WARN is not set # CONFIG_SPL_DM_WARN is not set # CONFIG_DM_DEBUG is not set @@ -1113,18 +1245,24 @@ CONFIG_DM_EVENT=y CONFIG_DM_STDIO=y CONFIG_DM_SEQ_ALIAS=y CONFIG_SPL_DM_SEQ_ALIAS=y +# CONFIG_TPL_DM_SEQ_ALIAS is not set CONFIG_SPL_DM_INLINE_OFNODE=y +CONFIG_TPL_DM_INLINE_OFNODE=y # CONFIG_DM_DMA is not set CONFIG_REGMAP=y CONFIG_SPL_REGMAP=y +CONFIG_TPL_REGMAP=y CONFIG_SYSCON=y CONFIG_SPL_SYSCON=y +CONFIG_TPL_SYSCON=y # CONFIG_DEVRES is not set CONFIG_SIMPLE_BUS=y CONFIG_SPL_SIMPLE_BUS=y +# CONFIG_TPL_SIMPLE_BUS is not set # CONFIG_SIMPLE_BUS_CORRECT_RANGE is not set CONFIG_OF_TRANSLATE=y # CONFIG_SPL_OF_TRANSLATE is not set +# CONFIG_TPL_OF_TRANSLATE is not set # CONFIG_TRANSLATION_OFFSET is not set CONFIG_OFNODE_MULTI_TREE=y CONFIG_OFNODE_MULTI_TREE_MAX=4 @@ -1149,11 +1287,11 @@ CONFIG_SARADC_ROCKCHIP=y # CONFIG_BLK=y CONFIG_SPL_BLK=y +# CONFIG_TPL_BLK is not set CONFIG_BLOCK_CACHE=y # CONFIG_BLKMAP is not set # CONFIG_SPL_BLOCK_CACHE is not set # CONFIG_EFI_MEDIA is not set -# CONFIG_SPL_BLK_FS is not set # CONFIG_IDE is not set # CONFIG_LBA48 is not set # CONFIG_SYS_64BIT_LBA is not set @@ -1180,10 +1318,12 @@ CONFIG_BLOCK_CACHE=y # CONFIG_CLK=y CONFIG_SPL_CLK=y +CONFIG_TPL_CLK=y # CONFIG_SPL_CLK_CCF is not set # CONFIG_CLK_CCF is not set # CONFIG_CLK_GPIO is not set # CONFIG_SPL_CLK_GPIO is not set +# CONFIG_CLK_STUB is not set # CONFIG_CLK_CDCE9XX is not set # CONFIG_CLK_ICS8N3QV01 is not set # CONFIG_CLK_K210 is not set @@ -1193,6 +1333,7 @@ CONFIG_SPL_CLK=y # CONFIG_CLK_AT91 is not set # CONFIG_CLK_RCAR is not set # CONFIG_CLK_RCAR_CPG_LIB is not set +# CONFIG_CLK_SOPHGO_CV1800B is not set # CONFIG_CLK_SIFIVE is not set # CONFIG_CLK_TI_AM3_DPLL is not set # CONFIG_CLK_TI_CTRL is not set @@ -1262,6 +1403,7 @@ CONFIG_ARM_PSCI_FW=y # CONFIG_FWU_MDATA is not set CONFIG_GPIO=y CONFIG_SPL_DM_GPIO=y +CONFIG_TPL_DM_GPIO=y # CONFIG_GPIO_HOG is not set # CONFIG_SPL_GPIO_HOG is not set # CONFIG_DM_GPIO_LOOKUP_LABEL is not set @@ -1272,6 +1414,8 @@ CONFIG_SPL_DM_GPIO=y # CONFIG_AT91_GPIO is not set # CONFIG_ATMEL_PIO4 is not set # CONFIG_ASPEED_GPIO is not set +# CONFIG_ASPEED_SGPIO is not set +# CONFIG_ASPEED_G7_GPIO is not set # CONFIG_DA8XX_GPIO is not set # CONFIG_FXL6408_GPIO is not set # CONFIG_HIKEY_GPIO is not set @@ -1289,6 +1433,7 @@ CONFIG_SPL_DM_GPIO=y # CONFIG_MXC_GPIO is not set # CONFIG_MXS_GPIO is not set # CONFIG_NPCM_GPIO is not set +# CONFIG_NPCM_SGPIO is not set # CONFIG_CMD_PCA953X is not set # CONFIG_PCF8575_GPIO is not set CONFIG_ROCKCHIP_GPIO=y @@ -1318,6 +1463,7 @@ CONFIG_ROCKCHIP_GPIO=y CONFIG_I2C=y CONFIG_DM_I2C=y CONFIG_SPL_DM_I2C=y +# CONFIG_TPL_DM_I2C is not set CONFIG_I2C_CROS_EC_TUNNEL=y # CONFIG_I2C_CROS_EC_LDO is not set # CONFIG_I2C_SET_DEFAULT_BUS_NUM is not set @@ -1348,8 +1494,10 @@ CONFIG_I2C_MUX=y # CONFIG_I2C_MUX_GPIO is not set CONFIG_INPUT=y # CONFIG_SPL_INPUT is not set +# CONFIG_TPL_INPUT is not set CONFIG_DM_KEYBOARD=y # CONFIG_SPL_DM_KEYBOARD is not set +# CONFIG_TPL_DM_KEYBOARD is not set # CONFIG_APPLE_SPI_KEYB is not set # CONFIG_BUTTON_KEYBOARD is not set CONFIG_CROS_EC_KEYB=y @@ -1366,6 +1514,8 @@ CONFIG_CROS_EC_KEYB=y # LED Support # # CONFIG_LED is not set +# CONFIG_LED_BOOT is not set +# CONFIG_LED_ACTIVITY is not set # CONFIG_SPL_LED is not set # CONFIG_LED_STATUS is not set @@ -1386,6 +1536,7 @@ CONFIG_CROS_EC_KEYB=y # CONFIG_MISC=y CONFIG_SPL_MISC=y +CONFIG_TPL_MISC=y # CONFIG_NVMEM is not set # CONFIG_SPL_NVMEM is not set # CONFIG_ALTERA_SYSID is not set @@ -1400,9 +1551,11 @@ CONFIG_ROCKCHIP_IODOMAIN=y # CONFIG_VEXPRESS_CONFIG is not set CONFIG_CROS_EC=y # CONFIG_SPL_CROS_EC is not set +# CONFIG_TPL_CROS_EC is not set # CONFIG_CROS_EC_I2C is not set # CONFIG_CROS_EC_LPC is not set # CONFIG_SPL_CROS_EC_LPC is not set +# CONFIG_TPL_CROS_EC_LPC is not set CONFIG_CROS_EC_SPI=y # CONFIG_DS4510 is not set # CONFIG_FSL_SEC_MON is not set @@ -1440,6 +1593,7 @@ CONFIG_MMC_PWRSEQ=y # CONFIG_MMC_BROKEN_CD is not set CONFIG_DM_MMC=y CONFIG_SPL_DM_MMC=y +# CONFIG_TPL_DM_MMC is not set # CONFIG_MMC_SPI is not set # CONFIG_ARM_PL180_MMCI is not set CONFIG_MMC_QUIRKS=y @@ -1478,6 +1632,7 @@ CONFIG_MMC_SDHCI_ADMA_64BIT=y # CONFIG_MMC_SDHCI_NPCM is not set CONFIG_MMC_SDHCI_ROCKCHIP=y # CONFIG_MMC_SDHCI_S5P is not set +# CONFIG_MMC_SDHCI_SNPS is not set # CONFIG_MMC_SDHCI_STI is not set # CONFIG_MMC_SDHCI_XENON is not set # CONFIG_MMC_SDHCI_TANGIER is not set @@ -1498,7 +1653,6 @@ CONFIG_MTD=y # CONFIG_MTD_BLOCK is not set # CONFIG_SYS_MTDPARTS_RUNTIME is not set # CONFIG_FLASH_CFI_DRIVER is not set -# CONFIG_HBMC_AM654 is not set # CONFIG_SAMSUNG_ONENAND is not set # CONFIG_USE_SYS_MAX_FLASH_BANKS is not set # CONFIG_MTD_RAW_NAND is not set @@ -1508,8 +1662,6 @@ CONFIG_MTD=y # CONFIG_DM_SPI_FLASH=y CONFIG_SPI_FLASH=y -CONFIG_SF_DEFAULT_BUS=1 -CONFIG_SF_DEFAULT_CS=0 # CONFIG_BOOTDEV_SPI_FLASH is not set # CONFIG_SPI_FLASH_SFDP_SUPPORT is not set CONFIG_SPI_FLASH_SMART_HWCAPS=y @@ -1523,6 +1675,7 @@ CONFIG_SPI_FLASH_UNLOCK_ALL=y CONFIG_SPI_FLASH_GIGADEVICE=y # CONFIG_SPI_FLASH_ISSI is not set # CONFIG_SPI_FLASH_MACRONIX is not set +# CONFIG_SPI_FLASH_PUYA is not set # CONFIG_SPI_FLASH_SILICONKAISER is not set # CONFIG_SPI_FLASH_SPANSION is not set # CONFIG_SPI_FLASH_STMICRO is not set @@ -1691,6 +1844,7 @@ CONFIG_PINMUX=y # CONFIG_PINCONF is not set CONFIG_PINCONF_RECURSIVE=y CONFIG_SPL_PINCTRL=y +# CONFIG_TPL_PINCTRL is not set CONFIG_SPL_PINCTRL_FULL=y CONFIG_SPL_PINCTRL_GENERIC=y CONFIG_SPL_PINMUX=y @@ -1714,6 +1868,7 @@ CONFIG_POWER=y # CONFIG_POWER_LEGACY is not set # CONFIG_ACPI_PMC is not set # CONFIG_SPL_ACPI_PMC is not set +# CONFIG_TPL_ACPI_PMC is not set # # Power Domain Support @@ -1774,13 +1929,15 @@ CONFIG_DM_REGULATOR=y CONFIG_REGULATOR_PWM=y # CONFIG_SPL_REGULATOR_PWM is not set CONFIG_DM_REGULATOR_COMMON=y +CONFIG_SPL_DM_REGULATOR_COMMON=y CONFIG_DM_REGULATOR_FIXED=y -# CONFIG_SPL_DM_REGULATOR_FIXED is not set +CONFIG_SPL_DM_REGULATOR_FIXED=y CONFIG_DM_REGULATOR_GPIO=y # CONFIG_SPL_DM_REGULATOR_GPIO is not set CONFIG_REGULATOR_RK8XX=y # CONFIG_DM_REGULATOR_PBIAS is not set # CONFIG_DM_REGULATOR_TPS62360 is not set +# CONFIG_DM_REGULATOR_TPS6287X is not set # CONFIG_DM_REGULATOR_ANATOP is not set # CONFIG_DM_REGULATOR_SCMI is not set # CONFIG_TPS6586X_POWER is not set @@ -1801,6 +1958,7 @@ CONFIG_PWM_ROCKCHIP=y # CONFIG_U_QE is not set CONFIG_RAM=y CONFIG_SPL_RAM=y +CONFIG_TPL_RAM=y # CONFIG_STM32_SDRAM is not set # CONFIG_MPC83XX_SDRAM is not set # CONFIG_K3_DDRSS is not set @@ -1849,6 +2007,7 @@ CONFIG_RNG_ROCKCHIP=y # # CONFIG_DM_RTC is not set # CONFIG_SPL_DM_RTC is not set +# CONFIG_TPL_DM_RTC is not set # CONFIG_RTC_ENABLE_32KHZ_OUTPUT is not set # CONFIG_RTC_DS1337 is not set # CONFIG_RTC_DS1338 is not set @@ -1856,7 +2015,6 @@ CONFIG_RNG_ROCKCHIP=y # CONFIG_RTC_DS3231 is not set # CONFIG_RTC_PCF8563 is not set # CONFIG_RTC_PT7C4338 is not set -# CONFIG_RTC_PL031 is not set # CONFIG_RTC_S35392A is not set # CONFIG_RTC_MC13XXX is not set # CONFIG_RTC_MC146818 is not set @@ -1869,15 +2027,18 @@ CONFIG_REQUIRE_SERIAL_CONSOLE=y # CONFIG_SPECIFY_CONSOLE_INDEX is not set CONFIG_SERIAL_PRESENT=y CONFIG_SPL_SERIAL_PRESENT=y +CONFIG_TPL_SERIAL_PRESENT=y CONFIG_DM_SERIAL=y # CONFIG_SERIAL_RX_BUFFER is not set # CONFIG_SERIAL_PUTS is not set # CONFIG_SERIAL_SEARCH_ALL is not set # CONFIG_SERIAL_PROBE_ALL is not set CONFIG_SPL_DM_SERIAL=y +CONFIG_TPL_DM_SERIAL=y # CONFIG_VPL_DM_SERIAL is not set CONFIG_DEBUG_UART_NS16550=y CONFIG_SPL_DEBUG_UART_BASE=0xff1a0000 +CONFIG_TPL_DEBUG_UART_BASE=0xff1a0000 CONFIG_DEBUG_UART_SHIFT=2 # CONFIG_DEBUG_UART_ANNOUNCE is not set # CONFIG_DEBUG_UART_SKIP_INIT is not set @@ -1935,27 +2096,18 @@ CONFIG_SPI_MEM=y # CONFIG_ALTERA_SPI is not set # CONFIG_APPLE_SPI is not set # CONFIG_ATCSPI200_SPI is not set -# CONFIG_ATMEL_SPI is not set -# CONFIG_BCMSTB_SPI is not set # CONFIG_CORTINA_SFLASH is not set # CONFIG_CADENCE_QSPI is not set -# CONFIG_CF_SPI is not set # CONFIG_CV1800B_SPIF is not set # CONFIG_DESIGNWARE_SPI is not set -# CONFIG_EXYNOS_SPI is not set -# CONFIG_FSL_DSPI is not set # CONFIG_FSL_QSPI is not set # CONFIG_GXP_SPI is not set -# CONFIG_ICH_SPI is not set # CONFIG_IPROC_QSPI is not set -# CONFIG_KIRKWOOD_SPI is not set # CONFIG_MICROCHIP_COREQSPI is not set -# CONFIG_MPC8XXX_SPI is not set # CONFIG_MTK_SNOR is not set # CONFIG_MTK_SNFI_SPI is not set # CONFIG_MTK_SPIM is not set # CONFIG_MVEBU_A3700_SPI is not set -# CONFIG_MXS_SPI is not set # CONFIG_SPI_MXIC is not set # CONFIG_NPCM_FIU_SPI is not set # CONFIG_NPCM_PSPI is not set @@ -1969,17 +2121,11 @@ CONFIG_ROCKCHIP_SPI=y # CONFIG_SOFT_SPI is not set # CONFIG_SPI_SN_F_OSPI is not set # CONFIG_SPI_SUNXI is not set -# CONFIG_TEGRA114_SPI is not set -# CONFIG_TEGRA20_SFLASH is not set -# CONFIG_TEGRA20_SLINK is not set -# CONFIG_TEGRA210_QSPI is not set -# CONFIG_TI_QSPI is not set # CONFIG_XILINX_SPI is not set # CONFIG_ZYNQ_SPI is not set # CONFIG_ZYNQ_QSPI is not set # CONFIG_ZYNQMP_GQSPI is not set -# CONFIG_SH_QSPI is not set -# CONFIG_MXC_SPI is not set +# CONFIG_SPI_STACKED_PARALLEL is not set # # SPMI support @@ -1992,6 +2138,7 @@ CONFIG_ROCKCHIP_SPI=y # CONFIG_SYSRESET=y CONFIG_SPL_SYSRESET=y +CONFIG_TPL_SYSRESET=y CONFIG_SYSRESET_CMD_RESET=y CONFIG_SYSRESET_CMD_POWEROFF=y # CONFIG_SYSRESET_CV1800B is not set @@ -2027,6 +2174,7 @@ CONFIG_USB_HOST=y CONFIG_USB_XHCI_HCD=y # CONFIG_USB_XHCI_DWC3 is not set # CONFIG_USB_XHCI_DWC3_OF_SIMPLE is not set +# CONFIG_USB_XHCI_GENERIC is not set # CONFIG_USB_XHCI_FSL is not set # CONFIG_USB_XHCI_BRCM is not set CONFIG_USB_EHCI_HCD=y @@ -2055,6 +2203,7 @@ CONFIG_USB_DWC3_GENERIC=y # CONFIG_SPL_USB_DWC3_GENERIC is not set # CONFIG_USB_DWC3_AM62 is not set # CONFIG_USB_DWC3_LAYERSCAPE is not set +# CONFIG_USB_DWC3_STI is not set # # PHY Subsystem @@ -2079,6 +2228,7 @@ CONFIG_USB_DWC3_GENERIC=y # # CONFIG_TWL4030_USB is not set # CONFIG_ROCKCHIP_USB2_PHY is not set +# CONFIG_TYPEC_TCPM is not set # # ULPI drivers @@ -2159,6 +2309,7 @@ CONFIG_SIMPLE_PANEL=y # CONFIG_VIDEO_LCD_RENESAS_R61307 is not set # CONFIG_VIDEO_LCD_RENESAS_R69328 is not set # CONFIG_VIDEO_LCD_SAMSUNG_LTL106HL02 is not set +# CONFIG_VIDEO_LCD_SHARP_LQ101R1SX01 is not set # CONFIG_VIDEO_LCD_SSD2828 is not set # CONFIG_VIDEO_LCD_TDO_TL070WSH30 is not set # CONFIG_VIDEO_LCD_HITACHI_TX18D42VM is not set @@ -2248,7 +2399,6 @@ CONFIG_FS_FAT_MAX_CLUSTSIZE=65536 # CONFIG_UBIFS_SILENCE_MSG is not set # CONFIG_UBIFS_SILENCE_DEBUG_DUMP is not set # CONFIG_FS_CRAMFS is not set -# CONFIG_YAFFS2 is not set # CONFIG_FS_SQUASHFS is not set # CONFIG_FS_EROFS is not set @@ -2260,6 +2410,7 @@ CONFIG_FS_FAT_MAX_CLUSTSIZE=65536 # CONFIG_PHYSMEM is not set # CONFIG_BCH is not set # CONFIG_BINMAN_FDT is not set +CONFIG_BINMAN_DTB="" # CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED is not set CONFIG_CHARSET=y # CONFIG_DYNAMIC_CRC_TABLE is not set @@ -2270,12 +2421,16 @@ CONFIG_SPL_LIB_UUID=y # CONFIG_SPL_SEMIHOSTING is not set CONFIG_PRINTF=y CONFIG_SPL_PRINTF=y +CONFIG_TPL_PRINTF=y CONFIG_SPRINTF=y CONFIG_SPL_SPRINTF=y +CONFIG_TPL_SPRINTF=y CONFIG_STRTO=y CONFIG_SPL_STRTO=y +CONFIG_TPL_STRTO=y CONFIG_SYS_HZ=1000 CONFIG_SPL_USE_TINY_PRINTF=y +CONFIG_TPL_USE_TINY_PRINTF=y CONFIG_PANIC_HANG=y CONFIG_REGEX=y CONFIG_LIB_RAND=y @@ -2284,19 +2439,48 @@ CONFIG_SUPPORT_ACPI=y # CONFIG_ACPI is not set # CONFIG_SPL_ACPI is not set # CONFIG_SPL_TINY_MEMSET is not set +CONFIG_TPL_TINY_MEMSET=y # CONFIG_BITREVERSE is not set # CONFIG_TRACE is not set # CONFIG_CIRCBUF is not set CONFIG_CMD_DHRYSTONE=y # +# Alternative crypto libraries +# +CONFIG_LEGACY_HASHING_AND_CRYPTO=y +# CONFIG_MBEDTLS_LIB is not set +CONFIG_LEGACY_HASHING=y +CONFIG_SHA1_LEGACY=y +CONFIG_SHA256_LEGACY=y +CONFIG_MD5_LEGACY=y +CONFIG_LEGACY_CRYPTO=y +CONFIG_SPL_LEGACY_HASHING_AND_CRYPTO=y +# CONFIG_SPL_MBEDTLS_LIB is not set +CONFIG_SPL_LEGACY_HASHING=y +CONFIG_SPL_SHA1_LEGACY=y +CONFIG_SPL_SHA256_LEGACY=y +CONFIG_SPL_LEGACY_CRYPTO=y +CONFIG_TPL_LEGACY_HASHING_AND_CRYPTO=y +# CONFIG_TPL_MBEDTLS_LIB is not set +CONFIG_TPL_LEGACY_HASHING=y + +# # Security support # # CONFIG_AES is not set # CONFIG_ECDSA is not set -# CONFIG_RSA is not set +CONFIG_RSA=y +CONFIG_SPL_RSA=y +CONFIG_SPL_RSA_VERIFY=y +CONFIG_RSA_VERIFY=y +# CONFIG_RSA_VERIFY_WITH_PKEY is not set +# CONFIG_SPL_RSA_VERIFY_WITH_PKEY is not set +CONFIG_RSA_SOFTWARE_EXP=y +# CONFIG_ASYMMETRIC_KEY_TYPE is not set # CONFIG_TPM is not set # CONFIG_SPL_TPM is not set +# CONFIG_TPL_TPM is not set # # Android Verified Boot @@ -2320,7 +2504,9 @@ CONFIG_SPL_SHA256=y CONFIG_MD5=y # CONFIG_SPL_MD5 is not set CONFIG_CRC8=y -# CONFIG_SPL_CRC8 is not set +CONFIG_SPL_CRC8=y +# CONFIG_TPL_CRC8 is not set +CONFIG_CRC16=y # CONFIG_SPL_CRC16 is not set CONFIG_CRC32=y @@ -2337,10 +2523,13 @@ CONFIG_ZLIB=y # CONFIG_ZSTD is not set # CONFIG_SPL_BZIP2 is not set # CONFIG_SPL_LZ4 is not set +# CONFIG_TPL_LZ4 is not set # CONFIG_SPL_LZMA is not set +# CONFIG_TPL_LZMA is not set CONFIG_VPL_LZMA=y # CONFIG_SPL_LZO is not set # CONFIG_SPL_GZIP is not set +# CONFIG_TPL_GZIP is not set # CONFIG_SPL_ZSTD is not set CONFIG_ERRNO_STR=y # CONFIG_HEXDUMP is not set @@ -2349,49 +2538,26 @@ CONFIG_OF_LIBFDT=y CONFIG_OF_LIBFDT_ASSUME_MASK=0x0 CONFIG_SYS_FDT_PAD=0x3000 CONFIG_SPL_OF_LIBFDT=y -CONFIG_SPL_OF_LIBFDT_ASSUME_MASK=0xff +CONFIG_TPL_OF_LIBFDT=y +CONFIG_TPL_OF_LIBFDT_ASSUME_MASK=0xff # # System tables # +# CONFIG_BLOBLIST_TABLES is not set CONFIG_GENERATE_SMBIOS_TABLE=y +# CONFIG_GENERATE_SMBIOS_TABLE_VERBOSE is not set # CONFIG_LIB_RATIONAL is not set # CONFIG_SPL_LIB_RATIONAL is not set CONFIG_SMBIOS=y # CONFIG_SMBIOS_PARSER is not set -CONFIG_EFI_LOADER=y -CONFIG_EFI_BINARY_EXEC=y -CONFIG_EFI_BOOTMGR=y -# CONFIG_EFI_VARIABLE_FILE_STORE is not set -CONFIG_EFI_VARIABLE_NO_STORE=y -# CONFIG_EFI_VARIABLES_PRESEED is not set -CONFIG_EFI_VAR_BUF_SIZE=131072 -# CONFIG_EFI_SCROLL_ON_CLEAR_SCREEN is not set -# CONFIG_EFI_RUNTIME_UPDATE_CAPSULE is not set -# CONFIG_EFI_CAPSULE_ON_DISK is not set -CONFIG_EFI_CAPSULE_MAX=15 -CONFIG_EFI_DEVICE_PATH_TO_TEXT=y -CONFIG_EFI_DEVICE_PATH_UTIL=y -CONFIG_EFI_DT_FIXUP=y -CONFIG_EFI_LOADER_HII=y -CONFIG_EFI_UNICODE_COLLATION_PROTOCOL2=y -CONFIG_EFI_UNICODE_CAPITALIZATION=y -# CONFIG_EFI_LOADER_BOUNCE_BUFFER is not set -CONFIG_EFI_PLATFORM_LANG_CODES="en-US" -CONFIG_EFI_HAVE_RUNTIME_RESET=y -CONFIG_EFI_RNG_PROTOCOL=y -CONFIG_EFI_LOAD_FILE2_INITRD=y -CONFIG_EFI_ECPT=y -CONFIG_EFI_EBBR_2_1_CONFORMANCE=y -# CONFIG_EFI_HTTP_BOOT is not set # CONFIG_OPTEE_LIB is not set # CONFIG_OPTEE_IMAGE is not set # CONFIG_BOOTM_OPTEE is not set # CONFIG_TEST_FDTDEC is not set CONFIG_LIB_ELF=y CONFIG_LMB=y -CONFIG_LMB_USE_MAX_REGIONS=y -CONFIG_LMB_MAX_REGIONS=16 +# CONFIG_LMB_ARCH_MEM_MAP is not set # CONFIG_PHANDLE_CHECK_SEQ is not set # @@ -2405,6 +2571,7 @@ CONFIG_LMB_MAX_REGIONS=16 # Tools options # CONFIG_MKIMAGE_DTC_PATH="dtc" +CONFIG_TOOLS_CRC16=y CONFIG_TOOLS_CRC32=y CONFIG_TOOLS_LIBCRYPTO=y CONFIG_TOOLS_KWBIMAGE=y diff --git a/config/u-boot/gru_bob/target.cfg b/config/u-boot/gru_bob/target.cfg index e19603c2..0c90e338 100644 --- a/config/u-boot/gru_bob/target.cfg +++ b/config/u-boot/gru_bob/target.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later tree="default" -xtree="default" +xgcctree="default" xarch="aarch64-elf arm-eabi" diff --git a/config/u-boot/gru_kevin/config/default b/config/u-boot/gru_kevin/config/default index 2a15b9bf..582c51f9 100644 --- a/config/u-boot/gru_kevin/config/default +++ b/config/u-boot/gru_kevin/config/default @@ -1,15 +1,17 @@ # # Automatically generated file; DO NOT EDIT. -# U-Boot 2024.10 Configuration +# U-Boot 2025.04 Configuration # # -# Compiler: gcc (Debian 12.2.0-14) 12.2.0 +# Compiler: gcc (Debian 14.2.0-19) 14.2.0 # CONFIG_CREATE_ARCH_SYMLINK=y +CONFIG_HAVE_SETJMP=y CONFIG_SUPPORT_LITTLE_ENDIAN=y CONFIG_SYS_CACHE_SHIFT_6=y CONFIG_64BIT=y +CONFIG_SPL_64BIT=y CONFIG_SYS_CACHELINE_SIZE=64 CONFIG_LINKER_LIST_ALIGN=8 # CONFIG_ARC is not set @@ -39,10 +41,11 @@ CONFIG_SKIP_LOWLEVEL_INIT=y # CONFIG_TPL_SKIP_LOWLEVEL_INIT is not set # CONFIG_SKIP_LOWLEVEL_INIT_ONLY is not set # CONFIG_SPL_SKIP_LOWLEVEL_INIT_ONLY is not set +# CONFIG_TPL_SKIP_LOWLEVEL_INIT_ONLY is not set # CONFIG_SYS_ICACHE_OFF is not set # CONFIG_SPL_SYS_ICACHE_OFF is not set # CONFIG_SYS_DCACHE_OFF is not set -CONFIG_SPL_SYS_DCACHE_OFF=y +# CONFIG_SPL_SYS_DCACHE_OFF is not set # # ARM architecture @@ -51,9 +54,9 @@ CONFIG_ARM64=y CONFIG_ARM64_CRC32=y CONFIG_COUNTER_FREQUENCY=24000000 CONFIG_POSITION_INDEPENDENT=y -CONFIG_INIT_SP_RELATIVE=y -CONFIG_SYS_INIT_SP_BSS_OFFSET=524288 +# CONFIG_INIT_SP_RELATIVE is not set CONFIG_LNX_KRNL_IMG_TEXT_OFFSET_BASE=0x18000000 +# CONFIG_DRIVER_GICV2 is not set # CONFIG_GIC_V3_ITS is not set # CONFIG_GICV3_SUPPORT_GIC600 is not set CONFIG_STATIC_RELA=y @@ -75,8 +78,10 @@ CONFIG_ARM_SMCCC=y CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK=y # CONFIG_USE_ARCH_MEMCPY is not set # CONFIG_SPL_USE_ARCH_MEMCPY is not set +# CONFIG_TPL_USE_ARCH_MEMCPY is not set # CONFIG_USE_ARCH_MEMSET is not set # CONFIG_SPL_USE_ARCH_MEMSET is not set +# CONFIG_TPL_USE_ARCH_MEMSET is not set CONFIG_ARM64_SUPPORT_AARCH32=y # CONFIG_ARCH_AT91 is not set # CONFIG_ARCH_DAVINCI is not set @@ -100,6 +105,7 @@ CONFIG_ARM64_SUPPORT_AARCH32=y # CONFIG_ARCH_OMAP2PLUS is not set # CONFIG_ARCH_MESON is not set # CONFIG_ARCH_MEDIATEK is not set +# CONFIG_ARCH_MMP is not set # CONFIG_ARCH_LPC32XX is not set # CONFIG_ARCH_IMX8 is not set # CONFIG_ARCH_IMX8M is not set @@ -183,23 +189,25 @@ CONFIG_ARCH_ROCKCHIP=y # CONFIG_TARGET_PRESIDIO_ASIC is not set # CONFIG_TARGET_XENGUEST_ARM64 is not set # CONFIG_ARCH_GXP is not set -# CONFIG_STATIC_MACH_TYPE is not set CONFIG_TEXT_BASE=0x18000000 CONFIG_SYS_MALLOC_LEN=0x2000000 -CONFIG_SYS_MALLOC_F_LEN=0x4000 +CONFIG_SYS_MALLOC_F_LEN=0x10000 +CONFIG_BLOBLIST_SIZE_RELOC=0x1000 CONFIG_SPL_GPIO=y CONFIG_SPL_LIBCOMMON_SUPPORT=y CONFIG_SPL_LIBGENERIC_SUPPORT=y CONFIG_NR_DRAM_BANKS=1 CONFIG_SPL_LDSCRIPT="arch/arm/cpu/armv8/u-boot-spl.lds" CONFIG_ENV_SOURCE_FILE="" +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x3f00000 CONFIG_SF_DEFAULT_SPEED=20000000 CONFIG_SF_DEFAULT_MODE=0x0 CONFIG_ENV_SIZE=0x1f000 CONFIG_DM_GPIO=y CONFIG_SPL_DM_SPI=y CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3399-gru-kevin" -CONFIG_SPL_TEXT_BASE=0xff8c2000 +CONFIG_DDR_SI_TEST=y CONFIG_OF_LIBFDT_OVERLAY=y CONFIG_MULTI_DTB_FIT_UNCOMPRESS_SZ=0x8000 CONFIG_DM_RESET=y @@ -221,16 +229,20 @@ CONFIG_ROCKCHIP_RK3399=y # CONFIG_ROCKCHIP_RV1126 is not set # CONFIG_ROCKCHIP_USB_UART is not set # CONFIG_SPL_ROCKCHIP_BACK_TO_BROM is not set +CONFIG_TPL_ROCKCHIP_BACK_TO_BROM=y CONFIG_ROCKCHIP_COMMON_BOARD=y CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y +CONFIG_TPL_ROCKCHIP_COMMON_BOARD=y # CONFIG_ROCKCHIP_EXTERNAL_TPL is not set CONFIG_ROCKCHIP_BOOT_MODE_REG=0 # CONFIG_ROCKCHIP_RK8XX_DISABLE_BOOT_ON_POWERON is not set CONFIG_ROCKCHIP_STIMER=y CONFIG_ROCKCHIP_STIMER_BASE=0xff8680a0 -CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x4000 +CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x0 +CONFIG_ROCKCHIP_BROM_HELPER=y # CONFIG_SPL_ROCKCHIP_EARLYRETURN_TO_BROM is not set CONFIG_ROCKCHIP_DISABLE_FORCE_JTAG=y +# CONFIG_TPL_ROCKCHIP_EARLYRETURN_TO_BROM is not set # CONFIG_SPL_MMC is not set CONFIG_ROCKCHIP_SPI_IMAGE=y CONFIG_ROCKCHIP_COMMON_STACK_ADDR=y @@ -238,8 +250,12 @@ CONFIG_SPL_SERIAL=y CONFIG_TPL_LDSCRIPT="arch/arm/mach-rockchip/u-boot-tpl-v8.lds" CONFIG_TPL_TEXT_BASE=0xff8c2000 CONFIG_TPL_STACK=0xff8effff +CONFIG_TPL_SYS_MALLOC_F_LEN=0x4000 +CONFIG_TPL_LIBCOMMON_SUPPORT=y +CONFIG_TPL_LIBGENERIC_SUPPORT=y +CONFIG_TPL_SERIAL=y # CONFIG_SPL_DRIVERS_MISC is not set -CONFIG_SPL_STACK_R_ADDR=0x04000000 +CONFIG_SPL_STACK_R_ADDR=0x3e00000 # CONFIG_TARGET_CHROMEBOOK_BOB is not set CONFIG_TARGET_CHROMEBOOK_KEVIN=y # CONFIG_TARGET_EVB_RK3399 is not set @@ -250,14 +266,20 @@ CONFIG_TARGET_CHROMEBOOK_KEVIN=y # CONFIG_TARGET_ROCKPI4_RK3399 is not set # CONFIG_TARGET_ROCKPRO64_RK3399 is not set # CONFIG_TARGET_ROC_PC_RK3399 is not set -CONFIG_SPL_STACK=0xff8effff -CONFIG_SPL_SYS_MALLOC_F_LEN=0x4000 +CONFIG_TPL_SYS_MALLOC_F=y +CONFIG_SPL_SYS_MALLOC_F_LEN=0x8000 +CONFIG_SPL_TEXT_BASE=0x0 CONFIG_SPL_HAS_BSS_LINKER_SECTION=y -CONFIG_SPL_BSS_START_ADDR=0xff8e0000 -CONFIG_SPL_BSS_MAX_SIZE=0x10000 +CONFIG_SPL_BSS_START_ADDR=0x3f80000 +CONFIG_SPL_BSS_MAX_SIZE=0x8000 CONFIG_SPL_STACK_R=y -CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x4000 +CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x200000 +CONFIG_SYS_BOOTM_LEN=0x4000000 +CONFIG_SYS_LOAD_ADDR=0x800800 CONFIG_WATCHDOG_TIMEOUT_MSECS=60000 +CONFIG_SPL_OF_LIBFDT_ASSUME_MASK=0xff +CONFIG_SF_DEFAULT_BUS=1 +CONFIG_SF_DEFAULT_CS=0 CONFIG_SPL_SYS_MALLOC_F=y CONFIG_ERR_PTR_OFFSET=0x0 CONFIG_SPL_SIZE_LIMIT=0x0 @@ -293,24 +315,18 @@ CONFIG_PSCI_RESET=y CONFIG_ARMV8_CRYPTO=y CONFIG_ARMV8_CE_SHA1=y CONFIG_ARMV8_CE_SHA256=y -# CONFIG_CMD_DEKBLOB is not set -# CONFIG_IMX_CAAM_DEK_ENCAP is not set -# CONFIG_IMX_OPTEE_DEK_ENCAP is not set -# CONFIG_IMX_SECO_DEK_ENCAP is not set -# CONFIG_IMX_ELE_DEK_ENCAP is not set -# CONFIG_CMD_HDMIDETECT is not set -CONFIG_IMX_DCD_ADDR=0x00910000 CONFIG_SYS_MEM_TOP_HIDE=0x0 -CONFIG_SYS_LOAD_ADDR=0x800800 # # ARM debug # -CONFIG_SPL_PAYLOAD="u-boot.bin" +CONFIG_TPL_MAX_SIZE=0x2e000 +CONFIG_SPL_PAYLOAD="tpl/u-boot-with-tpl.bin" CONFIG_BUILD_TARGET="" # CONFIG_PCI is not set CONFIG_FWU_NUM_BANKS=2 CONFIG_FWU_NUM_IMAGES_PER_BANK=2 +CONFIG_TPL_SIZE_LIMIT=0x0 CONFIG_DEBUG_UART=y # CONFIG_AHCI is not set # CONFIG_OF_BOARD_FIXUP is not set @@ -327,7 +343,7 @@ CONFIG_SYS_LITTLE_ENDIAN=y CONFIG_LOCALVERSION="" CONFIG_LOCALVERSION_AUTO=y CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=120200 +CONFIG_GCC_VERSION=140200 CONFIG_CLANG_VERSION=0 CONFIG_CC_OPTIMIZE_FOR_SIZE=y # CONFIG_CC_OPTIMIZE_FOR_SPEED is not set @@ -336,6 +352,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y # CONFIG_SPL_OPTIMIZE_INLINING is not set CONFIG_ARCH_SUPPORTS_LTO=y # CONFIG_LTO is not set +# CONFIG_TPL_OPTIMIZE_INLINING is not set CONFIG_CC_HAS_ASM_INLINE=y # CONFIG_XEN is not set CONFIG_ENV_VARS_UBOOT_CONFIG=y @@ -357,8 +374,6 @@ CONFIG_REMAKE_ELF=y # CONFIG_SYS_CUSTOM_LDSCRIPT is not set CONFIG_PLATFORM_ELFENTRY="_start" CONFIG_STACK_SIZE=0x1000000 -CONFIG_SYS_SRAM_BASE=0x0 -CONFIG_SYS_SRAM_SIZE=0x0 # CONFIG_MP is not set CONFIG_HAVE_TEXT_BASE=y # CONFIG_HAVE_SYS_UBOOT_START is not set @@ -371,6 +386,63 @@ CONFIG_SYS_UBOOT_START=0x18000000 # # +# UEFI Support +# +CONFIG_EFI_LOADER=y +CONFIG_EFI_BINARY_EXEC=y +# CONFIG_EFI_SECURE_BOOT is not set + +# +# UEFI services +# +CONFIG_EFI_HAVE_RUNTIME_RESET=y + +# +# UEFI Variables +# +# CONFIG_EFI_VARIABLE_FILE_STORE is not set +CONFIG_EFI_VARIABLE_NO_STORE=y +# CONFIG_EFI_VARIABLES_PRESEED is not set +CONFIG_EFI_VAR_BUF_SIZE=131072 +CONFIG_EFI_PLATFORM_LANG_CODES="en-US" + +# +# Capsule support +# +# CONFIG_EFI_RUNTIME_UPDATE_CAPSULE is not set +# CONFIG_EFI_CAPSULE_ON_DISK is not set +CONFIG_EFI_CAPSULE_MAX=15 + +# +# UEFI protocol support +# +CONFIG_EFI_DEVICE_PATH_TO_TEXT=y +CONFIG_EFI_DEVICE_PATH_UTIL=y +CONFIG_EFI_DT_FIXUP=y +CONFIG_EFI_LOADER_HII=y +CONFIG_EFI_UNICODE_COLLATION_PROTOCOL2=y +CONFIG_EFI_UNICODE_CAPITALIZATION=y +CONFIG_EFI_RNG_PROTOCOL=y +CONFIG_EFI_LOAD_FILE2_INITRD=y +# CONFIG_EFI_IP4_CONFIG2_PROTOCOL is not set + +# +# Misc options +# +# CONFIG_EFI_LOADER_BOUNCE_BUFFER is not set +CONFIG_EFI_ECPT=y +CONFIG_EFI_EBBR_2_1_CONFORMANCE=y +# CONFIG_EFI_SCROLL_ON_CLEAR_SCREEN is not set + +# +# EFI bootmanager +# +CONFIG_EFI_BOOTMGR=y +# CONFIG_EFI_HTTP_BOOT is not set +CONFIG_BOOTEFI_HELLO_COMPILE=y +CONFIG_BOOTEFI_TESTAPP_COMPILE=y + +# # Boot images # # CONFIG_ANDROID_BOOT_IMAGE is not set @@ -378,22 +450,26 @@ CONFIG_SYS_UBOOT_START=0x18000000 CONFIG_FIT=y CONFIG_FIT_EXTERNAL_OFFSET=0x0 CONFIG_FIT_FULL_CHECK=y -# CONFIG_FIT_SIGNATURE is not set +CONFIG_FIT_SIGNATURE=y +CONFIG_FIT_SIGNATURE_MAX_SIZE=0x10000000 +# CONFIG_FIT_RSASSA_PSS is not set # CONFIG_FIT_CIPHER is not set # CONFIG_FIT_VERBOSE is not set # CONFIG_FIT_BEST_MATCH is not set CONFIG_FIT_PRINT=y CONFIG_SPL_FIT=y +# CONFIG_TPL_FIT is not set # CONFIG_SPL_FIT_PRINT is not set -# CONFIG_SPL_FIT_FULL_CHECK is not set -# CONFIG_SPL_FIT_SIGNATURE is not set +CONFIG_SPL_FIT_FULL_CHECK=y +CONFIG_SPL_FIT_SIGNATURE=y +CONFIG_SPL_FIT_SIGNATURE_MAX_SIZE=0x10000000 +# CONFIG_SPL_FIT_RSASSA_PSS is not set CONFIG_SPL_LOAD_FIT=y CONFIG_SPL_LOAD_FIT_ADDRESS=0x0 # CONFIG_SPL_LOAD_FIT_APPLY_OVERLAY is not set # CONFIG_SPL_LOAD_FIT_FULL is not set +# CONFIG_TPL_LOAD_FIT is not set # CONFIG_SPL_FIT_IMAGE_POST_PROCESS is not set -CONFIG_SPL_FIT_SOURCE="" -# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_PXE_UTILS=y CONFIG_BOOT_DEFAULTS_FEATURES=y CONFIG_BOOT_DEFAULTS_CMDS=y @@ -403,6 +479,7 @@ CONFIG_BOOTSTD=y CONFIG_BOOTSTD_FULL=y CONFIG_BOOTSTD_DEFAULTS=y CONFIG_BOOTSTD_BOOTCOMMAND=y +CONFIG_BOOTSTD_MENU=y CONFIG_BOOTMETH_GLOBAL=y # CONFIG_BOOTMETH_ANDROID is not set # CONFIG_BOOTMETH_CROS is not set @@ -413,15 +490,17 @@ CONFIG_BOOTMETH_EFI_BOOTMGR=y CONFIG_BOOTMETH_VBE=y CONFIG_BOOTMETH_DISTRO=y # CONFIG_SPL_BOOTMETH_VBE is not set +CONFIG_TPL_BOOTMETH_VBE=y CONFIG_BOOTMETH_VBE_REQUEST=y # CONFIG_SPL_BOOTMETH_VBE_REQUEST is not set CONFIG_BOOTMETH_VBE_SIMPLE=y +# CONFIG_BOOTMETH_VBE_ABREC is not set CONFIG_BOOTMETH_VBE_SIMPLE_OS=y # CONFIG_SPL_BOOTMETH_VBE_SIMPLE is not set CONFIG_EXPO=y CONFIG_BOOTMETH_SCRIPT=y +# CONFIG_UPL is not set CONFIG_LEGACY_IMAGE_FORMAT=y -CONFIG_SYS_BOOTM_LEN=0x4000000 CONFIG_SUPPORT_RAW_INITRD=y # CONFIG_CHROMEOS is not set # CONFIG_CHROMEOS_VBOOT is not set @@ -498,6 +577,7 @@ CONFIG_SYS_PBSIZE=1044 # CONFIG_DISABLE_CONSOLE is not set CONFIG_LOGLEVEL=4 CONFIG_SPL_LOGLEVEL=4 +CONFIG_TPL_LOGLEVEL=4 # CONFIG_SILENT_CONSOLE is not set # CONFIG_SPL_SILENT_CONSOLE is not set # CONFIG_TPL_SILENT_CONSOLE is not set @@ -526,6 +606,7 @@ CONFIG_LOG_CONSOLE=y CONFIG_LOGF_FUNC_PAD=20 # CONFIG_LOG_SYSLOG is not set # CONFIG_SPL_LOG is not set +# CONFIG_TPL_LOG is not set # CONFIG_LOG_ERROR_RETURN is not set # @@ -562,6 +643,7 @@ CONFIG_MISC_INIT_R=y # Security support # CONFIG_HASH=y +# CONFIG_HASH_CRC8 is not set CONFIG_SPL_HASH=y # CONFIG_STACKPROTECTOR is not set # CONFIG_BOARD_RNG_SEED is not set @@ -577,11 +659,11 @@ CONFIG_SPL_HASH=y # CONFIG_BLOBLIST=y CONFIG_SPL_BLOBLIST=y +# CONFIG_TPL_BLOBLIST is not set CONFIG_BLOBLIST_FIXED=y # CONFIG_BLOBLIST_ALLOC is not set CONFIG_BLOBLIST_ADDR=0x100000 CONFIG_BLOBLIST_SIZE=0x1000 -CONFIG_BLOBLIST_SIZE_RELOC=0x1000 CONFIG_SPL_BLOBLIST_FIXED=y # CONFIG_SPL_BLOBLIST_ALLOC is not set CONFIG_SUPPORT_SPL=y @@ -592,7 +674,7 @@ CONFIG_SUPPORT_TPL=y # CONFIG_SPL_FRAMEWORK=y # CONFIG_SPL_FRAMEWORK_BOARD_INIT_F is not set -CONFIG_SPL_MAX_SIZE=0x1e000 +CONFIG_SPL_MAX_SIZE=0x40000 CONFIG_SPL_PAD_TO=0x7f8000 # CONFIG_SPL_NO_BSS_LIMIT is not set CONFIG_SPL_BSS_LIMIT=y @@ -606,24 +688,27 @@ CONFIG_HANDOFF=y CONFIG_SPL_HANDOFF=y # CONFIG_SPL_SOC_INIT is not set CONFIG_SPL_BOARD_INIT=y +CONFIG_SPL_LOAD_BLOCK=y # CONFIG_SPL_BOOTROM_SUPPORT is not set # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set # CONFIG_SPL_LEGACY_IMAGE_FORMAT is not set # CONFIG_SPL_LOAD_IMX_CONTAINER is not set CONFIG_SPL_SYS_MALLOC_SIMPLE=y -# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set +CONFIG_SPL_SHARES_INIT_SP_ADDR=y CONFIG_SPL_SEPARATE_BSS=y # CONFIG_SPL_SYS_MALLOC is not set CONFIG_SPL_BANNER_PRINT=y # CONFIG_SPL_DISPLAY_PRINT is not set +CONFIG_SPL_SYS_MMCSD_RAW_MODE=y CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y +# CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION is not set +# CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE is not set CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x4000 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET=0x0 -# CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION is not set # CONFIG_SPL_FIT_IMAGE_TINY is not set # CONFIG_SPL_CACHE is not set # CONFIG_SPL_CPU is not set -# CONFIG_SPL_CRYPTO is not set +CONFIG_SPL_CRYPTO=y # CONFIG_SPL_DMA is not set # CONFIG_SPL_ENV_SUPPORT is not set # CONFIG_SPL_FS_EXT4 is not set @@ -640,6 +725,7 @@ CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET=0x0 # CONFIG_SPL_NAND_DRIVERS is not set # CONFIG_SPL_NAND_ECC is not set # CONFIG_SPL_NAND_SIMPLE is not set +# CONFIG_SPL_RELOC_LOADER is not set # CONFIG_SPL_UBI is not set CONFIG_SPL_DM_SPI_FLASH=y # CONFIG_SPL_NET is not set @@ -653,7 +739,7 @@ CONFIG_SPL_DM_SPI_FLASH=y # CONFIG_SPL_DM_RESET is not set # CONFIG_SPL_POWER is not set # CONFIG_SPL_POWER_DOMAIN is not set -# CONFIG_SPL_RAM_SUPPORT is not set +# CONFIG_SPL_RAM_DEVICE is not set # CONFIG_SPL_REMOTEPROC is not set # CONFIG_SPL_RTC is not set # CONFIG_SPL_SATA is not set @@ -661,7 +747,7 @@ CONFIG_SPL_DM_SPI_FLASH=y CONFIG_SPL_SPI_FLASH_TINY=y # CONFIG_SPL_SPI_FLASH_MTD is not set CONFIG_SPL_SPI_LOAD=y -CONFIG_SYS_SPI_U_BOOT_OFFS=0x40000 +CONFIG_SYS_SPI_U_BOOT_OFFS=0xE0000 # CONFIG_SPL_THERMAL is not set # CONFIG_SPL_WATCHDOG is not set # CONFIG_SPL_YMODEM_SUPPORT is not set @@ -670,8 +756,42 @@ CONFIG_SPL_ATF=y CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y # CONFIG_SPL_OPTEE_IMAGE is not set CONFIG_SPL_TARGET="" -# CONFIG_TPL is not set +CONFIG_TPL=y + +# +# TPL configuration options +# +CONFIG_TPL_BINMAN_SYMBOLS=y +CONFIG_TPL_BINMAN_UBOOT_SYMBOLS=y +CONFIG_TPL_FRAMEWORK=y +CONFIG_TPL_BANNER_PRINT=y +# CONFIG_TPL_BOARD_INIT is not set +CONFIG_TPL_SYS_MALLOC_SIMPLE=y +CONFIG_TPL_SEPARATE_BSS=y +CONFIG_TPL_NEEDS_SEPARATE_STACK=y +# CONFIG_TPL_POWER is not set +CONFIG_TPL_BOOTROM_SUPPORT=y +# CONFIG_TPL_CRC32 is not set +# CONFIG_TPL_DRIVERS_MISC is not set +# CONFIG_TPL_ENV_SUPPORT is not set +CONFIG_TPL_GPIO=y +# CONFIG_TPL_I2C is not set +# CONFIG_TPL_MPC8XXX_INIT_DDR is not set +# CONFIG_TPL_MMC is not set +# CONFIG_TPL_NAND_SUPPORT is not set +# CONFIG_TPL_PCI is not set +# CONFIG_TPL_PCH is not set +# CONFIG_TPL_RAM_SUPPORT is not set +# CONFIG_TPL_RELOC_LOADER is not set +# CONFIG_TPL_RTC is not set +# CONFIG_TPL_SPI_FLASH_SUPPORT is not set +# CONFIG_TPL_SPI is not set +# CONFIG_TPL_DM_SPI is not set +# CONFIG_TPL_DM_SPI_FLASH is not set +# CONFIG_TPL_YMODEM_SUPPORT is not set # CONFIG_VPL is not set +CONFIG_IMAGE_SIGN_INFO=y +CONFIG_SPL_IMAGE_SIGN_INFO=y CONFIG_CMDLINE=y CONFIG_HUSH_PARSER=y @@ -700,6 +820,7 @@ CONFIG_CMD_BDI=y # CONFIG_CMD_BDINFO_EXTRA is not set # CONFIG_CMD_CONFIG is not set CONFIG_CMD_CONSOLE=y +# CONFIG_CMD_UFETCH is not set # CONFIG_CMD_HISTORY is not set # CONFIG_CMD_LICENSE is not set # CONFIG_CMD_PMC is not set @@ -715,6 +836,7 @@ CONFIG_CMD_BOOTFLOW=y CONFIG_CMD_BOOTFLOW_FULL=y CONFIG_CMD_BOOTFLOW_BOOTDELAY=8 CONFIG_CMD_BOOTMETH=y +CONFIG_CMD_BOOTSTD=y CONFIG_BOOTM_EFI=y CONFIG_BOOTM_ELF=y CONFIG_CMD_BOOTZ=y @@ -725,17 +847,18 @@ CONFIG_BOOTM_NETBSD=y # CONFIG_BOOTM_OSE is not set CONFIG_BOOTM_PLAN9=y CONFIG_BOOTM_RTEMS=y +# CONFIG_CMD_UPL is not set CONFIG_CMD_VBE=y CONFIG_BOOTM_VXWORKS=y CONFIG_CMD_BOOTEFI=y CONFIG_CMD_BOOTEFI_BINARY=y CONFIG_CMD_BOOTEFI_BOOTMGR=y -CONFIG_CMD_BOOTEFI_HELLO_COMPILE=y CONFIG_CMD_BOOTEFI_HELLO=y CONFIG_CMD_BOOTEFI_SELFTEST=y CONFIG_CMD_BOOTMENU=y # CONFIG_CMD_ADTIMG is not set CONFIG_CMD_ELF=y +CONFIG_CMD_ELF_BOOTVX=y # CONFIG_CMD_ELF_FDT_SETUP is not set CONFIG_CMD_FDT=y CONFIG_CMD_GO=y @@ -826,10 +949,10 @@ CONFIG_CMD_MMC=y # CONFIG_CMD_BKOPS_ENABLE is not set # CONFIG_CMD_MMC_REG is not set # CONFIG_CMD_MMC_SWRITE is not set +CONFIG_MMC_SPEED_MODE_SET=y # CONFIG_CMD_CLONE is not set # CONFIG_CMD_MTD is not set # CONFIG_CMD_ONENAND is not set -# CONFIG_CMD_OSD is not set CONFIG_CMD_PART=y # CONFIG_CMD_PCI is not set CONFIG_CMD_PINMUX=y @@ -843,7 +966,6 @@ CONFIG_CMD_SPI=y CONFIG_DEFAULT_SPI_BUS=0 CONFIG_DEFAULT_SPI_MODE=0x0 CONFIG_CMD_USB=y -# CONFIG_CMD_USB_SDP is not set # CONFIG_CMD_RKMTD is not set # CONFIG_CMD_WRITE is not set @@ -856,13 +978,8 @@ CONFIG_CMD_ITEST=y CONFIG_CMD_SOURCE=y # CONFIG_CMD_SETEXPR is not set # CONFIG_CMD_XXD is not set - -# -# Android support commands -# CONFIG_CMD_NET=y CONFIG_CMD_BOOTP=y -CONFIG_CMD_DHCP=y # CONFIG_BOOTP_MAY_FAIL is not set CONFIG_BOOTP_BOOTPATH=y # CONFIG_BOOTP_VENDOREX is not set @@ -880,24 +997,25 @@ CONFIG_BOOTP_PXE=y CONFIG_BOOTP_PXE_CLIENTARCH=0x16 # CONFIG_BOOTP_PXE_DHCP_OPTION is not set CONFIG_BOOTP_VCI_STRING="U-Boot.armv8" -CONFIG_CMD_TFTPBOOT=y # CONFIG_CMD_TFTPPUT is not set # CONFIG_CMD_TFTPSRV is not set CONFIG_NET_TFTP_VARS=y # CONFIG_CMD_RARP is not set # CONFIG_CMD_NFS is not set # CONFIG_SYS_DISABLE_AUTOLOAD is not set -# CONFIG_CMD_WGET is not set -CONFIG_CMD_MII=y -CONFIG_CMD_MDIO=y -CONFIG_CMD_PING=y # CONFIG_CMD_CDP is not set # CONFIG_CMD_SNTP is not set -# CONFIG_CMD_DNS is not set # CONFIG_CMD_LINK_LOCAL is not set # CONFIG_CMD_ETHSW is not set -CONFIG_CMD_PXE=y # CONFIG_CMD_WOL is not set +CONFIG_CMD_DHCP=y +# CONFIG_CMD_DNS is not set +CONFIG_CMD_MII=y +CONFIG_CMD_MDIO=y +CONFIG_CMD_PING=y +CONFIG_CMD_TFTPBOOT=y +# CONFIG_CMD_WGET is not set +CONFIG_CMD_PXE=y # # Misc commands @@ -979,7 +1097,6 @@ CONFIG_CMD_CYCLIC=y # CONFIG_CMD_EVENT is not set CONFIG_CMD_LOG=y # CONFIG_CMD_UBI is not set -CONFIG_MMC_SPEED_MODE_SET=y # # Partition Types @@ -988,6 +1105,7 @@ CONFIG_PARTITIONS=y CONFIG_SPL_PARTITIONS=y # CONFIG_MAC_PARTITION is not set # CONFIG_SPL_MAC_PARTITION is not set +# CONFIG_TEGRA_PARTITION is not set CONFIG_DOS_PARTITION=y CONFIG_SPL_DOS_PARTITION=y CONFIG_ISO_PARTITION=y @@ -1013,9 +1131,11 @@ CONFIG_BINMAN=y CONFIG_OF_CONTROL=y CONFIG_OF_REAL=y CONFIG_SPL_OF_CONTROL=y +CONFIG_TPL_OF_CONTROL=y CONFIG_OF_LIVE=y CONFIG_OF_UPSTREAM=y # CONFIG_OF_UPSTREAM_BUILD_VENDOR is not set +# CONFIG_OF_UPSTREAM_INCLUDE_LOCAL_FALLBACK_DTBOS is not set CONFIG_OF_SEPARATE=y # CONFIG_OF_EMBED is not set # CONFIG_OF_INITIAL_DTB_READONLY is not set @@ -1023,19 +1143,23 @@ CONFIG_OF_SEPARATE=y # CONFIG_OF_OMIT_DTB is not set CONFIG_DEVICE_TREE_INCLUDES="" CONFIG_OF_LIST="rockchip/rk3399-gru-kevin" +CONFIG_OF_OVERLAY_LIST="" # CONFIG_MULTI_DTB_FIT is not set # CONFIG_SPL_MULTI_DTB_FIT is not set CONFIG_SPL_OF_LIST="rockchip/rk3399-gru-kevin" CONFIG_OF_TAG_MIGRATE=y -CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" +CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" # CONFIG_OF_DTB_PROPS_REMOVE is not set # CONFIG_SPL_OF_PLATDATA is not set CONFIG_SPL_OF_REAL=y +CONFIG_TPL_OF_REAL=y +# CONFIG_TPL_OF_PLATDATA is not set # # Environment # CONFIG_ENV_SUPPORT=y +CONFIG_ENV_CALLBACK_LIST_STATIC="" CONFIG_SAVEENV=y # CONFIG_ENV_OVERWRITE is not set # CONFIG_OVERWRITE_ETHADDR_ONCE is not set @@ -1064,17 +1188,20 @@ CONFIG_SYS_RELOC_GD_ENV_ADDR=y # CONFIG_USE_ETHPRIME is not set # CONFIG_USE_HOSTNAME is not set # CONFIG_VERSION_VARIABLE is not set + +# +# Networking +# +# CONFIG_NO_NET is not set CONFIG_NET=y +# CONFIG_NET_LWIP is not set CONFIG_ARP_TIMEOUT=5000 CONFIG_NET_RETRY_COUNT=5 # CONFIG_PROT_UDP is not set -CONFIG_BOOTDEV_ETH=y # CONFIG_BOOTP_SEND_HOSTNAME is not set -# CONFIG_NET_RANDOM_ETHADDR is not set # CONFIG_NETCONSOLE is not set # CONFIG_IP_DEFRAG is not set # CONFIG_SYS_FAULT_ECHO_LINK_DOWN is not set -CONFIG_TFTP_BLOCKSIZE=1468 # CONFIG_TFTP_PORT is not set CONFIG_TFTP_WINDOWSIZE=1 # CONFIG_TFTP_TSIZE is not set @@ -1091,6 +1218,10 @@ CONFIG_BOOTP_MAX_ROOT_PATH_LEN=64 # CONFIG_USE_SERVERIP is not set # CONFIG_PROT_TCP is not set # CONFIG_IPV6 is not set +CONFIG_BOOTDEV_ETH=y +# CONFIG_NET_RANDOM_ETHADDR is not set +# CONFIG_WGET is not set +CONFIG_TFTP_BLOCKSIZE=1468 CONFIG_SYS_RX_ETH_BUFFER=4 # @@ -1102,6 +1233,7 @@ CONFIG_SYS_RX_ETH_BUFFER=4 # CONFIG_DM=y CONFIG_SPL_DM=y +CONFIG_TPL_DM=y # CONFIG_DM_WARN is not set # CONFIG_SPL_DM_WARN is not set # CONFIG_DM_DEBUG is not set @@ -1113,18 +1245,24 @@ CONFIG_DM_EVENT=y CONFIG_DM_STDIO=y CONFIG_DM_SEQ_ALIAS=y CONFIG_SPL_DM_SEQ_ALIAS=y +# CONFIG_TPL_DM_SEQ_ALIAS is not set CONFIG_SPL_DM_INLINE_OFNODE=y +CONFIG_TPL_DM_INLINE_OFNODE=y # CONFIG_DM_DMA is not set CONFIG_REGMAP=y CONFIG_SPL_REGMAP=y +CONFIG_TPL_REGMAP=y CONFIG_SYSCON=y CONFIG_SPL_SYSCON=y +CONFIG_TPL_SYSCON=y # CONFIG_DEVRES is not set CONFIG_SIMPLE_BUS=y CONFIG_SPL_SIMPLE_BUS=y +# CONFIG_TPL_SIMPLE_BUS is not set # CONFIG_SIMPLE_BUS_CORRECT_RANGE is not set CONFIG_OF_TRANSLATE=y # CONFIG_SPL_OF_TRANSLATE is not set +# CONFIG_TPL_OF_TRANSLATE is not set # CONFIG_TRANSLATION_OFFSET is not set CONFIG_OFNODE_MULTI_TREE=y CONFIG_OFNODE_MULTI_TREE_MAX=4 @@ -1149,11 +1287,11 @@ CONFIG_SARADC_ROCKCHIP=y # CONFIG_BLK=y CONFIG_SPL_BLK=y +# CONFIG_TPL_BLK is not set CONFIG_BLOCK_CACHE=y # CONFIG_BLKMAP is not set # CONFIG_SPL_BLOCK_CACHE is not set # CONFIG_EFI_MEDIA is not set -# CONFIG_SPL_BLK_FS is not set # CONFIG_IDE is not set # CONFIG_LBA48 is not set # CONFIG_SYS_64BIT_LBA is not set @@ -1180,10 +1318,12 @@ CONFIG_BLOCK_CACHE=y # CONFIG_CLK=y CONFIG_SPL_CLK=y +CONFIG_TPL_CLK=y # CONFIG_SPL_CLK_CCF is not set # CONFIG_CLK_CCF is not set # CONFIG_CLK_GPIO is not set # CONFIG_SPL_CLK_GPIO is not set +# CONFIG_CLK_STUB is not set # CONFIG_CLK_CDCE9XX is not set # CONFIG_CLK_ICS8N3QV01 is not set # CONFIG_CLK_K210 is not set @@ -1193,6 +1333,7 @@ CONFIG_SPL_CLK=y # CONFIG_CLK_AT91 is not set # CONFIG_CLK_RCAR is not set # CONFIG_CLK_RCAR_CPG_LIB is not set +# CONFIG_CLK_SOPHGO_CV1800B is not set # CONFIG_CLK_SIFIVE is not set # CONFIG_CLK_TI_AM3_DPLL is not set # CONFIG_CLK_TI_CTRL is not set @@ -1262,6 +1403,7 @@ CONFIG_ARM_PSCI_FW=y # CONFIG_FWU_MDATA is not set CONFIG_GPIO=y CONFIG_SPL_DM_GPIO=y +CONFIG_TPL_DM_GPIO=y # CONFIG_GPIO_HOG is not set # CONFIG_SPL_GPIO_HOG is not set # CONFIG_DM_GPIO_LOOKUP_LABEL is not set @@ -1272,6 +1414,8 @@ CONFIG_SPL_DM_GPIO=y # CONFIG_AT91_GPIO is not set # CONFIG_ATMEL_PIO4 is not set # CONFIG_ASPEED_GPIO is not set +# CONFIG_ASPEED_SGPIO is not set +# CONFIG_ASPEED_G7_GPIO is not set # CONFIG_DA8XX_GPIO is not set # CONFIG_FXL6408_GPIO is not set # CONFIG_HIKEY_GPIO is not set @@ -1289,6 +1433,7 @@ CONFIG_SPL_DM_GPIO=y # CONFIG_MXC_GPIO is not set # CONFIG_MXS_GPIO is not set # CONFIG_NPCM_GPIO is not set +# CONFIG_NPCM_SGPIO is not set # CONFIG_CMD_PCA953X is not set # CONFIG_PCF8575_GPIO is not set CONFIG_ROCKCHIP_GPIO=y @@ -1318,6 +1463,7 @@ CONFIG_ROCKCHIP_GPIO=y CONFIG_I2C=y CONFIG_DM_I2C=y CONFIG_SPL_DM_I2C=y +# CONFIG_TPL_DM_I2C is not set CONFIG_I2C_CROS_EC_TUNNEL=y # CONFIG_I2C_CROS_EC_LDO is not set # CONFIG_I2C_SET_DEFAULT_BUS_NUM is not set @@ -1348,8 +1494,10 @@ CONFIG_I2C_MUX=y # CONFIG_I2C_MUX_GPIO is not set CONFIG_INPUT=y # CONFIG_SPL_INPUT is not set +# CONFIG_TPL_INPUT is not set CONFIG_DM_KEYBOARD=y # CONFIG_SPL_DM_KEYBOARD is not set +# CONFIG_TPL_DM_KEYBOARD is not set # CONFIG_APPLE_SPI_KEYB is not set # CONFIG_BUTTON_KEYBOARD is not set CONFIG_CROS_EC_KEYB=y @@ -1366,6 +1514,8 @@ CONFIG_CROS_EC_KEYB=y # LED Support # # CONFIG_LED is not set +# CONFIG_LED_BOOT is not set +# CONFIG_LED_ACTIVITY is not set # CONFIG_SPL_LED is not set # CONFIG_LED_STATUS is not set @@ -1386,6 +1536,7 @@ CONFIG_CROS_EC_KEYB=y # CONFIG_MISC=y CONFIG_SPL_MISC=y +CONFIG_TPL_MISC=y # CONFIG_NVMEM is not set # CONFIG_SPL_NVMEM is not set # CONFIG_ALTERA_SYSID is not set @@ -1400,9 +1551,11 @@ CONFIG_ROCKCHIP_IODOMAIN=y # CONFIG_VEXPRESS_CONFIG is not set CONFIG_CROS_EC=y # CONFIG_SPL_CROS_EC is not set +# CONFIG_TPL_CROS_EC is not set # CONFIG_CROS_EC_I2C is not set # CONFIG_CROS_EC_LPC is not set # CONFIG_SPL_CROS_EC_LPC is not set +# CONFIG_TPL_CROS_EC_LPC is not set CONFIG_CROS_EC_SPI=y # CONFIG_DS4510 is not set # CONFIG_FSL_SEC_MON is not set @@ -1440,6 +1593,7 @@ CONFIG_MMC_PWRSEQ=y # CONFIG_MMC_BROKEN_CD is not set CONFIG_DM_MMC=y CONFIG_SPL_DM_MMC=y +# CONFIG_TPL_DM_MMC is not set # CONFIG_MMC_SPI is not set # CONFIG_ARM_PL180_MMCI is not set CONFIG_MMC_QUIRKS=y @@ -1478,6 +1632,7 @@ CONFIG_MMC_SDHCI_ADMA_64BIT=y # CONFIG_MMC_SDHCI_NPCM is not set CONFIG_MMC_SDHCI_ROCKCHIP=y # CONFIG_MMC_SDHCI_S5P is not set +# CONFIG_MMC_SDHCI_SNPS is not set # CONFIG_MMC_SDHCI_STI is not set # CONFIG_MMC_SDHCI_XENON is not set # CONFIG_MMC_SDHCI_TANGIER is not set @@ -1498,7 +1653,6 @@ CONFIG_MTD=y # CONFIG_MTD_BLOCK is not set # CONFIG_SYS_MTDPARTS_RUNTIME is not set # CONFIG_FLASH_CFI_DRIVER is not set -# CONFIG_HBMC_AM654 is not set # CONFIG_SAMSUNG_ONENAND is not set # CONFIG_USE_SYS_MAX_FLASH_BANKS is not set # CONFIG_MTD_RAW_NAND is not set @@ -1508,8 +1662,6 @@ CONFIG_MTD=y # CONFIG_DM_SPI_FLASH=y CONFIG_SPI_FLASH=y -CONFIG_SF_DEFAULT_BUS=1 -CONFIG_SF_DEFAULT_CS=0 # CONFIG_BOOTDEV_SPI_FLASH is not set # CONFIG_SPI_FLASH_SFDP_SUPPORT is not set CONFIG_SPI_FLASH_SMART_HWCAPS=y @@ -1523,6 +1675,7 @@ CONFIG_SPI_FLASH_UNLOCK_ALL=y CONFIG_SPI_FLASH_GIGADEVICE=y # CONFIG_SPI_FLASH_ISSI is not set # CONFIG_SPI_FLASH_MACRONIX is not set +# CONFIG_SPI_FLASH_PUYA is not set # CONFIG_SPI_FLASH_SILICONKAISER is not set # CONFIG_SPI_FLASH_SPANSION is not set # CONFIG_SPI_FLASH_STMICRO is not set @@ -1691,6 +1844,7 @@ CONFIG_PINMUX=y # CONFIG_PINCONF is not set CONFIG_PINCONF_RECURSIVE=y CONFIG_SPL_PINCTRL=y +# CONFIG_TPL_PINCTRL is not set CONFIG_SPL_PINCTRL_FULL=y CONFIG_SPL_PINCTRL_GENERIC=y CONFIG_SPL_PINMUX=y @@ -1714,6 +1868,7 @@ CONFIG_POWER=y # CONFIG_POWER_LEGACY is not set # CONFIG_ACPI_PMC is not set # CONFIG_SPL_ACPI_PMC is not set +# CONFIG_TPL_ACPI_PMC is not set # # Power Domain Support @@ -1774,13 +1929,15 @@ CONFIG_DM_REGULATOR=y CONFIG_REGULATOR_PWM=y # CONFIG_SPL_REGULATOR_PWM is not set CONFIG_DM_REGULATOR_COMMON=y +CONFIG_SPL_DM_REGULATOR_COMMON=y CONFIG_DM_REGULATOR_FIXED=y -# CONFIG_SPL_DM_REGULATOR_FIXED is not set +CONFIG_SPL_DM_REGULATOR_FIXED=y CONFIG_DM_REGULATOR_GPIO=y # CONFIG_SPL_DM_REGULATOR_GPIO is not set CONFIG_REGULATOR_RK8XX=y # CONFIG_DM_REGULATOR_PBIAS is not set # CONFIG_DM_REGULATOR_TPS62360 is not set +# CONFIG_DM_REGULATOR_TPS6287X is not set # CONFIG_DM_REGULATOR_ANATOP is not set # CONFIG_DM_REGULATOR_SCMI is not set # CONFIG_TPS6586X_POWER is not set @@ -1801,6 +1958,7 @@ CONFIG_PWM_ROCKCHIP=y # CONFIG_U_QE is not set CONFIG_RAM=y CONFIG_SPL_RAM=y +CONFIG_TPL_RAM=y # CONFIG_STM32_SDRAM is not set # CONFIG_MPC83XX_SDRAM is not set # CONFIG_K3_DDRSS is not set @@ -1849,6 +2007,7 @@ CONFIG_RNG_ROCKCHIP=y # # CONFIG_DM_RTC is not set # CONFIG_SPL_DM_RTC is not set +# CONFIG_TPL_DM_RTC is not set # CONFIG_RTC_ENABLE_32KHZ_OUTPUT is not set # CONFIG_RTC_DS1337 is not set # CONFIG_RTC_DS1338 is not set @@ -1856,7 +2015,6 @@ CONFIG_RNG_ROCKCHIP=y # CONFIG_RTC_DS3231 is not set # CONFIG_RTC_PCF8563 is not set # CONFIG_RTC_PT7C4338 is not set -# CONFIG_RTC_PL031 is not set # CONFIG_RTC_S35392A is not set # CONFIG_RTC_MC13XXX is not set # CONFIG_RTC_MC146818 is not set @@ -1869,15 +2027,18 @@ CONFIG_REQUIRE_SERIAL_CONSOLE=y # CONFIG_SPECIFY_CONSOLE_INDEX is not set CONFIG_SERIAL_PRESENT=y CONFIG_SPL_SERIAL_PRESENT=y +CONFIG_TPL_SERIAL_PRESENT=y CONFIG_DM_SERIAL=y # CONFIG_SERIAL_RX_BUFFER is not set # CONFIG_SERIAL_PUTS is not set # CONFIG_SERIAL_SEARCH_ALL is not set # CONFIG_SERIAL_PROBE_ALL is not set CONFIG_SPL_DM_SERIAL=y +CONFIG_TPL_DM_SERIAL=y # CONFIG_VPL_DM_SERIAL is not set CONFIG_DEBUG_UART_NS16550=y CONFIG_SPL_DEBUG_UART_BASE=0xff1a0000 +CONFIG_TPL_DEBUG_UART_BASE=0xff1a0000 CONFIG_DEBUG_UART_SHIFT=2 # CONFIG_DEBUG_UART_ANNOUNCE is not set # CONFIG_DEBUG_UART_SKIP_INIT is not set @@ -1935,27 +2096,18 @@ CONFIG_SPI_MEM=y # CONFIG_ALTERA_SPI is not set # CONFIG_APPLE_SPI is not set # CONFIG_ATCSPI200_SPI is not set -# CONFIG_ATMEL_SPI is not set -# CONFIG_BCMSTB_SPI is not set # CONFIG_CORTINA_SFLASH is not set # CONFIG_CADENCE_QSPI is not set -# CONFIG_CF_SPI is not set # CONFIG_CV1800B_SPIF is not set # CONFIG_DESIGNWARE_SPI is not set -# CONFIG_EXYNOS_SPI is not set -# CONFIG_FSL_DSPI is not set # CONFIG_FSL_QSPI is not set # CONFIG_GXP_SPI is not set -# CONFIG_ICH_SPI is not set # CONFIG_IPROC_QSPI is not set -# CONFIG_KIRKWOOD_SPI is not set # CONFIG_MICROCHIP_COREQSPI is not set -# CONFIG_MPC8XXX_SPI is not set # CONFIG_MTK_SNOR is not set # CONFIG_MTK_SNFI_SPI is not set # CONFIG_MTK_SPIM is not set # CONFIG_MVEBU_A3700_SPI is not set -# CONFIG_MXS_SPI is not set # CONFIG_SPI_MXIC is not set # CONFIG_NPCM_FIU_SPI is not set # CONFIG_NPCM_PSPI is not set @@ -1969,17 +2121,11 @@ CONFIG_ROCKCHIP_SPI=y # CONFIG_SOFT_SPI is not set # CONFIG_SPI_SN_F_OSPI is not set # CONFIG_SPI_SUNXI is not set -# CONFIG_TEGRA114_SPI is not set -# CONFIG_TEGRA20_SFLASH is not set -# CONFIG_TEGRA20_SLINK is not set -# CONFIG_TEGRA210_QSPI is not set -# CONFIG_TI_QSPI is not set # CONFIG_XILINX_SPI is not set # CONFIG_ZYNQ_SPI is not set # CONFIG_ZYNQ_QSPI is not set # CONFIG_ZYNQMP_GQSPI is not set -# CONFIG_SH_QSPI is not set -# CONFIG_MXC_SPI is not set +# CONFIG_SPI_STACKED_PARALLEL is not set # # SPMI support @@ -1992,6 +2138,7 @@ CONFIG_ROCKCHIP_SPI=y # CONFIG_SYSRESET=y CONFIG_SPL_SYSRESET=y +CONFIG_TPL_SYSRESET=y CONFIG_SYSRESET_CMD_RESET=y CONFIG_SYSRESET_CMD_POWEROFF=y # CONFIG_SYSRESET_CV1800B is not set @@ -2027,6 +2174,7 @@ CONFIG_USB_HOST=y CONFIG_USB_XHCI_HCD=y # CONFIG_USB_XHCI_DWC3 is not set # CONFIG_USB_XHCI_DWC3_OF_SIMPLE is not set +# CONFIG_USB_XHCI_GENERIC is not set # CONFIG_USB_XHCI_FSL is not set # CONFIG_USB_XHCI_BRCM is not set CONFIG_USB_EHCI_HCD=y @@ -2055,6 +2203,7 @@ CONFIG_USB_DWC3_GENERIC=y # CONFIG_SPL_USB_DWC3_GENERIC is not set # CONFIG_USB_DWC3_AM62 is not set # CONFIG_USB_DWC3_LAYERSCAPE is not set +# CONFIG_USB_DWC3_STI is not set # # PHY Subsystem @@ -2079,6 +2228,7 @@ CONFIG_USB_DWC3_GENERIC=y # # CONFIG_TWL4030_USB is not set # CONFIG_ROCKCHIP_USB2_PHY is not set +# CONFIG_TYPEC_TCPM is not set # # ULPI drivers @@ -2159,6 +2309,7 @@ CONFIG_SIMPLE_PANEL=y # CONFIG_VIDEO_LCD_RENESAS_R61307 is not set # CONFIG_VIDEO_LCD_RENESAS_R69328 is not set # CONFIG_VIDEO_LCD_SAMSUNG_LTL106HL02 is not set +# CONFIG_VIDEO_LCD_SHARP_LQ101R1SX01 is not set # CONFIG_VIDEO_LCD_SSD2828 is not set # CONFIG_VIDEO_LCD_TDO_TL070WSH30 is not set # CONFIG_VIDEO_LCD_HITACHI_TX18D42VM is not set @@ -2248,7 +2399,6 @@ CONFIG_FS_FAT_MAX_CLUSTSIZE=65536 # CONFIG_UBIFS_SILENCE_MSG is not set # CONFIG_UBIFS_SILENCE_DEBUG_DUMP is not set # CONFIG_FS_CRAMFS is not set -# CONFIG_YAFFS2 is not set # CONFIG_FS_SQUASHFS is not set # CONFIG_FS_EROFS is not set @@ -2260,6 +2410,7 @@ CONFIG_FS_FAT_MAX_CLUSTSIZE=65536 # CONFIG_PHYSMEM is not set # CONFIG_BCH is not set # CONFIG_BINMAN_FDT is not set +CONFIG_BINMAN_DTB="" # CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED is not set CONFIG_CHARSET=y # CONFIG_DYNAMIC_CRC_TABLE is not set @@ -2270,12 +2421,16 @@ CONFIG_SPL_LIB_UUID=y # CONFIG_SPL_SEMIHOSTING is not set CONFIG_PRINTF=y CONFIG_SPL_PRINTF=y +CONFIG_TPL_PRINTF=y CONFIG_SPRINTF=y CONFIG_SPL_SPRINTF=y +CONFIG_TPL_SPRINTF=y CONFIG_STRTO=y CONFIG_SPL_STRTO=y +CONFIG_TPL_STRTO=y CONFIG_SYS_HZ=1000 CONFIG_SPL_USE_TINY_PRINTF=y +CONFIG_TPL_USE_TINY_PRINTF=y CONFIG_PANIC_HANG=y CONFIG_REGEX=y CONFIG_LIB_RAND=y @@ -2284,19 +2439,48 @@ CONFIG_SUPPORT_ACPI=y # CONFIG_ACPI is not set # CONFIG_SPL_ACPI is not set # CONFIG_SPL_TINY_MEMSET is not set +CONFIG_TPL_TINY_MEMSET=y # CONFIG_BITREVERSE is not set # CONFIG_TRACE is not set # CONFIG_CIRCBUF is not set CONFIG_CMD_DHRYSTONE=y # +# Alternative crypto libraries +# +CONFIG_LEGACY_HASHING_AND_CRYPTO=y +# CONFIG_MBEDTLS_LIB is not set +CONFIG_LEGACY_HASHING=y +CONFIG_SHA1_LEGACY=y +CONFIG_SHA256_LEGACY=y +CONFIG_MD5_LEGACY=y +CONFIG_LEGACY_CRYPTO=y +CONFIG_SPL_LEGACY_HASHING_AND_CRYPTO=y +# CONFIG_SPL_MBEDTLS_LIB is not set +CONFIG_SPL_LEGACY_HASHING=y +CONFIG_SPL_SHA1_LEGACY=y +CONFIG_SPL_SHA256_LEGACY=y +CONFIG_SPL_LEGACY_CRYPTO=y +CONFIG_TPL_LEGACY_HASHING_AND_CRYPTO=y +# CONFIG_TPL_MBEDTLS_LIB is not set +CONFIG_TPL_LEGACY_HASHING=y + +# # Security support # # CONFIG_AES is not set # CONFIG_ECDSA is not set -# CONFIG_RSA is not set +CONFIG_RSA=y +CONFIG_SPL_RSA=y +CONFIG_SPL_RSA_VERIFY=y +CONFIG_RSA_VERIFY=y +# CONFIG_RSA_VERIFY_WITH_PKEY is not set +# CONFIG_SPL_RSA_VERIFY_WITH_PKEY is not set +CONFIG_RSA_SOFTWARE_EXP=y +# CONFIG_ASYMMETRIC_KEY_TYPE is not set # CONFIG_TPM is not set # CONFIG_SPL_TPM is not set +# CONFIG_TPL_TPM is not set # # Android Verified Boot @@ -2320,7 +2504,9 @@ CONFIG_SPL_SHA256=y CONFIG_MD5=y # CONFIG_SPL_MD5 is not set CONFIG_CRC8=y -# CONFIG_SPL_CRC8 is not set +CONFIG_SPL_CRC8=y +# CONFIG_TPL_CRC8 is not set +CONFIG_CRC16=y # CONFIG_SPL_CRC16 is not set CONFIG_CRC32=y @@ -2337,10 +2523,13 @@ CONFIG_ZLIB=y # CONFIG_ZSTD is not set # CONFIG_SPL_BZIP2 is not set # CONFIG_SPL_LZ4 is not set +# CONFIG_TPL_LZ4 is not set # CONFIG_SPL_LZMA is not set +# CONFIG_TPL_LZMA is not set CONFIG_VPL_LZMA=y # CONFIG_SPL_LZO is not set # CONFIG_SPL_GZIP is not set +# CONFIG_TPL_GZIP is not set # CONFIG_SPL_ZSTD is not set CONFIG_ERRNO_STR=y # CONFIG_HEXDUMP is not set @@ -2349,49 +2538,26 @@ CONFIG_OF_LIBFDT=y CONFIG_OF_LIBFDT_ASSUME_MASK=0x0 CONFIG_SYS_FDT_PAD=0x3000 CONFIG_SPL_OF_LIBFDT=y -CONFIG_SPL_OF_LIBFDT_ASSUME_MASK=0xff +CONFIG_TPL_OF_LIBFDT=y +CONFIG_TPL_OF_LIBFDT_ASSUME_MASK=0xff # # System tables # +# CONFIG_BLOBLIST_TABLES is not set CONFIG_GENERATE_SMBIOS_TABLE=y +# CONFIG_GENERATE_SMBIOS_TABLE_VERBOSE is not set # CONFIG_LIB_RATIONAL is not set # CONFIG_SPL_LIB_RATIONAL is not set CONFIG_SMBIOS=y # CONFIG_SMBIOS_PARSER is not set -CONFIG_EFI_LOADER=y -CONFIG_EFI_BINARY_EXEC=y -CONFIG_EFI_BOOTMGR=y -# CONFIG_EFI_VARIABLE_FILE_STORE is not set -CONFIG_EFI_VARIABLE_NO_STORE=y -# CONFIG_EFI_VARIABLES_PRESEED is not set -CONFIG_EFI_VAR_BUF_SIZE=131072 -# CONFIG_EFI_SCROLL_ON_CLEAR_SCREEN is not set -# CONFIG_EFI_RUNTIME_UPDATE_CAPSULE is not set -# CONFIG_EFI_CAPSULE_ON_DISK is not set -CONFIG_EFI_CAPSULE_MAX=15 -CONFIG_EFI_DEVICE_PATH_TO_TEXT=y -CONFIG_EFI_DEVICE_PATH_UTIL=y -CONFIG_EFI_DT_FIXUP=y -CONFIG_EFI_LOADER_HII=y -CONFIG_EFI_UNICODE_COLLATION_PROTOCOL2=y -CONFIG_EFI_UNICODE_CAPITALIZATION=y -# CONFIG_EFI_LOADER_BOUNCE_BUFFER is not set -CONFIG_EFI_PLATFORM_LANG_CODES="en-US" -CONFIG_EFI_HAVE_RUNTIME_RESET=y -CONFIG_EFI_RNG_PROTOCOL=y -CONFIG_EFI_LOAD_FILE2_INITRD=y -CONFIG_EFI_ECPT=y -CONFIG_EFI_EBBR_2_1_CONFORMANCE=y -# CONFIG_EFI_HTTP_BOOT is not set # CONFIG_OPTEE_LIB is not set # CONFIG_OPTEE_IMAGE is not set # CONFIG_BOOTM_OPTEE is not set # CONFIG_TEST_FDTDEC is not set CONFIG_LIB_ELF=y CONFIG_LMB=y -CONFIG_LMB_USE_MAX_REGIONS=y -CONFIG_LMB_MAX_REGIONS=16 +# CONFIG_LMB_ARCH_MEM_MAP is not set # CONFIG_PHANDLE_CHECK_SEQ is not set # @@ -2405,6 +2571,7 @@ CONFIG_LMB_MAX_REGIONS=16 # Tools options # CONFIG_MKIMAGE_DTC_PATH="dtc" +CONFIG_TOOLS_CRC16=y CONFIG_TOOLS_CRC32=y CONFIG_TOOLS_LIBCRYPTO=y CONFIG_TOOLS_KWBIMAGE=y diff --git a/config/u-boot/gru_kevin/target.cfg b/config/u-boot/gru_kevin/target.cfg index e19603c2..0c90e338 100644 --- a/config/u-boot/gru_kevin/target.cfg +++ b/config/u-boot/gru_kevin/target.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later tree="default" -xtree="default" +xgcctree="default" xarch="aarch64-elf arm-eabi" diff --git a/config/u-boot/i386coreboot/target.cfg b/config/u-boot/i386coreboot/target.cfg index 71cdde44..213049fe 100644 --- a/config/u-boot/i386coreboot/target.cfg +++ b/config/u-boot/i386coreboot/target.cfg @@ -2,6 +2,6 @@ tree="x86" # test building with x86_64 hostcc by commenting these: -# xtree="default" # coreboot tree containing crossgcc +# xgcctree="default" # coreboot tree containing crossgcc # xarch="i386-elf" # or uncomment them to use crossgcc(buggy) diff --git a/config/u-boot/qemu_arm64_12mb/config/default b/config/u-boot/qemu_arm64_12mb/config/default index 4824cc79..2cd0b94c 100644 --- a/config/u-boot/qemu_arm64_12mb/config/default +++ b/config/u-boot/qemu_arm64_12mb/config/default @@ -1,12 +1,13 @@ # # Automatically generated file; DO NOT EDIT. -# U-Boot 2024.10 Configuration +# U-Boot 2025.04 Configuration # # -# Compiler: gcc (Debian 12.2.0-14) 12.2.0 +# Compiler: gcc (Debian 14.2.0-19) 14.2.0 # CONFIG_CREATE_ARCH_SYMLINK=y +CONFIG_HAVE_SETJMP=y CONFIG_SUPPORT_LITTLE_ENDIAN=y CONFIG_SYS_CACHE_SHIFT_6=y CONFIG_64BIT=y @@ -46,6 +47,7 @@ CONFIG_ARM64_CRC32=y CONFIG_COUNTER_FREQUENCY=0 CONFIG_POSITION_INDEPENDENT=y # CONFIG_INIT_SP_RELATIVE is not set +# CONFIG_DRIVER_GICV2 is not set # CONFIG_GIC_V3_ITS is not set # CONFIG_GICV3_SUPPORT_GIC600 is not set CONFIG_STATIC_RELA=y @@ -90,6 +92,7 @@ CONFIG_ARM64_SUPPORT_AARCH32=y # CONFIG_ARCH_OMAP2PLUS is not set # CONFIG_ARCH_MESON is not set # CONFIG_ARCH_MEDIATEK is not set +# CONFIG_ARCH_MMP is not set # CONFIG_ARCH_LPC32XX is not set # CONFIG_ARCH_IMX8 is not set # CONFIG_ARCH_IMX8M is not set @@ -173,10 +176,10 @@ CONFIG_ARCH_QEMU=y # CONFIG_TARGET_PRESIDIO_ASIC is not set # CONFIG_TARGET_XENGUEST_ARM64 is not set # CONFIG_ARCH_GXP is not set -# CONFIG_STATIC_MACH_TYPE is not set CONFIG_TEXT_BASE=0x50000000 CONFIG_SYS_MALLOC_LEN=0x1000000 CONFIG_SYS_MALLOC_F_LEN=0x2000 +CONFIG_BLOBLIST_SIZE_RELOC=0x2000 CONFIG_NR_DRAM_BANKS=1 CONFIG_ENV_SOURCE_FILE="" CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y @@ -184,6 +187,7 @@ CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x40200000 CONFIG_ENV_SIZE=0x40000 # CONFIG_DM_GPIO is not set CONFIG_DEFAULT_DEVICE_TREE="qemu-arm64" +CONFIG_DDR_SI_TEST=y CONFIG_BOARD_SPECIFIC_OPTIONS=y # CONFIG_OF_LIBFDT_OVERLAY is not set CONFIG_MULTI_DTB_FIT_UNCOMPRESS_SZ=0x8000 @@ -191,6 +195,9 @@ CONFIG_MULTI_DTB_FIT_UNCOMPRESS_SZ=0x8000 CONFIG_SYS_MONITOR_LEN=0 # CONFIG_TARGET_QEMU_ARM_32BIT is not set CONFIG_TARGET_QEMU_ARM_64BIT=y +# CONFIG_TARGET_QEMU_ARM_SBSA is not set +CONFIG_SYS_BOOTM_LEN=0x4000000 +CONFIG_SYS_LOAD_ADDR=0x40200000 CONFIG_WATCHDOG_TIMEOUT_MSECS=60000 CONFIG_ERR_PTR_OFFSET=0x0 CONFIG_PRE_CON_BUF_ADDR=0x40100000 @@ -217,15 +224,7 @@ CONFIG_PSCI_RESET=y CONFIG_ARMV8_CRYPTO=y CONFIG_ARMV8_CE_SHA1=y CONFIG_ARMV8_CE_SHA256=y -# CONFIG_CMD_DEKBLOB is not set -# CONFIG_IMX_CAAM_DEK_ENCAP is not set -# CONFIG_IMX_OPTEE_DEK_ENCAP is not set -# CONFIG_IMX_SECO_DEK_ENCAP is not set -# CONFIG_IMX_ELE_DEK_ENCAP is not set -# CONFIG_CMD_HDMIDETECT is not set -CONFIG_IMX_DCD_ADDR=0x00910000 CONFIG_SYS_MEM_TOP_HIDE=0x0 -CONFIG_SYS_LOAD_ADDR=0x40200000 CONFIG_MTDPARTS_NOR0="64m(u-boot)" CONFIG_MTDPARTS_NOR1="64m(u-boot-env)" @@ -253,7 +252,7 @@ CONFIG_SYS_LITTLE_ENDIAN=y CONFIG_LOCALVERSION="" CONFIG_LOCALVERSION_AUTO=y CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=120200 +CONFIG_GCC_VERSION=140200 CONFIG_CLANG_VERSION=0 CONFIG_CC_OPTIMIZE_FOR_SIZE=y # CONFIG_CC_OPTIMIZE_FOR_SPEED is not set @@ -279,8 +278,6 @@ CONFIG_FDT_64BIT=y # CONFIG_SYS_CUSTOM_LDSCRIPT is not set CONFIG_PLATFORM_ELFENTRY="_start" CONFIG_STACK_SIZE=0x1000000 -CONFIG_SYS_SRAM_BASE=0x0 -CONFIG_SYS_SRAM_SIZE=0x0 # CONFIG_MP is not set CONFIG_HAVE_TEXT_BASE=y # CONFIG_HAVE_SYS_UBOOT_START is not set @@ -295,6 +292,69 @@ CONFIG_SYS_MONITOR_BASE=0x50000000 # # +# UEFI Support +# +CONFIG_EFI_LOADER=y +CONFIG_EFI_BINARY_EXEC=y +# CONFIG_EFI_SECURE_BOOT is not set + +# +# UEFI services +# +CONFIG_EFI_GET_TIME=y +CONFIG_EFI_SET_TIME=y +CONFIG_EFI_HAVE_RUNTIME_RESET=y + +# +# UEFI Variables +# +CONFIG_EFI_VARIABLE_FILE_STORE=y +# CONFIG_EFI_RT_VOLATILE_STORE is not set +# CONFIG_EFI_VARIABLE_NO_STORE is not set +# CONFIG_EFI_VARIABLES_PRESEED is not set +CONFIG_EFI_VAR_BUF_SIZE=131072 +CONFIG_EFI_PLATFORM_LANG_CODES="en-US" + +# +# Capsule support +# +# CONFIG_EFI_RUNTIME_UPDATE_CAPSULE is not set +# CONFIG_EFI_CAPSULE_ON_DISK is not set +CONFIG_EFI_CAPSULE_MAX=15 + +# +# UEFI protocol support +# +CONFIG_EFI_DEVICE_PATH_TO_TEXT=y +CONFIG_EFI_DEVICE_PATH_UTIL=y +CONFIG_EFI_DT_FIXUP=y +CONFIG_EFI_LOADER_HII=y +CONFIG_EFI_UNICODE_COLLATION_PROTOCOL2=y +CONFIG_EFI_UNICODE_CAPITALIZATION=y +CONFIG_EFI_RNG_PROTOCOL=y +CONFIG_EFI_TCG2_PROTOCOL=y +# CONFIG_EFI_TCG2_PROTOCOL_MEASURE_DTB is not set +CONFIG_EFI_LOAD_FILE2_INITRD=y +CONFIG_EFI_IP4_CONFIG2_PROTOCOL=y +CONFIG_EFI_HTTP_PROTOCOL=y + +# +# Misc options +# +# CONFIG_EFI_LOADER_BOUNCE_BUFFER is not set +CONFIG_EFI_ECPT=y +CONFIG_EFI_EBBR_2_1_CONFORMANCE=y +# CONFIG_EFI_SCROLL_ON_CLEAR_SCREEN is not set + +# +# EFI bootmanager +# +CONFIG_EFI_BOOTMGR=y +CONFIG_EFI_HTTP_BOOT=y +CONFIG_BOOTEFI_HELLO_COMPILE=y +CONFIG_BOOTEFI_TESTAPP_COMPILE=y + +# # Boot images # # CONFIG_ANDROID_BOOT_IMAGE is not set @@ -318,6 +378,7 @@ CONFIG_BOOTSTD=y CONFIG_BOOTSTD_FULL=y CONFIG_BOOTSTD_DEFAULTS=y CONFIG_BOOTSTD_BOOTCOMMAND=y +CONFIG_BOOTSTD_MENU=y CONFIG_BOOTMETH_GLOBAL=y # CONFIG_BOOTMETH_ANDROID is not set # CONFIG_BOOTMETH_CROS is not set @@ -330,12 +391,13 @@ CONFIG_BOOTMETH_VBE=y CONFIG_BOOTMETH_DISTRO=y CONFIG_BOOTMETH_VBE_REQUEST=y CONFIG_BOOTMETH_VBE_SIMPLE=y +# CONFIG_BOOTMETH_VBE_ABREC is not set CONFIG_BOOTMETH_VBE_SIMPLE_OS=y CONFIG_EXPO=y CONFIG_BOOTMETH_SCRIPT=y +# CONFIG_UPL is not set CONFIG_LEGACY_IMAGE_FORMAT=y # CONFIG_MEASURED_BOOT is not set -CONFIG_SYS_BOOTM_LEN=0x4000000 CONFIG_SUPPORT_RAW_INITRD=y # CONFIG_CHROMEOS is not set # CONFIG_CHROMEOS_VBOOT is not set @@ -464,6 +526,7 @@ CONFIG_PCI_INIT_R=y # Security support # CONFIG_HASH=y +# CONFIG_HASH_CRC8 is not set # CONFIG_STACKPROTECTOR is not set # CONFIG_BOARD_RNG_SEED is not set @@ -480,7 +543,10 @@ CONFIG_UPDATE_LOAD_ADDR=0x100000 # # Blob list # -# CONFIG_BLOBLIST is not set +CONFIG_BLOBLIST=y +# CONFIG_BLOBLIST_FIXED is not set +CONFIG_BLOBLIST_ALLOC=y +CONFIG_BLOBLIST_SIZE=0x400 CONFIG_IMAGE_SIGN_INFO=y CONFIG_CMDLINE=y CONFIG_HUSH_PARSER=y @@ -510,6 +576,7 @@ CONFIG_CMD_BDI=y # CONFIG_CMD_BDINFO_EXTRA is not set # CONFIG_CMD_CONFIG is not set CONFIG_CMD_CONSOLE=y +# CONFIG_CMD_UFETCH is not set # CONFIG_CMD_HISTORY is not set # CONFIG_CMD_LICENSE is not set # CONFIG_CMD_PMC is not set @@ -523,8 +590,9 @@ CONFIG_CMD_BOOTM=y CONFIG_CMD_BOOTDEV=y CONFIG_CMD_BOOTFLOW=y CONFIG_CMD_BOOTFLOW_FULL=y -CONFIG_CMD_BOOTFLOW_BOOTDELAY=8 +CONFIG_CMD_BOOTFLOW_BOOTDELAY=30 CONFIG_CMD_BOOTMETH=y +CONFIG_CMD_BOOTSTD=y CONFIG_BOOTM_EFI=y CONFIG_BOOTM_ELF=y CONFIG_CMD_BOOTZ=y @@ -535,17 +603,18 @@ CONFIG_BOOTM_NETBSD=y # CONFIG_BOOTM_OSE is not set CONFIG_BOOTM_PLAN9=y CONFIG_BOOTM_RTEMS=y +# CONFIG_CMD_UPL is not set CONFIG_CMD_VBE=y CONFIG_BOOTM_VXWORKS=y CONFIG_CMD_BOOTEFI=y CONFIG_CMD_BOOTEFI_BINARY=y CONFIG_CMD_BOOTEFI_BOOTMGR=y -CONFIG_CMD_BOOTEFI_HELLO_COMPILE=y CONFIG_CMD_BOOTEFI_HELLO=y CONFIG_CMD_BOOTEFI_SELFTEST=y # CONFIG_CMD_BOOTMENU is not set # CONFIG_CMD_ADTIMG is not set CONFIG_CMD_ELF=y +CONFIG_CMD_ELF_BOOTVX=y # CONFIG_CMD_ELF_FDT_SETUP is not set CONFIG_CMD_FDT=y CONFIG_CMD_GO=y @@ -578,6 +647,7 @@ CONFIG_CMD_NVEDIT_EFI=y # Memory commands # # CONFIG_CMD_BINOP is not set +CONFIG_CMD_BLOBLIST=y CONFIG_CMD_CRC32=y # CONFIG_CRC32_VERIFY is not set # CONFIG_LOOPW is not set @@ -605,7 +675,6 @@ CONFIG_CMD_UNZIP=y # CONFIG_CMD_ARMFLASH is not set # CONFIG_CMD_BCB is not set # CONFIG_CMD_BIND is not set -# CONFIG_CMD_CLK is not set # CONFIG_CMD_DEMO is not set CONFIG_CMD_DFU=y CONFIG_CMD_DM=y @@ -631,7 +700,6 @@ CONFIG_CMD_MTD=y # CONFIG_CMD_MTD_OTP is not set CONFIG_CMD_NVME=y # CONFIG_CMD_ONENAND is not set -# CONFIG_CMD_OSD is not set CONFIG_CMD_PART=y CONFIG_CMD_PCI=y # CONFIG_CMD_PCI_MPS is not set @@ -641,7 +709,6 @@ CONFIG_CMD_POWEROFF=y CONFIG_CMD_SCSI=y # CONFIG_CMD_SDRAM is not set CONFIG_CMD_USB=y -# CONFIG_CMD_USB_SDP is not set # CONFIG_CMD_RKMTD is not set CONFIG_CMD_VIRTIO=y # CONFIG_CMD_WRITE is not set @@ -656,13 +723,8 @@ CONFIG_CMD_SOURCE=y CONFIG_CMD_SETEXPR=y # CONFIG_CMD_SETEXPR_FMT is not set # CONFIG_CMD_XXD is not set - -# -# Android support commands -# CONFIG_CMD_NET=y CONFIG_CMD_BOOTP=y -CONFIG_CMD_DHCP=y # CONFIG_BOOTP_MAY_FAIL is not set CONFIG_BOOTP_BOOTPATH=y # CONFIG_BOOTP_VENDOREX is not set @@ -680,23 +742,24 @@ CONFIG_BOOTP_PXE=y CONFIG_BOOTP_PXE_CLIENTARCH=0x16 # CONFIG_BOOTP_PXE_DHCP_OPTION is not set CONFIG_BOOTP_VCI_STRING="U-Boot.armv8" -CONFIG_CMD_TFTPBOOT=y # CONFIG_CMD_TFTPPUT is not set # CONFIG_CMD_TFTPSRV is not set CONFIG_NET_TFTP_VARS=y # CONFIG_CMD_RARP is not set # CONFIG_CMD_NFS is not set # CONFIG_SYS_DISABLE_AUTOLOAD is not set -CONFIG_CMD_WGET=y -CONFIG_CMD_MII=y -CONFIG_CMD_PING=y # CONFIG_CMD_CDP is not set # CONFIG_CMD_SNTP is not set -CONFIG_CMD_DNS=y # CONFIG_CMD_LINK_LOCAL is not set # CONFIG_CMD_ETHSW is not set -CONFIG_CMD_PXE=y # CONFIG_CMD_WOL is not set +CONFIG_CMD_DHCP=y +CONFIG_CMD_DNS=y +CONFIG_CMD_MII=y +CONFIG_CMD_PING=y +CONFIG_CMD_TFTPBOOT=y +CONFIG_CMD_WGET=y +CONFIG_CMD_PXE=y # # Misc commands @@ -787,6 +850,7 @@ CONFIG_CMD_CYCLIC=y # CONFIG_PARTITIONS=y # CONFIG_MAC_PARTITION is not set +# CONFIG_TEGRA_PARTITION is not set CONFIG_DOS_PARTITION=y CONFIG_ISO_PARTITION=y # CONFIG_AMIGA_PARTITION is not set @@ -812,6 +876,7 @@ CONFIG_OF_HAS_PRIOR_STAGE=y CONFIG_OF_OMIT_DTB=y CONFIG_DEVICE_TREE_INCLUDES="" CONFIG_OF_LIST="qemu-arm64" +CONFIG_OF_OVERLAY_LIST="" # CONFIG_MULTI_DTB_FIT is not set CONFIG_OF_TAG_MIGRATE=y # CONFIG_OF_DTB_PROPS_REMOVE is not set @@ -820,6 +885,7 @@ CONFIG_OF_TAG_MIGRATE=y # Environment # CONFIG_ENV_SUPPORT=y +CONFIG_ENV_CALLBACK_LIST_STATIC="" CONFIG_SAVEENV=y # CONFIG_ENV_OVERWRITE is not set # CONFIG_OVERWRITE_ETHADDR_ONCE is not set @@ -846,17 +912,20 @@ CONFIG_ENV_IS_NOWHERE=y # CONFIG_USE_ETHPRIME is not set # CONFIG_USE_HOSTNAME is not set # CONFIG_VERSION_VARIABLE is not set + +# +# Networking +# +# CONFIG_NO_NET is not set CONFIG_NET=y +# CONFIG_NET_LWIP is not set CONFIG_ARP_TIMEOUT=5000 CONFIG_NET_RETRY_COUNT=5 # CONFIG_PROT_UDP is not set -CONFIG_BOOTDEV_ETH=y # CONFIG_BOOTP_SEND_HOSTNAME is not set -# CONFIG_NET_RANDOM_ETHADDR is not set # CONFIG_NETCONSOLE is not set # CONFIG_IP_DEFRAG is not set # CONFIG_SYS_FAULT_ECHO_LINK_DOWN is not set -CONFIG_TFTP_BLOCKSIZE=1468 # CONFIG_TFTP_PORT is not set CONFIG_TFTP_WINDOWSIZE=1 # CONFIG_TFTP_TSIZE is not set @@ -874,6 +943,10 @@ CONFIG_BOOTP_MAX_ROOT_PATH_LEN=64 CONFIG_PROT_TCP=y # CONFIG_PROT_TCP_SACK is not set # CONFIG_IPV6 is not set +CONFIG_BOOTDEV_ETH=y +# CONFIG_NET_RANDOM_ETHADDR is not set +CONFIG_WGET=y +CONFIG_TFTP_BLOCKSIZE=1468 CONFIG_SYS_RX_ETH_BUFFER=4 # @@ -913,6 +986,7 @@ CONFIG_AHCI_PCI=y # CONFIG_DWC_AHCI is not set # CONFIG_DWC_AHSATA is not set # CONFIG_MTK_AHCI is not set +# CONFIG_AHCI_GENERIC is not set # CONFIG_SUNXI_AHCI is not set # CONFIG_AXI is not set @@ -984,6 +1058,7 @@ CONFIG_DFU_TFTP=y CONFIG_DFU_MTD=y CONFIG_DFU_RAM=y # CONFIG_DFU_VIRT is not set +# CONFIG_DFU_SCSI is not set CONFIG_SET_DFU_ALT_INFO=y CONFIG_SYS_DFU_DATA_BUF_SIZE=0x800000 CONFIG_SYS_DFU_MAX_FILE_SIZE=0x800000 @@ -1027,6 +1102,8 @@ CONFIG_ARM_PSCI_FW=y CONFIG_GPIO=y # CONFIG_AT91_GPIO is not set # CONFIG_ASPEED_GPIO is not set +# CONFIG_ASPEED_SGPIO is not set +# CONFIG_ASPEED_G7_GPIO is not set # CONFIG_DA8XX_GPIO is not set # CONFIG_INTEL_BROADWELL_GPIO is not set # CONFIG_IMX_RGPIO2P is not set @@ -1075,6 +1152,8 @@ CONFIG_DM_KEYBOARD=y # LED Support # # CONFIG_LED is not set +# CONFIG_LED_BOOT is not set +# CONFIG_LED_ACTIVITY is not set # CONFIG_LED_STATUS is not set # @@ -1110,7 +1189,6 @@ CONFIG_DM_KEYBOARD=y # CONFIG_WINBOND_W83627 is not set CONFIG_QFW=y CONFIG_QFW_MMIO=y -CONFIG_QFW_SMBIOS=y # CONFIG_FS_LOADER is not set # @@ -1118,7 +1196,6 @@ CONFIG_QFW_SMBIOS=y # # CONFIG_MMC is not set # CONFIG_MMC_BROKEN_CD is not set -# CONFIG_DM_MMC is not set # CONFIG_FSL_ESDHC is not set # CONFIG_FSL_ESDHC_IMX is not set @@ -1251,6 +1328,7 @@ CONFIG_PCI_ENHANCED_ALLOCATION=y CONFIG_PCIE_ECAM_GENERIC=y # CONFIG_PCIE_ECAM_SYNQUACER is not set # CONFIG_PCI_FTPCI100 is not set +# CONFIG_PCIE_CDNS_TI is not set # CONFIG_PCI_PHYTIUM is not set # CONFIG_PCIE_FSL is not set # CONFIG_PCI_MPC85XX is not set @@ -1426,7 +1504,12 @@ CONFIG_PL01X_SERIAL=y # SPMI support # # CONFIG_SPMI is not set -# CONFIG_SYSINFO is not set +CONFIG_SYSINFO=y +# CONFIG_SYSINFO_EXTRA is not set +# CONFIG_SYSINFO_GAZERBEAM is not set +# CONFIG_SYSINFO_SANDBOX is not set +CONFIG_SYSINFO_SMBIOS=y +# CONFIG_SYSINFO_GPIO is not set # # System reset device drivers @@ -1459,6 +1542,7 @@ CONFIG_TPM_V1=y # CONFIG_TPM_LIST_RESOURCES is not set CONFIG_TPM_V2=y CONFIG_TPM2_MMIO=y +CONFIG_TPM2_EVENT_LOG_SIZE=65536 CONFIG_USB=y CONFIG_DM_USB=y # CONFIG_DM_USB_GADGET is not set @@ -1470,6 +1554,7 @@ CONFIG_USB_HOST=y CONFIG_USB_XHCI_HCD=y # CONFIG_USB_XHCI_DWC3 is not set # CONFIG_USB_XHCI_DWC3_OF_SIMPLE is not set +# CONFIG_USB_XHCI_GENERIC is not set CONFIG_USB_XHCI_PCI=y # CONFIG_USB_XHCI_FSL is not set # CONFIG_USB_XHCI_BRCM is not set @@ -1504,6 +1589,7 @@ CONFIG_USB_EHCI_PCI=y # # CONFIG_TWL4030_USB is not set # CONFIG_ROCKCHIP_USB2_PHY is not set +# CONFIG_TYPEC_TCPM is not set # # ULPI drivers @@ -1578,6 +1664,7 @@ CONFIG_VIDEO_BOCHS_SIZE_Y=1024 # CONFIG_VIDEO_LCD_RENESAS_R61307 is not set # CONFIG_VIDEO_LCD_RENESAS_R69328 is not set # CONFIG_VIDEO_LCD_SAMSUNG_LTL106HL02 is not set +# CONFIG_VIDEO_LCD_SHARP_LQ101R1SX01 is not set # CONFIG_VIDEO_LCD_SSD2828 is not set # CONFIG_VIDEO_LCD_TDO_TL070WSH30 is not set # CONFIG_VIDEO_LCD_HITACHI_TX18D42VM is not set @@ -1656,7 +1743,6 @@ CONFIG_FS_FAT_MAX_CLUSTSIZE=65536 # CONFIG_UBIFS_SILENCE_MSG is not set # CONFIG_UBIFS_SILENCE_DEBUG_DUMP is not set # CONFIG_FS_CRAMFS is not set -# CONFIG_YAFFS2 is not set # CONFIG_FS_SQUASHFS is not set # CONFIG_FS_EROFS is not set @@ -1690,6 +1776,22 @@ CONFIG_SUPPORT_ACPI=y # CONFIG_CMD_DHRYSTONE is not set # +# Alternative crypto libraries +# +# CONFIG_LEGACY_HASHING_AND_CRYPTO is not set +CONFIG_MBEDTLS_LIB=y +CONFIG_MBEDTLS_LIB_CRYPTO=y +CONFIG_SHA1_MBEDTLS=y +CONFIG_SHA256_MBEDTLS=y +CONFIG_SHA256_SMALLER=y +CONFIG_SHA512_MBEDTLS=y +CONFIG_SHA512_SMALLER=y +CONFIG_SHA384_MBEDTLS=y +CONFIG_MD5_MBEDTLS=y +# CONFIG_HKDF_MBEDTLS is not set +CONFIG_MBEDTLS_LIB_X509=y + +# # Security support # # CONFIG_AES is not set @@ -1700,6 +1802,7 @@ CONFIG_RSA_VERIFY=y CONFIG_RSA_SOFTWARE_EXP=y # CONFIG_ASYMMETRIC_KEY_TYPE is not set CONFIG_TPM=y +CONFIG_TPM_PCR_ALLOCATE=y # # Android Verified Boot @@ -1716,6 +1819,7 @@ CONFIG_SHA384=y # CONFIG_SHA_HW_ACCEL is not set CONFIG_MD5=y CONFIG_CRC8=y +CONFIG_CRC16=y CONFIG_CRC32=y # @@ -1731,6 +1835,7 @@ CONFIG_ZLIB=y # CONFIG_ZSTD is not set CONFIG_VPL_LZMA=y # CONFIG_SPL_GZIP is not set +# CONFIG_TPL_GZIP is not set # CONFIG_ERRNO_STR is not set CONFIG_HEXDUMP=y # CONFIG_GETOPT is not set @@ -1741,42 +1846,12 @@ CONFIG_SYS_FDT_PAD=0x3000 # # System tables # +# CONFIG_BLOBLIST_TABLES is not set CONFIG_GENERATE_SMBIOS_TABLE=y +CONFIG_GENERATE_SMBIOS_TABLE_VERBOSE=y # CONFIG_LIB_RATIONAL is not set CONFIG_SMBIOS=y CONFIG_SMBIOS_PARSER=y -CONFIG_EFI_LOADER=y -CONFIG_EFI_BINARY_EXEC=y -CONFIG_EFI_BOOTMGR=y -CONFIG_EFI_VARIABLE_FILE_STORE=y -# CONFIG_EFI_RT_VOLATILE_STORE is not set -# CONFIG_EFI_VARIABLE_NO_STORE is not set -# CONFIG_EFI_VARIABLES_PRESEED is not set -CONFIG_EFI_VAR_BUF_SIZE=131072 -CONFIG_EFI_GET_TIME=y -CONFIG_EFI_SET_TIME=y -# CONFIG_EFI_SCROLL_ON_CLEAR_SCREEN is not set -# CONFIG_EFI_RUNTIME_UPDATE_CAPSULE is not set -# CONFIG_EFI_CAPSULE_ON_DISK is not set -CONFIG_EFI_CAPSULE_MAX=15 -CONFIG_EFI_DEVICE_PATH_TO_TEXT=y -CONFIG_EFI_DEVICE_PATH_UTIL=y -CONFIG_EFI_DT_FIXUP=y -CONFIG_EFI_LOADER_HII=y -CONFIG_EFI_UNICODE_COLLATION_PROTOCOL2=y -CONFIG_EFI_UNICODE_CAPITALIZATION=y -# CONFIG_EFI_LOADER_BOUNCE_BUFFER is not set -CONFIG_EFI_PLATFORM_LANG_CODES="en-US" -CONFIG_EFI_HAVE_RUNTIME_RESET=y -CONFIG_EFI_RNG_PROTOCOL=y -CONFIG_EFI_TCG2_PROTOCOL=y -CONFIG_EFI_TCG2_PROTOCOL_EVENTLOG_SIZE=65536 -# CONFIG_EFI_TCG2_PROTOCOL_MEASURE_DTB is not set -CONFIG_EFI_LOAD_FILE2_INITRD=y -# CONFIG_EFI_SECURE_BOOT is not set -CONFIG_EFI_ECPT=y -CONFIG_EFI_EBBR_2_1_CONFORMANCE=y -CONFIG_EFI_HTTP_BOOT=y # CONFIG_OPTEE_LIB is not set # CONFIG_OPTEE_IMAGE is not set # CONFIG_BOOTM_OPTEE is not set @@ -1784,8 +1859,7 @@ CONFIG_EFI_HTTP_BOOT=y CONFIG_LIB_DATE=y CONFIG_LIB_ELF=y CONFIG_LMB=y -CONFIG_LMB_USE_MAX_REGIONS=y -CONFIG_LMB_MAX_REGIONS=16 +# CONFIG_LMB_ARCH_MEM_MAP is not set # CONFIG_PHANDLE_CHECK_SEQ is not set # @@ -1798,6 +1872,7 @@ CONFIG_LMB_MAX_REGIONS=16 # Tools options # CONFIG_MKIMAGE_DTC_PATH="dtc" +CONFIG_TOOLS_CRC16=y CONFIG_TOOLS_CRC32=y CONFIG_TOOLS_LIBCRYPTO=y CONFIG_TOOLS_KWBIMAGE=y diff --git a/config/u-boot/qemu_arm64_12mb/target.cfg b/config/u-boot/qemu_arm64_12mb/target.cfg index e19603c2..0c90e338 100644 --- a/config/u-boot/qemu_arm64_12mb/target.cfg +++ b/config/u-boot/qemu_arm64_12mb/target.cfg @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later tree="default" -xtree="default" +xgcctree="default" xarch="aarch64-elf arm-eabi" diff --git a/config/u-boot/x86/patches/0005-Libreboot-branding-version-on-the-bootflow-menu.patch b/config/u-boot/x86/patches/0005-Libreboot-branding-version-on-the-bootflow-menu.patch index 2f903cd7..8a09fa7d 100644 --- a/config/u-boot/x86/patches/0005-Libreboot-branding-version-on-the-bootflow-menu.patch +++ b/config/u-boot/x86/patches/0005-Libreboot-branding-version-on-the-bootflow-menu.patch @@ -18,7 +18,7 @@ index 84831915a2..8e26ec2aef 100644 ret |= scene_obj_set_pos(scn, OBJ_MENU, MARGIN_LEFT, 100); ret |= scene_txt_str(scn, "title", OBJ_MENU_TITLE, STR_MENU_TITLE, - "U-Boot - Boot Menu", NULL); -+ "Libreboot 20241206, 8th revision (U-Boot menu): https://libreboot.org/", NULL); ++ "Libreboot 25.06 Luminous Lemon (U-Boot menu): https://libreboot.org/", NULL); ret |= scene_menu_set_title(scn, OBJ_MENU, OBJ_PROMPT); logo = video_get_u_boot_logo(); diff --git a/config/u-boot/x86/patches/0007-change-the-logo-back-to-the-plain-libreboot-one.patch b/config/u-boot/x86/patches/0007-change-the-logo-back-to-the-plain-libreboot-one.patch deleted file mode 100644 index febc2372..00000000 --- a/config/u-boot/x86/patches/0007-change-the-logo-back-to-the-plain-libreboot-one.patch +++ /dev/null @@ -1,157 +0,0 @@ -From d721edb391618fca096ec7f63a2fbc9df0af9231 Mon Sep 17 00:00:00 2001 -From: Leah Rowe <info@minifree.org> -Date: Tue, 17 Dec 2024 12:59:54 +0000 -Subject: [PATCH 1/1] change the logo back to the plain libreboot one - -Signed-off-by: Leah Rowe <info@minifree.org> ---- - drivers/video/u_boot_logo.bmp | Bin 27350 -> 27350 bytes - 1 file changed, 0 insertions(+), 0 deletions(-) - -diff --git a/drivers/video/u_boot_logo.bmp b/drivers/video/u_boot_logo.bmp -index bc9ae001badb25bc900058c167a47247ef91dc7c..c9262cd206cc3cf5297daa94b696fcf102fc22b5 100644 -GIT binary patch -literal 27350 -zcmeHQO>7&-6@I%EB~g@3*_3HXp(Kj3Xz^F1xI5%-k<?b5AGdL!IIdx*ZfpJcFSTSr -zQfdP=&;SXL0KNqA!D)S{6CWJF1yaC3d+?=zdov0YsFApE(VKxDdTP;Lia?zuxqsp= -zxt!S*2L%^c?%Ua!_r85I^XBc_8SdP%uik;mhPnWzF?FZ5bI@B!hh>0pu(|_>lkh&; -z7l(;p0^-4Gh=&s}6;45NBnRoSJY?eqC?o_ZCJ~4k3Cc6y0(tgDc&T&<UMe4kxfhSX -z%in$tjvRgkUODs{9DVtFaO~(C@WyxN;mu>m;l!IK;pAJV;PlD2;mqkD!jI3Kg|k0e -zfaS$=aN*oVxOn~&{N$a>aAkE3*6_Z$u?bgydJV2!y$08Rb{*dP`FrsG`yaqZAASTk -zZrp&IpWK97w?2j2w{OGUyLaK<y)WPkyx+fnAHMwZH}K%W19<rGAv}8Y2p&Iv3{Rds -zfu~<Tg=f#6!Sm<Ot2*fXb~Mn@fTjVyvvoAk(LhH7UTYu_@LB>5|L#00p<;R>!f`Zg -zJS!V6%ask~#``=ILc=&)#fN`|2|t5642c>*IonTjryiA!2s%Jvh(QfT3OYbE?2#5| -z*bZbQ4Phxl!^xwv{^3~-AYu_9-!-PSLNUZ(8|3+}!E~*b1r~cT&vSgRW~=jTT56sj -zt+m3e-=l_3%U10ssV-Vh-jp9u4b7A{{HeKSYBelHsabi#pkGxWn`V&bQ>vjBf}SXV -zmZ`61V`Mo)%gUSbY73O*NpA#Da_v(qST2VtS$R`j_gBSUZzRxhRR<BQ$1EKuk4l%c -z8kX~+@l>`jn@>&b>-I=m>uhs6KAn=p^avw^UPMP_ri$ZC_zk)VG{ci+DL>SDb+}(b -zbEUWAlVz0X!j2;CMj5M^uE(XPq<d-c1qLD!Di__h0aj4vLKN!b{BZ%5rIMJ9lJ_>% -z&)1b^qJ(|q0J)etzDq)kxVIHec<N5j7&*Xh1MdRqjcQI-9kgmf`5-yKs6Kwmr8pU% -zQDg&5O_rv~dvVNQ9xxxGEtWS7aw;g(F+<#V_^@Gsl2SzYcrNrpT2y^~6EO9pNXA$x -z)jesb<0Lts{!}9^B8oUjD5bR^iJ~p@{6SS+R!8i95!>p4X%(R~POd>cq+o>)k9HJZ -zS0Gjk>y<}n02+Fm1;%oQW;A)B$`O&;LFK+CEl`<~#0+`Nwbqk`L2?c5GJ&x^DHW!N -ziJn!0H4{-F_ZK*|9a}@wQ^nbAYN)@(2AQsvr!c1mYpR2>r%Fi3rxWqv9w+_@7pPe< -z(t!lGi*b7_4X%_>ek!Ucv#|x@R0AfBk~YD;4Nx?>g!1ulV|=_{Z9Zr(A;2!fVAKSU -z#pSY)XlQ{r%|6VKj_CRuIt%#@lFGAV-S%44Z$Dw5siA7)4lp#yQp)Y;`9L%tkH*I$ -z=J(CI0wuz6B;3eLXaY>XED2>9TRW+Ygj^zO3@&QzM<BAHJa2eEr^}<GP;OF-j_CoP -zM8kTty*NdO#jdoNid1c+ra;1%e|@SAu#-fbj&jieXRxrdM143w+k+e7mxR=Q-BBm; -z1&0lfgpDM*ajj_X+_p{5cwq<O$#Tpn*%2M|to2zbJnsmTF;jPA586ryMH*^28X9qF -zv^GLgh;>|4YW?;7Zp}V9mO`FU?9ue%n2729pIorBlBo6m!SlX`0ZV6sjk$_q$@-3^ -zELmjC-z=bIl-`_<@WE(oGMSml7m9))B7{n1B;r|W#Lt=jDeD_<j>RfR+T60L(dgb@ -zqOnb76>+hX2xdoAjh35JRl!b={)8HtwNgn-X;SMp&I!tJ+AV|=PQ(%9*_(8ymRldh -zoPzBh%_91)f{gCHQ_)WI`G*e{XfcvlVW;?TKF+^ybb1EAXlbci7&24EOq&C(S_J=K -zbTX036lMjn)FRSCa~baD@bw2nqshGB@KLmVGY0}=83%n_^u_`@)Oo-#U)0d(3}m}! -zCv_ccY=lZU+|k~xTb-(B(3(!th3wtAGd1$4qtYqTP>?&wYFviw>zIw{d+OQ)U2iJI -z20lJyXSU0&Kc%@^wJNi)O%<1kJ$aS0OUDtlM$N|(L72rQMBCU{KirqL<!a-pWpoL( -z5zsc#z2=&&o-u@vw^ATW_^g5tEaCH8R4_~Uc#HTZQ}`^R>*BUf)Yj8*eFdW?uU&T* -zZ~Y*L)R@c80<n=+AHZg+{po8Cw2Ed6Ur58H5^Ujvx(3J=KEAF2GKQ~ih$~aYa&5XH -zd2)RNoMFa6Rqm?30m{-8`R%%1lB;WgxFgR{ObT-uAy?M`6+?qY=py#+f#m8NpaM{u -zVgw)uHV?uDF9Xpn=$EsN7U8#AV{HuvR`0_4F;l5zyrE3n7ryjVk=XsBT%?8C@E|K# -zIQb^9`C$9{3g9;qP3K6>c%T(WEIH^I&srI1lm28mKj4U++nM%c9lmprb8d@vz^~uI -z%LY}C?ZD@=if*WYOh=U3?cjdh&vL*~^@@0wYI`~`=Zh8V{Ckt;WIW5Reg8be;YVHH -zVA|IHm9kMLeAN+4B^C+i#Jb-OeS7KvN?Gc)h;HKC1`wsl7cIC6OXsDorog>JYBH@{ -zFSL_Xbr6<NF*U}BV`{#8WfU$C>}I0Bnvqq{6jLo&U0@@v@|48r-%=<VN-Dz!*$lrO -zQE<hV(Wc$+h{#ri>{rxRB3z@;iXg(gm1j(;?K30n(AQ?!OA~e(+MKSgQ<IWx1^;Sl -z*{}JjQqsxNxSiH!Wu>4{Syd|~cUpLJd6jkhcyc{Ai9J=CKLBVhiYUj3QoVS65&jo7 -zymp$sKbD!m@TA%kcr?}KXp4o06Br+3Zxu`^m9dwpx2h&|Jg;<LhFvR8Sz)l_vrf0^ -zsL`p?{#eGRta4@<Uj#q>vW%|_2eKG;?RkE<ATSflu<j`Add}8(JE<KFbTsh)ssRB0 -z&gG?*jjlrgE32F9$6uX`ojUz?tmp604}0(~LVjUsW9{(#{Oj6BL+XhCd{z0L5d1l- -z@T$AqIAPcFxs4_KF`^jGc4%pBeG}7XF^#Tnt||1Vm>yiZxPZT2#Qhr6nRN^h(@&N3 -z#VY*|g}zXsc}&9K`ibM;!S^<Z>DUDWy=b79F0QZOJOa*hV0mQ~^XE@h>1Bn!uFxx& -z-^JJ}oASk^{&TC}e+wTE;5`bj!cjN|^ALkYco#0gW!Qu)KCa@F4LFXk&)Jk8sg$3` -zr516iOR$7X9Dysa0t=P$pwt1*gEw8b8|RC&l_aiz4#5Ant*w7e0rcDi_~zrSt^a<u -zwe`*C0KUHh{C-t0f8`E9`QJGGV?FJ_uK+?H0Q~k3dfMVGfZu%xF!YzTh4qDs93TGW -z&z}eQ=RJU3r}3Ag{shqXgR0)}HRU?o{Tko|*468O1o*`-0TLH5?=v>{t$c_|(_6zl -HHU0e$+Zn$= - -literal 27350 -zcmeI4X;4&Wy2qdHrW-_vf~Q+fvxtHMDuIZCglHm=fVhAxir~hgf>ENNF(W3?XpH+1 -zw}==uio$3#35sl^*F+S*+^So3t7fU1n$PoLKHXb0U#6y<|MQ++Xy|4+$n8^eeap7r -zKIil~zy3eV`@HYzCVj>4wvlMbK18wTU9&xO<R`XMCDHE#l?Umt2@lCAljLtD*%VHp -z6Rczowo=GcnJlK66y`gf!Y4%Gm<1$-#E>MXP)LkS)`eD*V$#TxIG3XQWs30+r8r5Z -zg_C89GDgvK|5-F+Vl2(^jiNcmI9lKvNArz|lx9q(#l}>MiIQplOqmi=acxsJNpBR8 -z<X4UUXCy_xPtyE6k`k*(TD*tCvSf-V1Ybb{P1_z#p*8PP#ICs%z9)&o_b#NcU!~F9 -zY?-2qWtzJ|rngqhl(bH!v=W)7m&+7cHI3pn;dxsmNlS~#ytb62oLv;MC6~fJ&7jcF -zb4V)NMw$5BIp$DW6Jn*M0dbUWe1}#CCQwPxOv;}l)3&fs+A?J})deThhx26Gjn9x{ -z%%EIjHsu?0XuYw3Hk(${W@8Ce8`o2P;Bu;)P>4qXWv!7Z1ANPhWGVq`L7_~g`7&)^ -zDN{wBOjUT)Etjc22YMKf<8gtc2t16fc>GAx#5R(GZ{zWRBx^fKZ{nDQ8zjx>AZczF -z^y(%l?YAW5og*pZ5k4pSB|nf<hvO<9lC<+4Nh_a_RDeh6FWB~!qz`+s{~1a3y%c(I -z8HFA$AnTE0vL0PW))N&ZpRT5<M?N9BVF!hrsiTnd`zYk%XEgQdX$omPL?M@tllkI# -zlFocjQ@=Y)mgXih-@HMV)@HKYxkFNG2bu5vMCKnKlDVyiq(ivg2|Ui?noW4zK>rS& -zANJDm@Y!_2vWQMw7traDG&&!;fEwgfYK(Y`j>TH(TwEwM&9Ty%`7)i0ilT2L<Ebe! -zk(v`^x(8c)zgVUR2@%x(Ryf^XBvVgPDD|YtbZgcux*k27ZpK8@owz9aDL#@8Oj=5Z -zgEHx;^d5Z$-#P?)ocuthqj)}>DN|FrOgEOu)cT%GPm-<FyHHkQ=il^y%j@=9f!7NB -zJ1AhbSWH^|9KK5W)N7N_Y_{R?lNKd3>uE-1<%~!Z`1E><#SB|(se#Y5b!$~s)#m9e -zp|95XEEb{(%vV*ll?nA4)6ZhjGoV7anXRlP>oSW8fTl{DgpufLPC-sF6Dq3&A^^2# -zV)!5vIsmn1VvEI>U}c)H8BsC;3Th6}3_>)M4bWF}fE*}5<W#d2QLIHik!mVARm0ZW -z1cZe-Q)9J4vw$-gFbeA@np6<63lFTWo`EGE&E;uUjIb_KUH##Qk($iYB1E<VZ~Jzn -zK`mMsxn+7a@II<B=`;zbC*3ySeYA6nMuV7W2IK9lMLFoFK@(#TVZ2?nwf+tZYpJTn -zit-kLx4VWdY@6R{DBB=HcJA6$yL<P(Spe+UG*Z@JkP~=&_SH`W-Nc!*VrE7A3r=ki -z64lh!*6ypXuisx+_vvR!`(zQrYN9kGng!$TtKYx>)6eX9-1&GW6M8+Qk)kK=177|9 -zPaSkN5kHQ86@X@51sKEVjww6%px!_{P%c7kIJW8<pU}W|7=tep?Qy3bi+G?8^6JO1 -z+Qn%0rdC9v9d3-vc%OfM;8z^V>Yb1%AU1a1eB97LQ>h^W#I11!-+_i`NT?bRg=Nx$ -z1<56AOCy+2)p-yg2;IRA>K(Xr;8IhX+7mMkk#YWll9JN(8`iOgY5*~&MaO(Rh>!6O -zT)NcMba@d@Y*HB}2r$E2Yk{|^tZXUf5o*SETplet<`Wl2A>XB@%a<=-**k^_3IHj* -zbp57H8_O$JAe7Yr@;SIotaB3D@WA)&x8LrC52~)daAIA=hO&+2Pkvc}z8Vu-EPjH~ -z6m8FfcDyFwUAc0l!H0A@b!Qf{2r@*hsCe?US3Mvu&c#)<qM+h@@I6-V%GIll7v8{K -ze3c18AtXcair!}{RV&EqK*U81XjhN%px)JMXp8Y}1oc+t_Y&QC_J9>sKia_u2jGG4 -zs^Gi!4JR5jb!Im6hfjb0{6&uHQ{ciVrxC@D%);_rwc$a+3rjEw;HE0snDsi{oxT?g -zsMb-;$ftFm3+pz)`PldD>amH@ex0V&u7c8R^5=ULoHE3JLn~`G8)(W4v~=Xep%3-6 -zmv7+A0^TK&mu>1P)>ZKM|Ar-#kZxR>-eMR&uL%p^247z=>C|Q`qBr{E^|!8_u<`u4 -zGhZ#9G|30HR?Mxi4lf}-y%6yJWVK!lC)P2al34~CR}eDZ$x|neeR=rc+}X2Z0|NsB -zj1Dn}yd%X1rdGD_4|szo8xFIb=wm0|0Ow=A#*639d@b<4IGC6aKW9$L!W6XF0Fi!h -zT~|Z9zJhxPG2aWML6tFr3@FsQ>_~ieyDI8kJTLH$9#-%K90Q`+8SS?$IL!^<gN0iK -zAYw#a7K8(GQQ#(Y1s~KqbNa-wBM!WI3Y+c!d4Y<I;@Wz>-p?H5YA>S6%-62k1>y5U -zI^UTyr%oL^^5qu?-%W^*U)Wzh8)9sL!yE1K<L8tL0<IK%zftRgM0=Y&st4nqgnC~d -zV!SzS=u%SVB_&N$L^K!-gnvr2%LoDc`r6y?_hhQHu#RSO;&T%k*Di|CJ${t&65Xqp -zlA4r+dU={Lcp6uHPkvspA~RT-!r3Ag0=BoexAk<WOftwY4Ic2m;miWO!v_y0zUf}R -z)YJvQTf1R{C`h0D^7GT)XU`w3%$%$+nk^CpY`fpq)7|-<8Vh48O*E6$8#ruSYgF(! -z@rlgh5*W4@HoW!VgL;q;c+Z|cgvZ?mqP^v`we@s$bs>f&yV*zjY{o5i(q9-%=fD%8 -z3-vtVVY0?}WiYNyy$8&P_Crpv%^TagJ32b=-NdVra@mh#Jo0zreD=KT%q(sIAs^2r -zF&o-cUjD?Uo*j=7e_WXk84cZnuO)l*d=`X9gIhd=u08Q3#=q@0bm4of9#7Wnc+Vd^ -zU@k}N>$`tD=QrIQot^jYwcJt>B1kW8@DRF;cl^lVLkANR<LA8XM!XcEUWu4XmUHO- -z%)ZxOJy7=D=h$HDwzS;3o;7*_iPEmPjA+UWMLm&OkeA&%Us6)Cn2B#H+lbKkg(LU5 -zhz+NDNGxr_`R=ydym_m6`RMs{q`NSPkDU)S%TXRS65m8k;HIUfCM74cdLndz_mm^o -z#k$DL?QPxN-JP9`*L?l@>e2I=NS8K{&z4!B-WTsCycz$tJL|G>1>Pnlbe{_OY>{gd -z5PXVp@3yquymkHYV-@!0Y0O?%K&9e4&ZC;h%WlMj?<wjbHh9>8dTd>AwHgfRD{o`k -zfuf+DeXqN#^X@%?mo-&QhDMF1a{*M;J9YGkZP;+9UYrQsQVw0t%bfV&d(4MnmfPf@ -zDH$1=nVH!c*%=wx+1bmo-WU1Wp4Ue6jHQAlP6Zngx+jrYjvi7fK6iL2DXB2-+EUKT -z8!I^R!S|HVXtfsz3a9J;s^)>bC`Pltu@N$!Bk_5zS>Sx7N@h_;H5QNMd(j6zlvjE; -zn4=!t93sQSx+RTFXvgDvnJYfGp_`I~yllf0&ezM<WjZvjqwMvcSSeOJb#u_6!%H!y -zB}g<E&Y%7I^r>UE#OEQiFrLWE8*Q=i?AcF_ynK7~Iix>{hdve(bmafeug{<R`XuAA -zdY*~`;Mp>Zg2(DTcql@a1q>P&KzJcfZYRC-)v04&a%N#Xccbn+N8-a0pFOiU)Kd)X -zL4+}GwyhHQOj^9yvwHA7c0Q3=5W2`L9J;KVy}`ihBVm}205dDiCm?Wkoa<aor0G;q -z6d*RZUd9S3Mm2<n3*QTay7i=C&>XwDB2=1A=i_4x2nY-ejE#+pQ}~4Mab`hmC>7rT -zx)*&@RL+DP1jBU9CKUZnN(U{Y&T}R{sHY4Y0|(uedX;nWVYmkE_T#iOpc%raIn;x7 -z*|@IOZEtTKXZ;3oDjS@NhOdL~iO@wo+COv=BJJ%x<C6hBP`PZzlA1ypfzbUAQSrIr -ziJ5rUI3++Alp$WQ#eJ44c+Xu6Qt<Wkc$;sssFZ@A-hu16;Jpxd%=aqB+#wViZkHLW -z0u%(k0ioO1!v$%FcjBWTwAsw}pA4;o)x&h7!~1-EYaHt$KD_$vXu`O_>+JM$eAtCV -z75}4yj(zWb4^MUPVj;+Wh*zJXV34D#!Xlr*>*~@BA6K=RHUXg?7OA>By6)a>Q85c2 -zC!G-_HWy?*VO-3_mubYl_|R}cAz+`PUPmY7(-I#5#qu{>mqS;~#NXGBeu{vKaXGW_ -zD$sQ;@d5C*g4e}se9ZS)OMJ*NnGc2YA+a!C^JC^4!&jtUaVR4PiZwLk<-2!bTr~W$ -z`W0Vf45#xYLr;&g1bOe~P0&4Bjb*AaobXk@6?Xu!1c}g9mLS20;^tLfWDMsc$`NaP -zSc1F(^&YL(9N!e79^_N-inXPmo(!D$T6lf=(WBq4UR^Bd$8P~ag`tVQ=TQynJ!b0` -z7l&xd|B#`VDY3zHz+0m&K4j>0+<R$;dTiV^Yl_0Ore6@_iO_|5MMb&V;`1YYGph&r -zii?Yjii!#`xl{RV4HfP`{9E9F%}(_I7|Jtvm236GUvAV#5WVk$2L-K6IO-FP(;JAU -zDzU-NXKVR9gCD2sjrO#dCfP&Rj%Sl_v}YQh<FRhNoHI*Np%V|i57@?<h!i-WNPI4M -z4nXfCf<Pp`0enSyxnWie#%R9wJ4)kY!C}sdA!OA+HplD2JdAf<{@FWGh=a#Xrx3yH -z%@sieuqodSmva+VG`(YDWjT5%J`vRUIL-@0p8fvAWNV&NE4RG@Zxq#xCubEnM-8`V -zVq-4uoDCCY<FFfEm9+*HpPSY{R~Lq{8+ggSlSA|SvkXSf<^1BUC3A6Uy<`n@8^49C -ztXwCcjf3$<bV`Z8Kf_HwSh&J4lX6RWEWcPA5yg-PnUr7Yh7JT2PN$VR6$*af0+`Fv -zsr*^MkaDQp37Qax4;FqPZp5oR)%d&(fD+2mRjcxB0V`=|5m0<$xLQ$>eZ2Epz<L&+ -zix^COx!J#w@A+Ua>>;uiVczD2E064wL}5kVr~*bt$M<UTi@Y+*js#Ewo}O1WMslzh -zj^STgg%;&$mk;t4iYc!b#2LXQ5f~VNxs2DQg@t_it2n`E5|HJCdVZ@oLyti3|Kmdd -zRj7<@A({l_u}!Q>!p<n?y)e}n+8{)^g@_G{vf83O3uElCuZqLeTGY=`8sJNV+F5$G -zSsj01P}8M>9(-6#7}`g@xK~dmP3s5kinMjte1NeKzgjMxQT*j1Jr97^&`ZoMwOraO -zi!hoS)%qDwvxQ$j#@F4~3cOa}|AzvoVXtkk*iq;69{!wJ&F<R#tn|p@wIz|hf1v>K -zp*LtDMV3|6?Oc+Vhpz*BYJdNo@)t|~JD$(w=_n7|11mSzRp4i9k=XxU#m?H@=x;(l -zdGGF>+`ovvR8dt{iT?NK&#eU@`hVc<<x2mr+}|qtoMB0-EzHlrXTxAckz4!q%lq{! -zs%m%OnE5y+x^hPi&aW?4`jy<@&;1?S_kc|_{@Gf<=9;1cJV)aZMp?9!R!|;AQaSCR -zYT8b_DIU)?*iuLN*q`p<{XD%6!#nrjo!jw_3cMqeKB65|Cf-kM0~~|q)V6L*(mb(A -z7m$v>Z}#VxFaLKY7E{j>{j=fa%YS_L^5s9TW3Bv8L{Dm*@Bio;(ZauBdxLXZ^i})< -z?=aEBUgx&*Z-_d+!UXY;JIiXz#C7<$o%$_Xi2kRAC~z(Q%FKV^NB*UXZrI2B>BjFd -h=Y>|w|C6Zk68;X)R-AjChtJK+<qqA3JjSNqzW{|XuQ>n! - --- -2.39.5 - diff --git a/config/u-boot/x86_64/patches/0005-Libreboot-branding-version-on-the-bootflow-menu.patch b/config/u-boot/x86_64/patches/0005-Libreboot-branding-version-on-the-bootflow-menu.patch index 2f903cd7..8a09fa7d 100644 --- a/config/u-boot/x86_64/patches/0005-Libreboot-branding-version-on-the-bootflow-menu.patch +++ b/config/u-boot/x86_64/patches/0005-Libreboot-branding-version-on-the-bootflow-menu.patch @@ -18,7 +18,7 @@ index 84831915a2..8e26ec2aef 100644 ret |= scene_obj_set_pos(scn, OBJ_MENU, MARGIN_LEFT, 100); ret |= scene_txt_str(scn, "title", OBJ_MENU_TITLE, STR_MENU_TITLE, - "U-Boot - Boot Menu", NULL); -+ "Libreboot 20241206, 8th revision (U-Boot menu): https://libreboot.org/", NULL); ++ "Libreboot 25.06 Luminous Lemon (U-Boot menu): https://libreboot.org/", NULL); ret |= scene_menu_set_title(scn, OBJ_MENU, OBJ_PROMPT); logo = video_get_u_boot_logo(); diff --git a/config/u-boot/x86_64/patches/0007-change-the-logo-back-to-the-plain-libreboot-one.patch b/config/u-boot/x86_64/patches/0007-change-the-logo-back-to-the-plain-libreboot-one.patch deleted file mode 100644 index febc2372..00000000 --- a/config/u-boot/x86_64/patches/0007-change-the-logo-back-to-the-plain-libreboot-one.patch +++ /dev/null @@ -1,157 +0,0 @@ -From d721edb391618fca096ec7f63a2fbc9df0af9231 Mon Sep 17 00:00:00 2001 -From: Leah Rowe <info@minifree.org> -Date: Tue, 17 Dec 2024 12:59:54 +0000 -Subject: [PATCH 1/1] change the logo back to the plain libreboot one - -Signed-off-by: Leah Rowe <info@minifree.org> ---- - drivers/video/u_boot_logo.bmp | Bin 27350 -> 27350 bytes - 1 file changed, 0 insertions(+), 0 deletions(-) - -diff --git a/drivers/video/u_boot_logo.bmp b/drivers/video/u_boot_logo.bmp -index bc9ae001badb25bc900058c167a47247ef91dc7c..c9262cd206cc3cf5297daa94b696fcf102fc22b5 100644 -GIT binary patch -literal 27350 -zcmeHQO>7&-6@I%EB~g@3*_3HXp(Kj3Xz^F1xI5%-k<?b5AGdL!IIdx*ZfpJcFSTSr -zQfdP=&;SXL0KNqA!D)S{6CWJF1yaC3d+?=zdov0YsFApE(VKxDdTP;Lia?zuxqsp= -zxt!S*2L%^c?%Ua!_r85I^XBc_8SdP%uik;mhPnWzF?FZ5bI@B!hh>0pu(|_>lkh&; -z7l(;p0^-4Gh=&s}6;45NBnRoSJY?eqC?o_ZCJ~4k3Cc6y0(tgDc&T&<UMe4kxfhSX -z%in$tjvRgkUODs{9DVtFaO~(C@WyxN;mu>m;l!IK;pAJV;PlD2;mqkD!jI3Kg|k0e -zfaS$=aN*oVxOn~&{N$a>aAkE3*6_Z$u?bgydJV2!y$08Rb{*dP`FrsG`yaqZAASTk -zZrp&IpWK97w?2j2w{OGUyLaK<y)WPkyx+fnAHMwZH}K%W19<rGAv}8Y2p&Iv3{Rds -zfu~<Tg=f#6!Sm<Ot2*fXb~Mn@fTjVyvvoAk(LhH7UTYu_@LB>5|L#00p<;R>!f`Zg -zJS!V6%ask~#``=ILc=&)#fN`|2|t5642c>*IonTjryiA!2s%Jvh(QfT3OYbE?2#5| -z*bZbQ4Phxl!^xwv{^3~-AYu_9-!-PSLNUZ(8|3+}!E~*b1r~cT&vSgRW~=jTT56sj -zt+m3e-=l_3%U10ssV-Vh-jp9u4b7A{{HeKSYBelHsabi#pkGxWn`V&bQ>vjBf}SXV -zmZ`61V`Mo)%gUSbY73O*NpA#Da_v(qST2VtS$R`j_gBSUZzRxhRR<BQ$1EKuk4l%c -z8kX~+@l>`jn@>&b>-I=m>uhs6KAn=p^avw^UPMP_ri$ZC_zk)VG{ci+DL>SDb+}(b -zbEUWAlVz0X!j2;CMj5M^uE(XPq<d-c1qLD!Di__h0aj4vLKN!b{BZ%5rIMJ9lJ_>% -z&)1b^qJ(|q0J)etzDq)kxVIHec<N5j7&*Xh1MdRqjcQI-9kgmf`5-yKs6Kwmr8pU% -zQDg&5O_rv~dvVNQ9xxxGEtWS7aw;g(F+<#V_^@Gsl2SzYcrNrpT2y^~6EO9pNXA$x -z)jesb<0Lts{!}9^B8oUjD5bR^iJ~p@{6SS+R!8i95!>p4X%(R~POd>cq+o>)k9HJZ -zS0Gjk>y<}n02+Fm1;%oQW;A)B$`O&;LFK+CEl`<~#0+`Nwbqk`L2?c5GJ&x^DHW!N -ziJn!0H4{-F_ZK*|9a}@wQ^nbAYN)@(2AQsvr!c1mYpR2>r%Fi3rxWqv9w+_@7pPe< -z(t!lGi*b7_4X%_>ek!Ucv#|x@R0AfBk~YD;4Nx?>g!1ulV|=_{Z9Zr(A;2!fVAKSU -z#pSY)XlQ{r%|6VKj_CRuIt%#@lFGAV-S%44Z$Dw5siA7)4lp#yQp)Y;`9L%tkH*I$ -z=J(CI0wuz6B;3eLXaY>XED2>9TRW+Ygj^zO3@&QzM<BAHJa2eEr^}<GP;OF-j_CoP -zM8kTty*NdO#jdoNid1c+ra;1%e|@SAu#-fbj&jieXRxrdM143w+k+e7mxR=Q-BBm; -z1&0lfgpDM*ajj_X+_p{5cwq<O$#Tpn*%2M|to2zbJnsmTF;jPA586ryMH*^28X9qF -zv^GLgh;>|4YW?;7Zp}V9mO`FU?9ue%n2729pIorBlBo6m!SlX`0ZV6sjk$_q$@-3^ -zELmjC-z=bIl-`_<@WE(oGMSml7m9))B7{n1B;r|W#Lt=jDeD_<j>RfR+T60L(dgb@ -zqOnb76>+hX2xdoAjh35JRl!b={)8HtwNgn-X;SMp&I!tJ+AV|=PQ(%9*_(8ymRldh -zoPzBh%_91)f{gCHQ_)WI`G*e{XfcvlVW;?TKF+^ybb1EAXlbci7&24EOq&C(S_J=K -zbTX036lMjn)FRSCa~baD@bw2nqshGB@KLmVGY0}=83%n_^u_`@)Oo-#U)0d(3}m}! -zCv_ccY=lZU+|k~xTb-(B(3(!th3wtAGd1$4qtYqTP>?&wYFviw>zIw{d+OQ)U2iJI -z20lJyXSU0&Kc%@^wJNi)O%<1kJ$aS0OUDtlM$N|(L72rQMBCU{KirqL<!a-pWpoL( -z5zsc#z2=&&o-u@vw^ATW_^g5tEaCH8R4_~Uc#HTZQ}`^R>*BUf)Yj8*eFdW?uU&T* -zZ~Y*L)R@c80<n=+AHZg+{po8Cw2Ed6Ur58H5^Ujvx(3J=KEAF2GKQ~ih$~aYa&5XH -zd2)RNoMFa6Rqm?30m{-8`R%%1lB;WgxFgR{ObT-uAy?M`6+?qY=py#+f#m8NpaM{u -zVgw)uHV?uDF9Xpn=$EsN7U8#AV{HuvR`0_4F;l5zyrE3n7ryjVk=XsBT%?8C@E|K# -zIQb^9`C$9{3g9;qP3K6>c%T(WEIH^I&srI1lm28mKj4U++nM%c9lmprb8d@vz^~uI -z%LY}C?ZD@=if*WYOh=U3?cjdh&vL*~^@@0wYI`~`=Zh8V{Ckt;WIW5Reg8be;YVHH -zVA|IHm9kMLeAN+4B^C+i#Jb-OeS7KvN?Gc)h;HKC1`wsl7cIC6OXsDorog>JYBH@{ -zFSL_Xbr6<NF*U}BV`{#8WfU$C>}I0Bnvqq{6jLo&U0@@v@|48r-%=<VN-Dz!*$lrO -zQE<hV(Wc$+h{#ri>{rxRB3z@;iXg(gm1j(;?K30n(AQ?!OA~e(+MKSgQ<IWx1^;Sl -z*{}JjQqsxNxSiH!Wu>4{Syd|~cUpLJd6jkhcyc{Ai9J=CKLBVhiYUj3QoVS65&jo7 -zymp$sKbD!m@TA%kcr?}KXp4o06Br+3Zxu`^m9dwpx2h&|Jg;<LhFvR8Sz)l_vrf0^ -zsL`p?{#eGRta4@<Uj#q>vW%|_2eKG;?RkE<ATSflu<j`Add}8(JE<KFbTsh)ssRB0 -z&gG?*jjlrgE32F9$6uX`ojUz?tmp604}0(~LVjUsW9{(#{Oj6BL+XhCd{z0L5d1l- -z@T$AqIAPcFxs4_KF`^jGc4%pBeG}7XF^#Tnt||1Vm>yiZxPZT2#Qhr6nRN^h(@&N3 -z#VY*|g}zXsc}&9K`ibM;!S^<Z>DUDWy=b79F0QZOJOa*hV0mQ~^XE@h>1Bn!uFxx& -z-^JJ}oASk^{&TC}e+wTE;5`bj!cjN|^ALkYco#0gW!Qu)KCa@F4LFXk&)Jk8sg$3` -zr516iOR$7X9Dysa0t=P$pwt1*gEw8b8|RC&l_aiz4#5Ant*w7e0rcDi_~zrSt^a<u -zwe`*C0KUHh{C-t0f8`E9`QJGGV?FJ_uK+?H0Q~k3dfMVGfZu%xF!YzTh4qDs93TGW -z&z}eQ=RJU3r}3Ag{shqXgR0)}HRU?o{Tko|*468O1o*`-0TLH5?=v>{t$c_|(_6zl -HHU0e$+Zn$= - -literal 27350 -zcmeI4X;4&Wy2qdHrW-_vf~Q+fvxtHMDuIZCglHm=fVhAxir~hgf>ENNF(W3?XpH+1 -zw}==uio$3#35sl^*F+S*+^So3t7fU1n$PoLKHXb0U#6y<|MQ++Xy|4+$n8^eeap7r -zKIil~zy3eV`@HYzCVj>4wvlMbK18wTU9&xO<R`XMCDHE#l?Umt2@lCAljLtD*%VHp -z6Rczowo=GcnJlK66y`gf!Y4%Gm<1$-#E>MXP)LkS)`eD*V$#TxIG3XQWs30+r8r5Z -zg_C89GDgvK|5-F+Vl2(^jiNcmI9lKvNArz|lx9q(#l}>MiIQplOqmi=acxsJNpBR8 -z<X4UUXCy_xPtyE6k`k*(TD*tCvSf-V1Ybb{P1_z#p*8PP#ICs%z9)&o_b#NcU!~F9 -zY?-2qWtzJ|rngqhl(bH!v=W)7m&+7cHI3pn;dxsmNlS~#ytb62oLv;MC6~fJ&7jcF -zb4V)NMw$5BIp$DW6Jn*M0dbUWe1}#CCQwPxOv;}l)3&fs+A?J})deThhx26Gjn9x{ -z%%EIjHsu?0XuYw3Hk(${W@8Ce8`o2P;Bu;)P>4qXWv!7Z1ANPhWGVq`L7_~g`7&)^ -zDN{wBOjUT)Etjc22YMKf<8gtc2t16fc>GAx#5R(GZ{zWRBx^fKZ{nDQ8zjx>AZczF -z^y(%l?YAW5og*pZ5k4pSB|nf<hvO<9lC<+4Nh_a_RDeh6FWB~!qz`+s{~1a3y%c(I -z8HFA$AnTE0vL0PW))N&ZpRT5<M?N9BVF!hrsiTnd`zYk%XEgQdX$omPL?M@tllkI# -zlFocjQ@=Y)mgXih-@HMV)@HKYxkFNG2bu5vMCKnKlDVyiq(ivg2|Ui?noW4zK>rS& -zANJDm@Y!_2vWQMw7traDG&&!;fEwgfYK(Y`j>TH(TwEwM&9Ty%`7)i0ilT2L<Ebe! -zk(v`^x(8c)zgVUR2@%x(Ryf^XBvVgPDD|YtbZgcux*k27ZpK8@owz9aDL#@8Oj=5Z -zgEHx;^d5Z$-#P?)ocuthqj)}>DN|FrOgEOu)cT%GPm-<FyHHkQ=il^y%j@=9f!7NB -zJ1AhbSWH^|9KK5W)N7N_Y_{R?lNKd3>uE-1<%~!Z`1E><#SB|(se#Y5b!$~s)#m9e -zp|95XEEb{(%vV*ll?nA4)6ZhjGoV7anXRlP>oSW8fTl{DgpufLPC-sF6Dq3&A^^2# -zV)!5vIsmn1VvEI>U}c)H8BsC;3Th6}3_>)M4bWF}fE*}5<W#d2QLIHik!mVARm0ZW -z1cZe-Q)9J4vw$-gFbeA@np6<63lFTWo`EGE&E;uUjIb_KUH##Qk($iYB1E<VZ~Jzn -zK`mMsxn+7a@II<B=`;zbC*3ySeYA6nMuV7W2IK9lMLFoFK@(#TVZ2?nwf+tZYpJTn -zit-kLx4VWdY@6R{DBB=HcJA6$yL<P(Spe+UG*Z@JkP~=&_SH`W-Nc!*VrE7A3r=ki -z64lh!*6ypXuisx+_vvR!`(zQrYN9kGng!$TtKYx>)6eX9-1&GW6M8+Qk)kK=177|9 -zPaSkN5kHQ86@X@51sKEVjww6%px!_{P%c7kIJW8<pU}W|7=tep?Qy3bi+G?8^6JO1 -z+Qn%0rdC9v9d3-vc%OfM;8z^V>Yb1%AU1a1eB97LQ>h^W#I11!-+_i`NT?bRg=Nx$ -z1<56AOCy+2)p-yg2;IRA>K(Xr;8IhX+7mMkk#YWll9JN(8`iOgY5*~&MaO(Rh>!6O -zT)NcMba@d@Y*HB}2r$E2Yk{|^tZXUf5o*SETplet<`Wl2A>XB@%a<=-**k^_3IHj* -zbp57H8_O$JAe7Yr@;SIotaB3D@WA)&x8LrC52~)daAIA=hO&+2Pkvc}z8Vu-EPjH~ -z6m8FfcDyFwUAc0l!H0A@b!Qf{2r@*hsCe?US3Mvu&c#)<qM+h@@I6-V%GIll7v8{K -ze3c18AtXcair!}{RV&EqK*U81XjhN%px)JMXp8Y}1oc+t_Y&QC_J9>sKia_u2jGG4 -zs^Gi!4JR5jb!Im6hfjb0{6&uHQ{ciVrxC@D%);_rwc$a+3rjEw;HE0snDsi{oxT?g -zsMb-;$ftFm3+pz)`PldD>amH@ex0V&u7c8R^5=ULoHE3JLn~`G8)(W4v~=Xep%3-6 -zmv7+A0^TK&mu>1P)>ZKM|Ar-#kZxR>-eMR&uL%p^247z=>C|Q`qBr{E^|!8_u<`u4 -zGhZ#9G|30HR?Mxi4lf}-y%6yJWVK!lC)P2al34~CR}eDZ$x|neeR=rc+}X2Z0|NsB -zj1Dn}yd%X1rdGD_4|szo8xFIb=wm0|0Ow=A#*639d@b<4IGC6aKW9$L!W6XF0Fi!h -zT~|Z9zJhxPG2aWML6tFr3@FsQ>_~ieyDI8kJTLH$9#-%K90Q`+8SS?$IL!^<gN0iK -zAYw#a7K8(GQQ#(Y1s~KqbNa-wBM!WI3Y+c!d4Y<I;@Wz>-p?H5YA>S6%-62k1>y5U -zI^UTyr%oL^^5qu?-%W^*U)Wzh8)9sL!yE1K<L8tL0<IK%zftRgM0=Y&st4nqgnC~d -zV!SzS=u%SVB_&N$L^K!-gnvr2%LoDc`r6y?_hhQHu#RSO;&T%k*Di|CJ${t&65Xqp -zlA4r+dU={Lcp6uHPkvspA~RT-!r3Ag0=BoexAk<WOftwY4Ic2m;miWO!v_y0zUf}R -z)YJvQTf1R{C`h0D^7GT)XU`w3%$%$+nk^CpY`fpq)7|-<8Vh48O*E6$8#ruSYgF(! -z@rlgh5*W4@HoW!VgL;q;c+Z|cgvZ?mqP^v`we@s$bs>f&yV*zjY{o5i(q9-%=fD%8 -z3-vtVVY0?}WiYNyy$8&P_Crpv%^TagJ32b=-NdVra@mh#Jo0zreD=KT%q(sIAs^2r -zF&o-cUjD?Uo*j=7e_WXk84cZnuO)l*d=`X9gIhd=u08Q3#=q@0bm4of9#7Wnc+Vd^ -zU@k}N>$`tD=QrIQot^jYwcJt>B1kW8@DRF;cl^lVLkANR<LA8XM!XcEUWu4XmUHO- -z%)ZxOJy7=D=h$HDwzS;3o;7*_iPEmPjA+UWMLm&OkeA&%Us6)Cn2B#H+lbKkg(LU5 -zhz+NDNGxr_`R=ydym_m6`RMs{q`NSPkDU)S%TXRS65m8k;HIUfCM74cdLndz_mm^o -z#k$DL?QPxN-JP9`*L?l@>e2I=NS8K{&z4!B-WTsCycz$tJL|G>1>Pnlbe{_OY>{gd -z5PXVp@3yquymkHYV-@!0Y0O?%K&9e4&ZC;h%WlMj?<wjbHh9>8dTd>AwHgfRD{o`k -zfuf+DeXqN#^X@%?mo-&QhDMF1a{*M;J9YGkZP;+9UYrQsQVw0t%bfV&d(4MnmfPf@ -zDH$1=nVH!c*%=wx+1bmo-WU1Wp4Ue6jHQAlP6Zngx+jrYjvi7fK6iL2DXB2-+EUKT -z8!I^R!S|HVXtfsz3a9J;s^)>bC`Pltu@N$!Bk_5zS>Sx7N@h_;H5QNMd(j6zlvjE; -zn4=!t93sQSx+RTFXvgDvnJYfGp_`I~yllf0&ezM<WjZvjqwMvcSSeOJb#u_6!%H!y -zB}g<E&Y%7I^r>UE#OEQiFrLWE8*Q=i?AcF_ynK7~Iix>{hdve(bmafeug{<R`XuAA -zdY*~`;Mp>Zg2(DTcql@a1q>P&KzJcfZYRC-)v04&a%N#Xccbn+N8-a0pFOiU)Kd)X -zL4+}GwyhHQOj^9yvwHA7c0Q3=5W2`L9J;KVy}`ihBVm}205dDiCm?Wkoa<aor0G;q -z6d*RZUd9S3Mm2<n3*QTay7i=C&>XwDB2=1A=i_4x2nY-ejE#+pQ}~4Mab`hmC>7rT -zx)*&@RL+DP1jBU9CKUZnN(U{Y&T}R{sHY4Y0|(uedX;nWVYmkE_T#iOpc%raIn;x7 -z*|@IOZEtTKXZ;3oDjS@NhOdL~iO@wo+COv=BJJ%x<C6hBP`PZzlA1ypfzbUAQSrIr -ziJ5rUI3++Alp$WQ#eJ44c+Xu6Qt<Wkc$;sssFZ@A-hu16;Jpxd%=aqB+#wViZkHLW -z0u%(k0ioO1!v$%FcjBWTwAsw}pA4;o)x&h7!~1-EYaHt$KD_$vXu`O_>+JM$eAtCV -z75}4yj(zWb4^MUPVj;+Wh*zJXV34D#!Xlr*>*~@BA6K=RHUXg?7OA>By6)a>Q85c2 -zC!G-_HWy?*VO-3_mubYl_|R}cAz+`PUPmY7(-I#5#qu{>mqS;~#NXGBeu{vKaXGW_ -zD$sQ;@d5C*g4e}se9ZS)OMJ*NnGc2YA+a!C^JC^4!&jtUaVR4PiZwLk<-2!bTr~W$ -z`W0Vf45#xYLr;&g1bOe~P0&4Bjb*AaobXk@6?Xu!1c}g9mLS20;^tLfWDMsc$`NaP -zSc1F(^&YL(9N!e79^_N-inXPmo(!D$T6lf=(WBq4UR^Bd$8P~ag`tVQ=TQynJ!b0` -z7l&xd|B#`VDY3zHz+0m&K4j>0+<R$;dTiV^Yl_0Ore6@_iO_|5MMb&V;`1YYGph&r -zii?Yjii!#`xl{RV4HfP`{9E9F%}(_I7|Jtvm236GUvAV#5WVk$2L-K6IO-FP(;JAU -zDzU-NXKVR9gCD2sjrO#dCfP&Rj%Sl_v}YQh<FRhNoHI*Np%V|i57@?<h!i-WNPI4M -z4nXfCf<Pp`0enSyxnWie#%R9wJ4)kY!C}sdA!OA+HplD2JdAf<{@FWGh=a#Xrx3yH -z%@sieuqodSmva+VG`(YDWjT5%J`vRUIL-@0p8fvAWNV&NE4RG@Zxq#xCubEnM-8`V -zVq-4uoDCCY<FFfEm9+*HpPSY{R~Lq{8+ggSlSA|SvkXSf<^1BUC3A6Uy<`n@8^49C -ztXwCcjf3$<bV`Z8Kf_HwSh&J4lX6RWEWcPA5yg-PnUr7Yh7JT2PN$VR6$*af0+`Fv -zsr*^MkaDQp37Qax4;FqPZp5oR)%d&(fD+2mRjcxB0V`=|5m0<$xLQ$>eZ2Epz<L&+ -zix^COx!J#w@A+Ua>>;uiVczD2E064wL}5kVr~*bt$M<UTi@Y+*js#Ewo}O1WMslzh -zj^STgg%;&$mk;t4iYc!b#2LXQ5f~VNxs2DQg@t_it2n`E5|HJCdVZ@oLyti3|Kmdd -zRj7<@A({l_u}!Q>!p<n?y)e}n+8{)^g@_G{vf83O3uElCuZqLeTGY=`8sJNV+F5$G -zSsj01P}8M>9(-6#7}`g@xK~dmP3s5kinMjte1NeKzgjMxQT*j1Jr97^&`ZoMwOraO -zi!hoS)%qDwvxQ$j#@F4~3cOa}|AzvoVXtkk*iq;69{!wJ&F<R#tn|p@wIz|hf1v>K -zp*LtDMV3|6?Oc+Vhpz*BYJdNo@)t|~JD$(w=_n7|11mSzRp4i9k=XxU#m?H@=x;(l -zdGGF>+`ovvR8dt{iT?NK&#eU@`hVc<<x2mr+}|qtoMB0-EzHlrXTxAckz4!q%lq{! -zs%m%OnE5y+x^hPi&aW?4`jy<@&;1?S_kc|_{@Gf<=9;1cJV)aZMp?9!R!|;AQaSCR -zYT8b_DIU)?*iuLN*q`p<{XD%6!#nrjo!jw_3cMqeKB65|Cf-kM0~~|q)V6L*(mb(A -z7m$v>Z}#VxFaLKY7E{j>{j=fa%YS_L^5s9TW3Bv8L{Dm*@Bio;(ZauBdxLXZ^i})< -z?=aEBUgx&*Z-_d+!UXY;JIiXz#C7<$o%$_Xi2kRAC~z(Q%FKV^NB*UXZrI2B>BjFd -h=Y>|w|C6Zk68;X)R-AjChtJK+<qqA3JjSNqzW{|XuQ>n! - --- -2.39.5 - diff --git a/config/uefitool/patches/0001-common-filesystem-define-ACCESSPERMS-if-undefined.patch b/config/uefitool/patches/0001-common-filesystem-define-ACCESSPERMS-if-undefined.patch deleted file mode 100644 index 8241cebe..00000000 --- a/config/uefitool/patches/0001-common-filesystem-define-ACCESSPERMS-if-undefined.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 75437e2253fc70f4e3368c9d030415ce4ae52fa6 Mon Sep 17 00:00:00 2001 -From: Leah Rowe <info@minifree.org> -Date: Sun, 28 Jul 2024 16:04:30 +0100 -Subject: [PATCH 1/1] common/filesystem: define ACCESSPERMS if undefined - -Normally defined in sys/stat.h on various libc implementations, -but musl libc doesn't seem to have it, leading to this build -issue: - -common/filesystem.cpp:86:38: error: 'ACCESSPERMS' was not declared in this scope - 86 | return (mkdir(dir.toLocal8Bit(), ACCESSPERMS) == 0); - -ACCESSPERMS is typically defined as the result of bitwise OR: -S_IRWXU | S_IRWXG | S_IRWXO - -This creates the chmod permission 0777, used on the mkdir() call. - -ACCESSPERMS is supported on GNU C Library, for compatibility with -BSD libc implementations; the latter also implements ALLPERMS -and DEFFILEMODE, which don't seem to be used by uefitool regardless. - -Do not define it on the Windows builds; only do it for the others, -such as Linux. - -Signed-off-by: Leah Rowe <info@minifree.org> ---- - common/filesystem.cpp | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/common/filesystem.cpp b/common/filesystem.cpp -index b2b8d65..af5e537 100644 ---- a/common/filesystem.cpp -+++ b/common/filesystem.cpp -@@ -75,6 +75,12 @@ UString getAbsPath(const UString & path) - #else - #include <unistd.h> - #include <stdlib.h> -+ -+/* musl libc does not define ACCESSPERMS */ -+#ifndef ACCESSPERMS -+#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO) /* chmod permission: 0777 */ -+#endif -+ - bool isExistOnFs(const UString & path) - { - struct stat buf; -@@ -103,4 +109,4 @@ UString getAbsPath(const UString & path) { - return UString(abs); - return path; - } --#endif -\ No newline at end of file -+#endif --- -2.39.2 - diff --git a/config/uefitool/target.cfg b/config/uefitool/target.cfg index ce1ff3af..9dfb2543 100644 --- a/config/uefitool/target.cfg +++ b/config/uefitool/target.cfg @@ -1,4 +1,4 @@ # SPDX-License-Identifier: GPL-3.0-or-later cmakedir="UEFIExtract" -btype="cmake" +buildtype="cmake" diff --git a/config/vendor/3050micro/pkg.cfg b/config/vendor/3050micro/pkg.cfg index 497a27a6..45ba55d1 100644 --- a/config/vendor/3050micro/pkg.cfg +++ b/config/vendor/3050micro/pkg.cfg @@ -3,6 +3,7 @@ DL_hash="976bbb1e625f64df276d8343757d910c88b8a781f953bc2c41a7dd15184ec70d55f8081de2a0aaa83cddb8e73bdc2df6288fde6e0897e4928c48ca4bb30bea2d" DL_url="https://download.asrock.com/BIOS/1151/H110M-DGS(7.30)ROM.zip" DL_url_bkup="https://web.archive.org/web/20230822134231/https://download.asrock.com/BIOS/1151/H110M-DGS(7.30)ROM.zip" +ME_bin_hash="3231ddb79be81f0a631926fc0e533ee7bce2d10032d7d45e56ae8a9894bcf9b4ca0b4f6fd3bc4daa185a464e771e0bf3d1b771a3180739b6896cec911758145b" # for Fsp.fd, we don't rely on a download. Instead, # we copy from coreboot.git. The file is defined @@ -10,6 +11,8 @@ DL_url_bkup="https://web.archive.org/web/20230822134231/https://download.asrock. # and inserted to CBFS with names CONFIG_FSP_S_CBFS and CONFIG_FSP_M_CBFS # FSPFD_hash="c500166a8553a80ba8db8b8185a896e0ae1562ea3c139e07acd9e7937baf8110ba743cc79b69db09a5f39c076d1d22bc45045223975f46aea2034ba82a6b0360" +FSPM_bin_hash="b15712a53f4d16f36b384beb6dbb716c0b0924751d6ca1e229cd4b8c03aef9eda025c235af247e53dac94d94b79559623974d0d21c7f97e125d8ecc2c86bf03f" +FSPS_bin_hash="64ac9f93e43efddc35931e168d6594c2b39fb5a0da863d22f2d000d7eacc0692b07ce89389cbb1c5b95ff9b2bba508c538e37d0e644fcab7b2cada773da65ce6" # We will use deguard to disable the Intel Boot Guard: ME11bootguard="y" diff --git a/config/vendor/e6400/pkg.cfg b/config/vendor/e6400/pkg.cfg index c5962480..21d1e69d 100644 --- a/config/vendor/e6400/pkg.cfg +++ b/config/vendor/e6400/pkg.cfg @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-3.0-or-later E6400_VGA_DL_hash="6217d5fce2291d15bb0649fd2faaeb78e4c48962b07a2bea6af60466bfdc5f233af0d077c2c6e71dd96047bdbb1f612324cef0a5e728ba9a9ec5c69a4022cd8d" +E6400_VGA_bin_hash="24fb3d934afca13bd2b43ec958aa2f69654e0f8ee2dd6ca910350a738dea22cfd7f69626093e047566b27c0dd9f3595beeacaad7812fc7f6a13970e49e7b60f3" E6400_VGA_DL_url="https://dl.dell.com/FOLDER01530530M/1/E6400A34.exe" E6400_VGA_DL_url_bkup="https://web.archive.org/web/20230506014903/https://dl.dell.com/FOLDER01530530M/1/E6400A34.exe" E6400_VGA_offset="274451" diff --git a/config/vendor/haswell/pkg.cfg b/config/vendor/haswell/pkg.cfg index e9722a11..401736b5 100644 --- a/config/vendor/haswell/pkg.cfg +++ b/config/vendor/haswell/pkg.cfg @@ -1,5 +1,6 @@ # SPDX-License-Identifier: GPL-3.0-or-later DL_hash="f3d79aec805c8b0094a4081be76b3a22d329c479ad18210449b7acc3236ccfc4a2103eaa7c5b79a4872bfd699eede047efd46dfb06dc8f47e3216fc254612998" +ME_bin_hash="8629caded7efd2aa234cc378b7118f0d300402537b8aff6aa3d9b895c6b14590a79cb02d1db7a91de36d36f5612386fc99ddcb57c9d78b1e75b5864e68763de1" DL_url="https://download.lenovo.com/pccbbs/mobiles/glrg22ww.exe" DL_url_bkup="https://web.archive.org/web/20211120031520/https://download.lenovo.com/pccbbs/mobiles/glrg22ww.exe" diff --git a/config/vendor/hp2170p/pkg.cfg b/config/vendor/hp2170p/pkg.cfg index 77cbd08b..192bcf41 100644 --- a/config/vendor/hp2170p/pkg.cfg +++ b/config/vendor/hp2170p/pkg.cfg @@ -1,8 +1,11 @@ # SPDX-License-Identifier: GPL-3.0-or-later DL_hash="4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c" +ME_bin_hash="672240d231a723ea7fac112262fdc28884c43a5be9b231dfae838c7a1edc86140da38983079d23ab5ac8e6c74611b65da4872ecbab3ec979c680d3f526eb91ed" DL_url="https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe" DL_url_bkup="https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe" EC_hash="940e533b6a276c13a6e46a93795ca84b19877b05e82c0c1795b7fea9cbea63c28e606ef994352fc77c4fdfb2e0c31c5edeefa98b989e1990364dfc6417b25460" EC_url="https://ftp.hp.com/pub/softpaq/sp96001-96500/sp96088.exe" EC_url_bkup="https://web.archive.org/web/20230909164345/https://ftp.hp.com/pub/softpaq/sp96001-96500/sp96088.exe" +EC_FW1_hash="44a27359e8e2ecfae910a754617d5ee947d6bba976f2eb53114a97c71b64813da7ab4223749706c9bbcaf1e752c190834ee3b41c297c191b3cac200814e02938" +EC_FW2_hash="09c5b8bab6f258a0303ac502b4900cd4277bd6c43bfd2ef0030df6e918ef3300d04d2979373f8b05f77d1eae1c27ebd01856426b8eed6f215e1fcaed68e0977e" diff --git a/config/vendor/hp2560p/pkg.cfg b/config/vendor/hp2560p/pkg.cfg index f7c7cd14..52b9394d 100644 --- a/config/vendor/hp2560p/pkg.cfg +++ b/config/vendor/hp2560p/pkg.cfg @@ -1,8 +1,11 @@ # SPDX-License-Identifier: GPL-3.0-or-later DL_hash="81c9917938c4a2a4f128c976250451931efd0f25b51ff34f058ddacb8eec27272691371864a683ec7abcb924fea32592d061584c7b2571a5d3e84eb870281cc3" +ME_bin_hash="6a7eb169a01581682a2ecf4b284c1689eb7746cc80aa16ea1ce35d1a1c47a92664b5240defd62535e9707c3f3d42abfb62da3254b97e569de178099f7683c858" DL_url="https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/83rf46ww.exe" DL_url_bkup="https://web.archive.org/web/20220202201637/https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/83rf46ww.exe" EC_hash="a602cc7627c569bc423a5857cf506fbc3bcd68cb6b43a7c1b99d12a569b4107c412748cf49605ef4d5b930eb14b6815c4d1b1dc20145fe9d707e445fc201cea2" EC_url="https://ftp.hp.com/pub/softpaq/sp85501-86000/sp85526.exe" EC_url_bkup="https://web.archive.org/web/20230416125725/https://ftp.hp.com/pub/softpaq/sp85501-86000/sp85526.exe" +EC_FW1_hash="44a27359e8e2ecfae910a754617d5ee947d6bba976f2eb53114a97c71b64813da7ab4223749706c9bbcaf1e752c190834ee3b41c297c191b3cac200814e02938" +EC_FW2_hash="a05c1eb5433f43e035327d0ae74e9dbd09ecb45f00be656e477ebd5b505ca21bae820e90c29483c4c641591fdd2aebb6b6ea0ecfb879b506bc1a657c01a21bd2" diff --git a/config/vendor/hp2570p/pkg.cfg b/config/vendor/hp2570p/pkg.cfg index 9f1a85aa..1df49d73 100644 --- a/config/vendor/hp2570p/pkg.cfg +++ b/config/vendor/hp2570p/pkg.cfg @@ -1,8 +1,11 @@ # SPDX-License-Identifier: GPL-3.0-or-later DL_hash="4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c" +ME_bin_hash="672240d231a723ea7fac112262fdc28884c43a5be9b231dfae838c7a1edc86140da38983079d23ab5ac8e6c74611b65da4872ecbab3ec979c680d3f526eb91ed" DL_url="https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe" DL_url_bkup="https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe" EC_hash="61ed284bdf938c5f36ad3267263fb3963a6608339425bc41aaef3ab0cd98f07c998d816b0233735ca35dc6cb771257da3f09a40d5cfc96bb6388b4366348275e" EC_url="https://ftp.hp.com/pub/softpaq/sp96001-96500/sp96085.exe" EC_url_bkup="https://web.archive.org/web/20230610174558/https://ftp.hp.com/pub/softpaq/sp96001-96500/sp96085.exe" +EC_FW1_hash="44a27359e8e2ecfae910a754617d5ee947d6bba976f2eb53114a97c71b64813da7ab4223749706c9bbcaf1e752c190834ee3b41c297c191b3cac200814e02938" +EC_FW2_hash="d4afcad4960253af674f1dcd3a5a044444b7fcfbaa2a993f976997966b579a80d8a1c58b0ed0a47d862312ad81e433834bb1992c79f69d858d8c00e8cd62e1fb" diff --git a/config/vendor/hp8200sff/pkg.cfg b/config/vendor/hp8200sff/pkg.cfg index 9d0a34de..dba0b354 100644 --- a/config/vendor/hp8200sff/pkg.cfg +++ b/config/vendor/hp8200sff/pkg.cfg @@ -1,5 +1,6 @@ # SPDX-License-Identifier: GPL-3.0-or-later DL_hash="8fcb691bf84dc1feefc3c84f7cc59eadaabb200477bb3ecba1b050f23f133b0a8c2539015a523f676544c2dff64599bcba7e844e8c31757b90d70bb4485b5664" +ME_bin_hash="732954bd288a7d7de3b779032476e2bd5a6f64b6971ff3053434d49ab55fd514db9f224e83883215646e50eecf4ecbdb69a65d5957d241e1146424053dd3ba91" DL_url="https://ftp.ext.hp.com/pub/softpaq/sp96001-96500/sp96026.exe" DL_url_bkup="https://web.archive.org/web/20220708171920/https://ftp.ext.hp.com/pub/softpaq/sp96001-96500/sp96026.exe" diff --git a/config/vendor/hp820g2/pkg.cfg b/config/vendor/hp820g2/pkg.cfg index 89303ad3..4a2fdbb3 100644 --- a/config/vendor/hp820g2/pkg.cfg +++ b/config/vendor/hp820g2/pkg.cfg @@ -1,11 +1,14 @@ # SPDX-License-Identifier: GPL-3.0-or-later DL_hash="1ac05a3e4f46426eeb77f89c4aca25ed1ad64479d8fcba6a3ab63a944512bacbc5d148cc7b9c4ff4b8c90a1fb1de4776e46f14aca8021900e0df37246aa0b717" +ME_bin_hash="ca754e2fd09eb48bc14b2d1b19d3fa3ed1df2297cff2b7d9b68e9002812e745a59a8ca921f26834ae84c0076c64d8dfab75ce113b50e4badafbfb8ab6c14ad2b" DL_url="https://download.lenovo.com/pccbbs/mobiles/n10rg50w.exe" DL_url_bkup="https://download.lenovo.com/pccbbs/mobiles/n10rg50w.exe" MRC_url="https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_13904.77.0_samus_recovery_stable-channel_mp-v3.bin.zip" MRC_url_bkup="https://web.archive.org/web/20220310155922/https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_13904.77.0_samus_recovery_stable-channel_mp-v3.bin.zip" MRC_hash="3ff1599c52539f0707a07a8664a84ce51cd3fed1569df4bb7aa6722fc8dec0af1754250333b6ca1a9794d970a4de7b29a5cf2499f5b61e4c3eab64d1314aaea9" MRC_board="samus" -MRC_refcode_cbtree="coreboot413" +MRC_refcode_cbtree="fam15h" MRC_refcode_gbe="131253" +MRC_bin_hash="cade33e8664fb92ebb6ce0c92b572f587f047b2832babb6bd30eb221dba76b08d578e189ba1f89cdb4c956aecd092ebd7443adbc30cf3800452b906967cedc11" +REF_bin_hash="7efa3bdc48d548924b4c57bbadc99a7add91ac8c5eb7f8f98874c2f8583ca0e71e99997186aaf2714c8ca56593e12c80c1aa9e727a462ef9d2c36963042e7d56" diff --git a/config/vendor/hp8460pintel/pkg.cfg b/config/vendor/hp8460pintel/pkg.cfg index 1e1da34e..1140e5c9 100644 --- a/config/vendor/hp8460pintel/pkg.cfg +++ b/config/vendor/hp8460pintel/pkg.cfg @@ -1,8 +1,11 @@ # SPDX-License-Identifier: GPL-3.0-or-later DL_hash="81c9917938c4a2a4f128c976250451931efd0f25b51ff34f058ddacb8eec27272691371864a683ec7abcb924fea32592d061584c7b2571a5d3e84eb870281cc3" +ME_bin_hash="6a7eb169a01581682a2ecf4b284c1689eb7746cc80aa16ea1ce35d1a1c47a92664b5240defd62535e9707c3f3d42abfb62da3254b97e569de178099f7683c858" DL_url="https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/83rf46ww.exe" DL_url_bkup="https://web.archive.org/web/20220202201637/https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/83rf46ww.exe" EC_hash="9be5511d7ba07a376583cbd0b7fa4d7dff87ebc94b78d489fd62a14cb7f61eac99670e6a10ce374fe8e3c4bdafabbd1edce7774c3a482c15c2d4207b74ea49ed" EC_url="https://ftp.hp.com/pub/softpaq/sp85501-86000/sp85528.exe" EC_url_bkup="https://web.archive.org/web/20211231004901/https://ftp.ext.hp.com/pub/softpaq/sp85501-86000/sp85528.exe" +EC_FW1_hash="44a27359e8e2ecfae910a754617d5ee947d6bba976f2eb53114a97c71b64813da7ab4223749706c9bbcaf1e752c190834ee3b41c297c191b3cac200814e02938" +EC_FW2_hash="8eba6e0087e42a2f552de3367639b376501d31e8ae1629846496c3eb46ed7d2f9b46531dc245cc2ce5f4a91047fe84a37b350864cdc37530148f456818c0133e" diff --git a/config/vendor/hp8470pintel/pkg.cfg b/config/vendor/hp8470pintel/pkg.cfg index 1170f56b..db0b6e69 100644 --- a/config/vendor/hp8470pintel/pkg.cfg +++ b/config/vendor/hp8470pintel/pkg.cfg @@ -1,8 +1,11 @@ # SPDX-License-Identifier: GPL-3.0-or-later DL_hash="4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c" +ME_bin_hash="672240d231a723ea7fac112262fdc28884c43a5be9b231dfae838c7a1edc86140da38983079d23ab5ac8e6c74611b65da4872ecbab3ec979c680d3f526eb91ed" DL_url="https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe" DL_url_bkup="https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe" EC_hash="b95c9cf909ed537fb448e2be69eddcb57459efbaf0a979a73cd2bce90a7014b110f4dbbeecfd596c072636396b8f20c229c59ffe34e45500ce9edb000c6ccaf9" EC_url="https://ftp.hp.com/pub/softpaq/sp77501-78000/sp77818.exe" EC_url_bkup="https://web.archive.org/web/20230909173821/https://ftp.hp.com/pub/softpaq/sp77501-78000/sp77818.exe" +EC_FW1_hash="44a27359e8e2ecfae910a754617d5ee947d6bba976f2eb53114a97c71b64813da7ab4223749706c9bbcaf1e752c190834ee3b41c297c191b3cac200814e02938" +EC_FW2_hash="d7a44b682b1dae7f3cbcc34646b3dd80895a7e2132ab0292b3d42ccf54a9fa447773f7e8e914b0c427adaaad8aa54224e7e146dc72280cf04093956727f41a03" diff --git a/config/vendor/hp8560w/pkg.cfg b/config/vendor/hp8560w/pkg.cfg index 629d96d1..224b448c 100644 --- a/config/vendor/hp8560w/pkg.cfg +++ b/config/vendor/hp8560w/pkg.cfg @@ -1,8 +1,11 @@ # SPDX-License-Identifier: GPL-3.0-or-later DL_hash="81c9917938c4a2a4f128c976250451931efd0f25b51ff34f058ddacb8eec27272691371864a683ec7abcb924fea32592d061584c7b2571a5d3e84eb870281cc3" +ME_bin_hash="6a7eb169a01581682a2ecf4b284c1689eb7746cc80aa16ea1ce35d1a1c47a92664b5240defd62535e9707c3f3d42abfb62da3254b97e569de178099f7683c858" DL_url="https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/83rf46ww.exe" DL_url_bkup="https://web.archive.org/web/20220202201637/https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/83rf46ww.exe" EC_hash="8e2bc5dca1a1cf0cfc1ac9df74eb6fda333f8ae560019f8182a49d3a716d72938f6cde4aa5ee56942def08207d3ef95706653bd238768fd029da43e9a4fbcc67" EC_url="https://ftp.hp.com/pub/softpaq/sp78001-78500/sp78085.exe" EC_url_bkup="https://web.archive.org/web/20230402085323/https://ftp.hp.com/pub/softpaq/sp78001-78500/sp78085.exe" +EC_FW1_hash="44a27359e8e2ecfae910a754617d5ee947d6bba976f2eb53114a97c71b64813da7ab4223749706c9bbcaf1e752c190834ee3b41c297c191b3cac200814e02938" +EC_FW2_hash="82882406167e7df8ff90d2ea8d93adee59c3e8eb034b6dfcd0ff70cadf8ab3e5acee7262dd344560e118d00b010ed13c18539b042dae0b4b4e6a2c09402aadc4" diff --git a/config/vendor/hp9470m/pkg.cfg b/config/vendor/hp9470m/pkg.cfg index 9cdb8143..46f1349b 100644 --- a/config/vendor/hp9470m/pkg.cfg +++ b/config/vendor/hp9470m/pkg.cfg @@ -1,8 +1,11 @@ # SPDX-License-Identifier: GPL-3.0-or-later DL_hash="4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c" +ME_bin_hash="672240d231a723ea7fac112262fdc28884c43a5be9b231dfae838c7a1edc86140da38983079d23ab5ac8e6c74611b65da4872ecbab3ec979c680d3f526eb91ed" DL_url="https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe" DL_url_bkup="https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe" EC_hash="563422bf5420da18b89439f28a38ea28a175f0ad3588f0f5ea39b08dfdd14c8d513cbf11c2125ec3869fc3b7222c7dc3d111415185ea9b73f41410b1b57f13bd" EC_url="https://ftp.hp.com/pub/softpaq/sp96001-96500/sp96090.exe" EC_url_bkup="http://web.archive.org/web/20220504072602/https://ftp.ext.hp.com/pub/softpaq/sp96001-96500/sp96090.exe" +EC_FW1_hash="44a27359e8e2ecfae910a754617d5ee947d6bba976f2eb53114a97c71b64813da7ab4223749706c9bbcaf1e752c190834ee3b41c297c191b3cac200814e02938" +EC_FW2_hash="0d7b446fda5e5cde9570b6df15e4c0ad6b9fad6b425f498669d91bccb4a4bb9a8d22d20f4adb9f116e38df6db3519aae14a6d8fd8cb3075c93ce7c5ae0d8eacb" diff --git a/config/vendor/hppro3500series/pkg.cfg b/config/vendor/hppro3500series/pkg.cfg new file mode 100644 index 00000000..71d41033 --- /dev/null +++ b/config/vendor/hppro3500series/pkg.cfg @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +DL_hash="949effcb8cb75d8b097854c47d1ad84ec37a9a5038803afb05900da8cf1288b278720c8ac5f3f88712e4adb757e71e4b1937250a3e49bd2586b975f257b7df04" +ME_bin_hash="b4f95434324dd167701840e2e1813b1bbcf78edff845a445f2138b8f18fd44b201cc9377df6dd72a359cbf2fe9dcd9a558b31a966a9f9ccee3c0cc4a03144cbf" +DL_url="https://ftp.hp.com/pub/softpaq/sp70001-70500/sp70375.exe" +DL_url_bkup="https://web.archive.org/web/20240327125043/https://ftp.hp.com/pub/softpaq/sp70001-70500/sp70375.exe" diff --git a/config/vendor/ivybridge/pkg.cfg b/config/vendor/ivybridge/pkg.cfg index d9b2200b..3b3d1091 100644 --- a/config/vendor/ivybridge/pkg.cfg +++ b/config/vendor/ivybridge/pkg.cfg @@ -1,5 +1,6 @@ # SPDX-License-Identifier: GPL-3.0-or-later DL_hash="4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c" +ME_bin_hash="672240d231a723ea7fac112262fdc28884c43a5be9b231dfae838c7a1edc86140da38983079d23ab5ac8e6c74611b65da4872ecbab3ec979c680d3f526eb91ed" DL_url="https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe" DL_url_bkup="https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe" diff --git a/config/vendor/sandybridge/pkg.cfg b/config/vendor/sandybridge/pkg.cfg index bb022043..c243413f 100644 --- a/config/vendor/sandybridge/pkg.cfg +++ b/config/vendor/sandybridge/pkg.cfg @@ -1,5 +1,6 @@ # SPDX-License-Identifier: GPL-3.0-or-later DL_hash="81c9917938c4a2a4f128c976250451931efd0f25b51ff34f058ddacb8eec27272691371864a683ec7abcb924fea32592d061584c7b2571a5d3e84eb870281cc3" +ME_bin_hash="6a7eb169a01581682a2ecf4b284c1689eb7746cc80aa16ea1ce35d1a1c47a92664b5240defd62535e9707c3f3d42abfb62da3254b97e569de178099f7683c858" DL_url="https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/83rf46ww.exe" DL_url_bkup="https://web.archive.org/web/20220202201637/https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/83rf46ww.exe" diff --git a/config/vendor/t1650/pkg.cfg b/config/vendor/t1650/pkg.cfg index f994b942..47303884 100644 --- a/config/vendor/t1650/pkg.cfg +++ b/config/vendor/t1650/pkg.cfg @@ -1,8 +1,10 @@ # SPDX-License-Identifier: GPL-3.0-or-later DL_hash="4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c" +ME_bin_hash="672240d231a723ea7fac112262fdc28884c43a5be9b231dfae838c7a1edc86140da38983079d23ab5ac8e6c74611b65da4872ecbab3ec979c680d3f526eb91ed" DL_url="https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe" DL_url_bkup="https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe" SCH5545EC_DL_url="https://dl.dell.com/FOLDER05065992M/1/T1650A28.exe" SCH5545EC_DL_url_bkup="https://web.archive.org/web/20230811151654/https://dl.dell.com/FOLDER05065992M/1/T1650A28.exe" SCH5545EC_DL_hash="18261d0f7f27e9de3b0b5a25019b9a934ef1a61cd3f0140e34f38553695e91e671e227a8fa962774edceab5c7804d13ed9fe1c518c5643c7c8f15632f903a6c4" +SCH5545EC_bin_hash="51d9540f73c60ba5e245a8a98c2215d477d3bad9759f1dae94a4fe63652421d8552406817c2482dd6ee3bb55d942bbc0315eab54095544d7956e73112e2d8483" diff --git a/config/vendor/t1700/pkg.cfg b/config/vendor/t1700/pkg.cfg new file mode 100644 index 00000000..979dd7bf --- /dev/null +++ b/config/vendor/t1700/pkg.cfg @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +DL_hash="f3d79aec805c8b0094a4081be76b3a22d329c479ad18210449b7acc3236ccfc4a2103eaa7c5b79a4872bfd699eede047efd46dfb06dc8f47e3216fc254612998" +ME_bin_hash="8629caded7efd2aa234cc378b7118f0d300402537b8aff6aa3d9b895c6b14590a79cb02d1db7a91de36d36f5612386fc99ddcb57c9d78b1e75b5864e68763de1" +DL_url="https://download.lenovo.com/pccbbs/mobiles/glrg22ww.exe" +DL_url_bkup="https://web.archive.org/web/20211120031520/https://download.lenovo.com/pccbbs/mobiles/glrg22ww.exe" +MRC_url="https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_13904.77.0_samus_recovery_stable-channel_mp-v3.bin.zip" +MRC_url_bkup="https://web.archive.org/web/20220310155922/https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_13904.77.0_samus_recovery_stable-channel_mp-v3.bin.zip" +MRC_hash="3ff1599c52539f0707a07a8664a84ce51cd3fed1569df4bb7aa6722fc8dec0af1754250333b6ca1a9794d970a4de7b29a5cf2499f5b61e4c3eab64d1314aaea9" +MRC_bin_hash="cade33e8664fb92ebb6ce0c92b572f587f047b2832babb6bd30eb221dba76b08d578e189ba1f89cdb4c956aecd092ebd7443adbc30cf3800452b906967cedc11" +MRC_board="samus" diff --git a/config/vendor/t480/pkg.cfg b/config/vendor/t480/pkg.cfg index 3071f83d..90c31b75 100644 --- a/config/vendor/t480/pkg.cfg +++ b/config/vendor/t480/pkg.cfg @@ -2,6 +2,7 @@ # ME firmware (deguard will be used) DL_hash="df735a24242792bf4150f30bf0bd4fdbdc0fb6bf0f897ea533df32567be8e084006d692fb6351677f8cc976878c5018667901dbd407b0a77805754f7c101497c" +ME_bin_hash="fad8bcd2ea2ae9d1a2a1e223f499f15ada0787feb600eab3201669f82b7ade0741194fa86448eff57d7f68c8ebbfc1bf266b4d68aca509ee48db258902a805e7" DL_url="https://dl.dell.com/FOLDER04573471M/1/Inspiron_5468_1.3.0.exe" DL_url_bkup="https://web.archive.org/web/20241110222323/https://dl.dell.com/FOLDER04573471M/1/Inspiron_5468_1.3.0.exe" @@ -11,6 +12,8 @@ DL_url_bkup="https://web.archive.org/web/20241110222323/https://dl.dell.com/FOLD # and inserted to CBFS with names CONFIG_FSP_S_CBFS and CONFIG_FSP_M_CBFS # FSPFD_hash="c500166a8553a80ba8db8b8185a896e0ae1562ea3c139e07acd9e7937baf8110ba743cc79b69db09a5f39c076d1d22bc45045223975f46aea2034ba82a6b0360" +FSPM_bin_hash="b15712a53f4d16f36b384beb6dbb716c0b0924751d6ca1e229cd4b8c03aef9eda025c235af247e53dac94d94b79559623974d0d21c7f97e125d8ecc2c86bf03f" +FSPS_bin_hash="64ac9f93e43efddc35931e168d6594c2b39fb5a0da863d22f2d000d7eacc0692b07ce89389cbb1c5b95ff9b2bba508c538e37d0e644fcab7b2cada773da65ce6" # We will use deguard to disable the Intel Boot Guard: ME11bootguard="y" @@ -27,3 +30,4 @@ TBFW_url="https://download.lenovo.com/pccbbs/mobiles/n24th13w.exe" TBFW_url_bkup="https://web.archive.org/web/20241004165955/https://download.lenovo.com/pccbbs/mobiles/n24th13w.exe" TBFW_hash="906d916e8ae77e6d146c67c3113cd904e735a7f28cb2fc37e2284758ead5cda8dd4025c1c741fac9162b1eb01cff08fc39a0d4e79c5cec0515f1d3e6447d1323" TBFW_size=1048576 # size in bytes, when padding, matching TBFW's flash IC +TBFW_bin_hash="15aea269e79d92fe651fe613e30febee5459786169f647e5f321b7382892cf2b8fc61aa1afb8a04d0369b71579de54763272ba144673fbfadfefeb384d45c293" diff --git a/config/vendor/t480s/pkg.cfg b/config/vendor/t480s/pkg.cfg index a9e3e48b..4c1eeaf1 100644 --- a/config/vendor/t480s/pkg.cfg +++ b/config/vendor/t480s/pkg.cfg @@ -1,6 +1,8 @@ # SPDX-License-Identifier: GPL-3.0-or-later +# ME firmware (deguard will be used) DL_hash="df735a24242792bf4150f30bf0bd4fdbdc0fb6bf0f897ea533df32567be8e084006d692fb6351677f8cc976878c5018667901dbd407b0a77805754f7c101497c" +ME_bin_hash="1c77371187ef64e719debc75f606c78fc063b8a84f2704f3fa45e9e4d8a9bccec50420d262bbfbc0dd1695e038698b10113a1bc532a33b943321cd0811e40786" DL_url="https://dl.dell.com/FOLDER04573471M/1/Inspiron_5468_1.3.0.exe" DL_url_bkup="https://web.archive.org/web/20241110222323/https://dl.dell.com/FOLDER04573471M/1/Inspiron_5468_1.3.0.exe" @@ -10,6 +12,8 @@ DL_url_bkup="https://web.archive.org/web/20241110222323/https://dl.dell.com/FOLD # and inserted to CBFS with names CONFIG_FSP_S_CBFS and CONFIG_FSP_M_CBFS # FSPFD_hash="c500166a8553a80ba8db8b8185a896e0ae1562ea3c139e07acd9e7937baf8110ba743cc79b69db09a5f39c076d1d22bc45045223975f46aea2034ba82a6b0360" +FSPM_bin_hash="b15712a53f4d16f36b384beb6dbb716c0b0924751d6ca1e229cd4b8c03aef9eda025c235af247e53dac94d94b79559623974d0d21c7f97e125d8ecc2c86bf03f" +FSPS_bin_hash="64ac9f93e43efddc35931e168d6594c2b39fb5a0da863d22f2d000d7eacc0692b07ce89389cbb1c5b95ff9b2bba508c538e37d0e644fcab7b2cada773da65ce6" # We will use deguard to disable the Intel Boot Guard: ME11bootguard="y" @@ -26,3 +30,4 @@ TBFW_url="https://download.lenovo.com/pccbbs/mobiles/n22th11w.exe" TBFW_url_bkup="https://web.archive.org/web/20230319003752/https://download.lenovo.com/pccbbs/mobiles/n22th11w.exe" TBFW_hash="ef8ec0a41d7faaa0ce514cfb6f8e7e10669c878eff69fbe1b821443b6218f5b31e1b910c8abceecf38d4b11a6e552d90f277c96c7a9c512d605c8b8aea9c1c0c" TBFW_size=1048576 # size in bytes, when padding, matching TBFW's flash IC +TBFW_bin_hash="41672f3ccdbf7a39ffd7d94c5cfb16efd2911be7b980feaa88b0f33777bd679eafdb97019a9c7b1d32cf76297ba0cb81d5b36072f6be96cec2834011249984db" diff --git a/config/vendor/x2e_n150/pkg.cfg b/config/vendor/x2e_n150/pkg.cfg new file mode 100644 index 00000000..94286cc2 --- /dev/null +++ b/config/vendor/x2e_n150/pkg.cfg @@ -0,0 +1,35 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +DL_hash="0a967d7baa7deea750da426a6e48113d8c8c7a32de0f5e8b0a610169e8c948b81e59003f5095ded75d904ccc30ac4f386ebf0d5d477336a0a167857c262473da" +DL_url="https://archive.org/download/Topton-H30W-1264NP-4L5G-FW/BK12R415.rar" +DL_url_bkup="https://archive.org/download/Topton-H30W-1264NP-4L5G-FW/BK12R415.rar" +# Original is hosted on sharepoint, needs some work to download directly from there +# So for now we rely on archive.org :( +# DL_url_bkup="https://x8sb8-my.sharepoint.com/personal/support_bkipc_com/_layouts/15/onedrive.aspx?ga=1&id=%2Fpersonal%2Fsupport%5Fbkipc%5Fcom%2FDocuments%2FProduct%2FFCBGA1264%2F1264NP%2D4L%2D5G%2FProduct%20Firmware%2FN150%2FBK12R415%2Erar&parent=%2Fpersonal%2Fsupport%5Fbkipc%5Fcom%2FDocuments%2FProduct%2FFCBGA1264%2F1264NP%2D4L%2D5G%2FProduct%20Firmware%2FN150" +ME_bin_hash="3f4b67947c0902c9041043da063af89857fdd8d80bde1f2e294b64cf549c42a2bf94eb5fba3dab06cdb68e7fe2b4315d2ee88ae2f611e0f9552af9fea7d82be8" + +# use a newer me_cleaner that can handle ME16, instead +# of the old me_cleaner present in corebootn.git +XBMKmecleaner="y" + +# on this board, we simply set the HAP bit +# but we do not modify ME at all. this is because +# me_cleaner currently has to way to validate +# the result when neutering. simply setting +# the HAP bit has the same result for users +MEclean="n" # - however: + +# we still use me_cleaner, merely to extract, in +# such circumstances, otherwise lbmk vendor.sh +# would be way more complex because we'd have +# to resort to ifdtool instead. me_cleaner can +# also extract a ME without modifying it + +# for Fsp.fd, we don't rely on a download. Instead, +# we copy from coreboot.git. The file is defined +# by CONFIG_FSP_FD_PATH, split to CONFIG_FSP_M_FILE and CONFIG_FSP_S_FILE +# and inserted to CBFS with names CONFIG_FSP_S_CBFS and CONFIG_FSP_M_CBFS +# +FSPFD_hash="69d945ea208912167af70774178366d2a56ba898ecc1864a4feda86fe96bbf55d408b2aaea2e3406c3f40772b603a9178139f5722015fb622e4e6274bd53ad52" +FSPM_bin_hash="619f6f1478554b2fe958da37b1c51c5c9781565424acd48528bd333332b3de2ea728ff21e0048f77f2564c6e242d0382d659415bd16bc8405bd6f9fa7f17d9ac" +FSPS_bin_hash="631cd96a912549fa4e792c1f8aefd26c35f98b1f9543958f24a1f87c92f0d91582b85f0b5d58f2651fe90cb526d5225bae2f4ab494745c3f586f7063abde096e" diff --git a/include/get.sh b/include/get.sh new file mode 100644 index 00000000..4731c694 --- /dev/null +++ b/include/get.sh @@ -0,0 +1,353 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +# Copyright (c) 2020-2021,2023-2025 Leah Rowe <leah@libreboot.org> +# Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com> + +depend="" +loc="" +url="" +bkup_url="" +subgit="" +subgit_bkup="" +subcurl="" +subcurl_bkup="" +subhash="" + +tmpgit="$xbtmp/gitclone" +tmpgitcache="$xbtmp/tmpgit" + +fetch_targets() +{ + if [ ! -d "src/$project/$tree" ]; then + git_prep "$url" "$bkup_url" \ + "$xbmkpwd/$configdir/$tree/patches" \ + "src/$project/$tree" "submod" + fi +} + +fetch_project() +{ + xgcctree="" + + . "config/git/$project/pkg.cfg" || \ + err "Can't read config 'config/git/$project/pkg.cfg'" \ + "fetch_project" "@" + + if [ -z "$url" ] || [ -z "$bkup_url" ]; then + err "url/bkup_url not both set 'config/git/$project/pkg.cfg'" \ + "fetch_project" "$@" + fi + + if [ -n "$xgcctree" ]; then + x_ ./mk -f coreboot "$xgcctree" + fi + if [ -n "$depend" ]; then + for d in $depend ; do + x_ ./mk -f $d + done + fi + + clone_project +} + +clone_project() +{ + loc="$XBMK_CACHE/clone/$project" + if singletree "$project"; then + loc="src/$project" + fi + + if e "$loc" d missing; then + remkdir "${tmpgit%/*}" + git_prep "$url" "$bkup_url" \ + "$xbmkpwd/config/$project/patches" "$loc" + fi +} + +git_prep() +{ + printf "Creating code directory, src/%s/%s\n" "$project" "$tree" + + _patchdir="$3" + _loc="$4" # $1 and $2 are gitrepo and gitrepo_backup + + if [ -z "$rev" ]; then + err "$project/$tree: rev not set" "git_prep" "$@" + fi + + xbget git "$1" "$2" "$tmpgit" "$rev" "$_patchdir" + if singletree "$project" || [ $# -gt 4 ]; then + dx_ fetch_submodule "$mdir/module.list" + fi + + if [ "$_loc" != "${_loc%/*}" ]; then + x_ xbmkdir "${_loc%/*}" + fi + x_ mv "$tmpgit" "$_loc" +} + +fetch_submodule() +{ + mcfgdir="$mdir/${1##*/}" + + subhash="" + subgit="" + subgit_bkup="" + subcurl="" + subcurl_bkup="" + st="" + + if e "$mcfgdir/module.cfg" f missing; then + return 0 + fi + . "$mcfgdir/module.cfg" || \ + err "Can't read '$mcfgdir/module.cfg'" "fetch_submodules" "$@" + + if [ -n "$subgit" ] || [ -n "$subgit_bkup" ]; then + st="$st git" + fi + if [ -n "$subcurl" ] || [ -n "$subcurl_bkup" ]; then + st="$st curl" + fi + + st="${st# }" + if [ "$st" = "git curl" ]; then + err "$mdir: git+curl defined" "fetch_submodule" "$@" + fi + + if [ -z "$st" ]; then + return 0 + fi + + if [ "$st" = "curl" ]; then + if [ -z "$subcurl" ] || [ -z "$subcurl_bkup" ]; then + err "subcurl/subcurl_bkup not both set" \ + "fetch_submodule" "$@" + fi + elif [ -z "$subgit" ] || [ -z "$subgit_bkup" ]; then + err "subgit/subgit_bkup not both set" "fetch_submodule" "$@" + elif [ -z "$subhash" ]; then + err "subhash not set" "fetch_submodule" "$@" + fi + + if [ "$st" = "git" ]; then + x_ rm -Rf "$tmpgit/$1" + xbget "$st" "$subgit" "$subgit_bkup" "$tmpgit/$1" \ + "$subhash" "$mdir/${1##*/}/patches" + else + xbget "$st" "$subcurl" "$subcurl_bkup" "$tmpgit/$1" \ + "$subhash" "$mdir/${1##*/}/patches" + fi +} + +# TODO: in the following functions, argument numbers are used +# which is hard to understand. the code should be modified +# so that variable names are used instead, for easy reading + +xbget() +{ + if [ "$1" != "curl" ] && [ "$1" != "copy" ] && [ "$1" != "git" ]; then + err "Bad dlop (arg 1)" "xbget" "$@" + fi + + for url in "$2" "$3" + do + if [ -z "$url" ]; then + err "empty URL given in" "xbget" "$@" + elif ! try_fetch "$url" "$@"; then + continue + fi + + case "$1" in + git) + if [ ! -d "$4" ]; then + continue + fi + ;; + *) + if [ ! -f "$4" ]; then + continue + fi + ;; + esac + return 0 # successful download/copy + done + + err "failed to download file/repository" "xbget" "$@"; : +} + +try_fetch() +{ + if [ "$2" = "git" ]; then + if ! try_fetch_git "$@"; then + return 1 + fi + else + if ! try_fetch_file "$@"; then + return 1 + fi + fi +} + +try_fetch_git() +{ + # always the main repo as basis for naming, + # in case the backup has another name + + cached="clone/${3##*/}" + cached="${cached%.git}" + cached="$XBMK_CACHE/$cached" + + x_ xbmkdir "${5%/*}" "${cached%/*}" + + if ! try_$2 "$cached" "$@"; then + return 1 + elif [ ! -d "$cached" ]; then + return 1 + fi + + if [ ! -d "$5" ]; then + tmpclone "$cached" "$5" "$6" "$7" || \ + err "Can't clone final repo" "try_fetch" "$@"; : + fi + + if [ ! -d "$5" ]; then + return 1 + fi +} + +try_fetch_file() +{ + cached="file/$6" + cached="$XBMK_CACHE/$cached" + + x_ xbmkdir "${5%/*}" "${cached%/*}" + + if bad_checksum "$6" "$cached" 2>/dev/null; then + x_ rm -f "$cached" + fi + + if [ ! -f "$cached" ]; then + if ! try_$2 "$cached" "$@"; then + return 1 + fi + fi + + if [ -f "$5" ]; then + if bad_checksum "$6" "$5" 2>/dev/null; then + x_ cp "$cached" "$5" + fi + fi + + if [ ! -f "$cached" ]; then + return 1 + elif bad_checksum "$6" "$cached"; then + x_ rm -f "$cached" + + return 1 + fi + + if [ "$cached" != "$5" ]; then + x_ cp "$cached" "$5" + fi + + if bad_checksum "$6" "$5"; then + x_ rm -f "$5" + + return 1 + elif [ ! -f "$5" ]; then + return 1 + fi +} + +try_curl() +{ + _ua="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" + + ( x_ curl --location --retry 3 -A "$_ua" "$2" -o "$1" ) \ + || ( x_ wget --tries 3 -U "$_ua" "$2" -O "$1" ) \ + || return 1; : +} + +try_copy() +{ + ( x_ cp "$2" "$1" ) || return 1; : +} + +try_git() +{ + gitdest="`findpath "$1" || err "Can't get findpath for '$1'"`" || \ + err "failed findpath for '$1'" try_get "$@" + + x_ rm -Rf "$tmpgitcache" + + if [ ! -d "$gitdest" ]; then + ( x_ git clone "$2" "$tmpgitcache" ) || return 1 + + x_ xbmkdir "${gitdest%/*}" + x_ mv "$tmpgitcache" "$gitdest" + fi + + if git -C "$gitdest" show "$7" 1>/dev/null 2>/dev/null && \ + [ "$forcepull" != "y" ]; then + # don't try to pull the latest changes if the given target + # revision already exists locally. this saves a lot of time + # during release builds, and reduces the chance that we will + # interact with grub.git or gnulib.git overall during runtime + + return 0 + fi + + ( x_ git -C "$gitdest" remote remove main ) || : + ( x_ git -C "$gitdest" remote remove backup ) || : + + x_ git -C "$gitdest" remote add main "$4" + x_ git -C "$gitdest" remote add backup "$5" + + ( x_ git -C "$gitdest" pull --all ) || :; : +} + +bad_checksum() +{ + if e "$2" f missing; then + return 0 + fi + + build_sbase + csum="$(x_ "$sha512sum" "$2" | awk '{print $1}')" || \ + err "!sha512 '$2' $1" bad_checksum "$@" + + if [ "$csum" = "$1" ]; then + return 1 + else + x_ rm -f "$2" + printf "BAD SHA512 %s, '%s'; need %s\n" "$csum" "$2" "$1" 1>&2 + fi +} + +tmpclone() +{ + ( x_ git clone "$1" "$2" ) || return 1 + ( x_ git -C "$2" reset --hard "$3" ) || return 1 + + if [ ! -d "$4" ]; then + return 0 + fi + + tmpclone_patchlist="`mktemp || err "Can't create tmp patch list"`" || \ + err "Can't create tmp patch list" "tmpclone" "$@" + + x_ find "$4" -type f | sort > "$tmpclone_patchlist" || \ + err "Can't write patch names to '$tmpclone_patchlist'" \ + "tmpclone" "$@" + + while read -r tmpclone_patch; do + + ( x_ git -C "$2" am "$tmpclone_patch" ) || \ + err "Can't apply '$tmpclone_patch'" "tmpclone" "$@"; : + + done < "$tmpclone_patchlist" || \ + err "Can't read '$tmpclone_patchlist'" "tmpclone" "$@" + + x_ rm -f "$tmpclone_patchlist" +} diff --git a/include/git.sh b/include/git.sh deleted file mode 100644 index 4fa904ba..00000000 --- a/include/git.sh +++ /dev/null @@ -1,144 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# Copyright (c) 2020-2021,2023-2025 Leah Rowe <leah@libreboot.org> -# Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com> - -eval "`setvars "" loc url bkup_url subfile subhash subrepo subrepo_bkup \ - depend subfile_bkup repofail`" - -tmpgit="$xbmkpwd/tmp/gitclone" - -fetch_targets() -{ - [ -n "$tree_depend" ] && [ "$tree_depend" != "$tree" ] && \ - x_ ./mk -f "$project" "$tree_depend" - e "src/$project/$tree" d && return 0 - - printf "Creating %s tree %s\n" "$project" "$tree" - git_prep "$loc" "$loc" "$xbmkpwd/$configdir/$tree/patches" \ - "src/$project/$tree" with_submodules - nuke "$project/$tree" "$project/$tree" -} - -fetch_project() -{ - eval "`setvars "" xtree tree_depend`" - eval "`setcfg "config/git/$project/pkg.cfg"`" - - chkvars url - - [ -n "$xtree" ] && x_ ./mk -f coreboot "$xtree" - [ -z "$depend" ] || for d in $depend ; do - printf "'%s' needs '%s'; grabbing '%s'\n" "$project" "$d" "$d" - x_ ./mk -f $d - done - clone_project - - for x in config/git/*; do - [ -d "$x" ] && nuke "${x##*/}" "src/${x##*/}" 2>/dev/null; : - done; : -} - -clone_project() -{ - loc="$XBMK_CACHE/repo/$project" && singletree "$project" && \ - loc="src/$project" - printf "Downloading project '%s' to '%s'\n" "$project" "$loc" - - e "$loc" d missing && remkdir "${tmpgit%/*}" && git_prep \ - "$url" "$bkup_url" "$xbmkpwd/config/$project/patches" "$loc"; : -} - -git_prep() -{ - _patchdir="$3" - _loc="$4" # $1 and $2 are gitrepo and gitrepo_backup - - chkvars rev - tmpclone "$1" "$2" "$tmpgit" "$rev" "$_patchdir" - if singletree "$project" || [ $# -gt 4 ]; then - [ -f "$mdir/module.list" ] && while read -r msrcdir; do - fetch_submodule "$msrcdir" - done < "$mdir/module.list"; : - fi - - if [ "$project" = "coreboot" ] && [ -n "$xtree" ] && [ $# -gt 2 ] && \ - [ "$xtree" != "$tree" ]; then ( - x_ cd "$tmpgit/util" && x_ rm -Rf crossgcc - x_ ln -s "../../$xtree/util/crossgcc" crossgcc - ) || $err "$_loc: !xgcc link"; fi - - [ "$_loc" != "$XBMK_CACHE/repo/$project" ] && \ - [ "$XBMK_RELEASE" = "y" ] && rmgit "$tmpgit" - - [ "$_loc" = "${_loc%/*}" ] || x_ mkdir -p "${_loc%/*}" - mv "$tmpgit" "$_loc" || $err "git_prep: !mv $tmpgit $_loc" -} - -fetch_submodule() -{ - mcfgdir="$mdir/${1##*/}"; eval \ - "`setvars "" subhash subrepo subrepo_bkup subfile subfile_bkup st`" - [ ! -f "$mcfgdir/module.cfg" ] || . "$mcfgdir/module.cfg" || \ - $err "! . $mcfgdir/module.cfg" - - for xt in repo file; do - _seval="if [ -n \"\$sub$xt\" ] || [ -n \"\$sub${xt}_bkup\" ]" - eval "$_seval; then st=\"\$st \$xt\"; fi" - done - st="${st# }" && [ "$st" = "repo file" ] && $err "$mdir: repo+file" - - [ -z "$st" ] && return 0 # subrepo/subfile not defined - chkvars "sub${st}" "sub${st}_bkup" "subhash" - - [ "$st" = "file" ] && download "$subfile" "$subfile_bkup" \ - "$tmpgit/$1" "$subhash" && return 0 - rm -Rf "$tmpgit/$1" || $err "!rm '$mdir' '$1'" - tmpclone "$subrepo" "$subrepo_bkup" "$tmpgit/$1" "$subhash" \ - "$mdir/${1##*/}/patches" -} - -tmpclone() -{ - livepull="n" && [ "$repofail" = "y" ] && \ - printf "Cached clone failed; trying online.\n" 1>&2 && livepull="y" - - repofail="n" - - [ $# -lt 6 ] || rm -Rf "$3" || $err "git retry: !rm $3 ($1)" - repodir="$XBMK_CACHE/repo/${1##*/}" && [ $# -gt 5 ] && repodir="$3" - mkdir -p "$XBMK_CACHE/repo" || $err "!rmdir $XBMK_CACHE/repo" - - if [ "$livepull" = "y" ] && [ ! -d "$repodir" ]; then - git clone "$1" "$repodir" || git clone $2 "$repodir" || \ - $err "!clone $1 $2 $repodir $4 $5" # - elif [ -d "$repodir" ] && [ $# -lt 6 ]; then - git -C "$repodir" pull || sleep 3 || git -C "$repodir" pull \ - || sleep 3 || git -C "$repodir" pull || : - fi - ( - [ $# -gt 5 ] || git clone "$repodir" "$3" || $err "!clone $repodir $3" - git -C "$3" reset --hard "$4" || $err "!reset $1 $2 $3 $4 $5" - git_am_patches "$3" "$5" - ) || repofail="y" - - [ "$repofail" = "y" ] && [ $# -lt 6 ] && tmpclone "$@" retry - [ "$repofail" = "y" ] && $err "!clone $1 $2 $3 $4 $5"; : -} - -git_am_patches() -{ - for p in "$2/"*; do - [ -L "$p" ] && continue - [ -e "$p" ] || continue - [ -d "$p" ] && git_am_patches "$1" "$p" && continue - [ ! -f "$p" ] || git -C "$1" am "$p" || $err "$1 $2: !am $p" - done; : -} - -nuke() -{ - e "config/${1%/}/nuke.list" f missing || while read -r nukefile; do - rmf="src/${2%/}/$nukefile" && [ -L "$rmf" ] && continue - e "$rmf" e missing || rm -Rf "$rmf" || $err "!rm $rmf, ${2%/}" - done < "config/${1%/}/nuke.list"; : -} diff --git a/include/init.sh b/include/init.sh new file mode 100644 index 00000000..96247908 --- /dev/null +++ b/include/init.sh @@ -0,0 +1,458 @@ +# SPDX-License-Identifier: GPL-3.0-only + +# Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com> +# Copyright (c) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com> +# Copyright (c) 2020-2025 Leah Rowe <leah@libreboot.org> +# Copyright (c) 2025 Alper Nebi Yasak <alpernebiyasak@gmail.com> + +export LC_COLLATE=C +export LC_ALL=C + +projectname="libreboot" +projectsite="https://libreboot.org/" + +if [ -z "${PATH+x}" ]; then + export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" +fi + +board="" +reinstall="" +version="" +versiondate="" +aur_notice="" +configdir="" +xbmkpath="" +datadir="" +xbmkpwd="" +relname="" +xbmkpwd="" +xbtmp="" +python="" +pyver="" +xbmklock="" +checkvarsxbmk="" +checkvarschk="" +is_child="" +basetmp="" + +sha512sum="util/sbase/sha512sum" + +xbmk_init() +{ + xbmkpwd="`pwd || err "Cannot generate PWD"`" || err "!" xbmk_init "$@" + xbmklock="$xbmkpwd/lock" + basetmp="$xbmkpwd/xbmkwd" + sha512sum="$xbmkpwd/util/sbase/sha512sum" + + if [ $# -gt 0 ] && [ "$1" = "dependencies" ]; then + x_ xbmkpkg "$@" + + exit 0 + fi + + id -u 1>/dev/null 2>/dev/null || \ + err "suid check failed" "xbmk_init" "$@" + + if [ "$(id -u)" = "0" ]; then + err "this command as root is not permitted" "xbmk_init" "$@" + fi + + export PWD="$xbmkpwd" + x_ xbmkdir "$basetmp" + + if [ ! -e "cache" ]; then + x_ xbmkdir "cache" + fi + + for init_cmd in get_version set_env set_threads git_init child_exec; do + if ! xbmk_$init_cmd "$@"; then + break + fi + done +} + +xbmkpkg() +{ + xchk xbmkpkg "$@" + + if [ $# -gt 2 ]; then + reinstall="$3" + fi + + . "config/dependencies/$2" || \ + err "Can't read 'config/dependencies/$2'" "xbmkpkg" "$@" + + if [ -z "$pkg_add" ] || [ -z "$pkglist" ]; then + err "pkg_add/pkglist not both set" "xbmkpkg" "$@" + fi + + x_ $pkg_add $pkglist + + if [ -n "$aur_notice" ]; then + printf "You need AUR packages: %s\n" "$aur_notice" 1>&2 + fi +} + +xbmk_get_version() +{ + if [ -f ".version" ]; then + read -r version < ".version" || \ + err "can't read version file" "xbmk_get_version" "$@" + fi + if [ -f ".versiondate" ]; then + read -r versiondate < ".versiondate" || \ + err "can't read versiondate" xbmk_get_version "$@" + fi + + if [ -f ".version" ] && [ -z "$version" ]; then + err "version not set" "xbmk_get_version" "$@" + fi + if [ -f ".versiondate" ] && [ -z "$versiondate" ]; then + err "versiondate not set" "xbmk_get_version" "$@" + fi + + if [ ! -e ".git" ] && [ ! -f ".version" ]; then + version="unknown" + fi + if [ ! -e ".git" ] && [ ! -f ".versiondate" ]; then + versiondate="1716415872" + fi + + xbmk_sanitize_version + + if [ -n "$version" ]; then + relname="$projectname-$version" + fi +} + +# a parent instance will cause this function to return 0. +# a child instance will return 1, skipping further initialisation +# after this function is called. +xbmk_set_env() +{ + is_child="n" + + xbmkpath="$PATH" + + # unify all temporary files/directories in a single TMPDIR + if [ -n "${TMPDIR+x}" ] && [ "${TMPDIR%_*}" != "$basetmp/xbmk" ]; then + unset TMPDIR + fi + if [ -n "${TMPDIR+x}" ]; then + export TMPDIR="$TMPDIR" + xbtmp="$TMPDIR" + fi + if [ -n "${TMPDIR+x}" ]; then + is_child="y" + fi + + if [ "$is_child" = "y" ] + then + # child instance of xbmk, so we stop init after this point + # and execute the given user command upon return: + + xbmk_child_set_env + + return 1 + else + # parent instance of xbmk, so we continue initialising. + # a parent instance of xbmk never processes its own + # command directly; instead, it calls a child instance + # of xbmk, and exits with the corresponding return status. + + xbmk_parent_set_env + + return 0 + fi +} + +xbmk_child_set_env() +{ + xbmk_child_set_tmp + + if [ -z "${XBMK_CACHE+x}" ]; then + err "XBMK_CACHE unset on child" "xbmk_set_env" "$@" + fi + if [ -z "${XBMK_THREADS+x}" ]; then + xbmk_set_threads; : + fi +} + +xbmk_child_set_tmp() +{ + badtmp="" + xbtmpchk="" + locktmp="" + + xbtmpchk="`findpath "$TMPDIR" || err "!findpath $TMPDIR"`" || \ + err "!findpath '$TMPDIR'" "xbmk_child_set_tmp" "$@" + + read -r locktmp < "$xbmklock" || \ + err "can't read '$xbmklock'" "xbmk_child_set_tmp" "$@" + + if [ "$locktmp" != "$xbtmpchk" ]; then + badtmp="TMPDIR '$xbtmpchk' changed; was '$locktmp'" + + printf "bad TMPDIR init, '%s': %s\n" "$TMPDIR" "$badtmp" 1>&2 + err "'$xbmklock' present with bad tmpdir. is a build running?" + fi + + xbtmp="$xbtmpchk" + export TMPDIR="$xbtmpchk" +} + +xbmk_parent_set_env() +{ + xbmk_parent_check_tmp + + printf "%s\n" "$xbtmp" > "$xbmklock" || \ + err "cannot create '$xbmklock'" xbmk_set_env "$@"; : + + # not really critical for security, but it's a barrier + # against the user to make them think twice before deleting it + # in case an actual instance of xbmk is already running: + + x_ chmod -w "$xbmklock" + + xbmk_parent_set_export + xbmk_set_version + + remkdir "$xbtmp" "$xbtmp/gnupath" "$xbtmp/xbmkpath" + + xbmk_set_pyver +} + +xbmk_parent_check_tmp() +{ + export TMPDIR="$basetmp" + + xbmklist="`mktemp || err "can't make tmplist"`" || \ + err "can't make tmplist" xbmk_parent_check_tmp "$@" + + x_ rm -f "$xbmklist" + x_ touch "$xbmklist" + + for xtmpdir in "$basetmp"/xbmk_*; do + if [ -e "$xtmpdir" ]; then + printf "%s\n" "$xtmpdir" >> "$xbmklist" || \ + err "can't write '$xtmpdir' to '$xbmklist'" \ + "xbmk_parent_check_tmp" "$@"; : + fi + done + + # set up a unified temporary directory, for common deletion later: + export TMPDIR="`x_ mktemp -d -t xbmk_XXXXXXXX`" || \ + err "can't export TMPDIR" "xbmk_parent_check_tmp" "$@" + xbtmp="$TMPDIR" + + while read -r xtmpdir; do + if [ "$xtmpdir" = "$xbtmp" ]; then + err "pre-existing '$xbtmp'" "xbmk_parent_check_tmp" "$@" + fi + done < "$xbmklist" || \ + err "Can't read xbmklist: '$xbmklist'" "xbmk_parent_check_tmp" "$@" + + x_ rm -f "$xbmklist" +} + +xbmk_parent_set_export() +{ + export XBMK_CACHE="$xbmkpwd/cache" + + if [ -e "$XBMK_CACHE" ] && [ ! -d "$XBMK_CACHE" ]; then + err "cachedir '$XBMK_CACHE' is a file" \ + "xbmk_parent_set_export" "$@" + fi + + export PATH="$xbtmp/xbmkpath:$xbtmp/gnupath:$PATH" + xbmkpath="$PATH" + + # if "y": a coreboot target won't be built if target.cfg says release=n + # (this is used to exclude certain build targets from releases) + + if [ -z "${XBMK_RELEASE+x}" ]; then + export XBMK_RELEASE="n" + fi + if [ "$XBMK_RELEASE" = "Y" ]; then + export XBMK_RELEASE="y" + fi + if [ "$XBMK_RELEASE" != "y" ]; then + export XBMK_RELEASE="n" + fi +} + +xbmk_set_threads() +{ + if [ -z "${XBMK_THREADS+x}" ]; then + export XBMK_THREADS=1 + fi + if ! expr "X$XBMK_THREADS" : "X-\{0,1\}[0123456789][0123456789]*$" \ + 1>/dev/null 2>/dev/null; then + export XBMK_THREADS=1 + fi +} + +xbmk_set_version() +{ + version_="$version" + if [ -e ".git" ]; then + version="$(git describe --tags HEAD 2>&1)" || \ + version="git-$(git rev-parse HEAD 2>&1)" || \ + version="$version_" + fi + + versiondate_="$versiondate" + if [ -e ".git" ]; then + versiondate="$(git show --no-patch --no-notes \ + --pretty='%ct' HEAD)" || versiondate="$versiondate_" + fi + + if [ -z "$version" ] || [ -z "$versiondate" ]; then + err "version and/or versiondate unset" "xbmk_set_version" "$@" + fi + + update_xbmkver "." + + relname="$projectname-$version" + export LOCALVERSION="-$projectname-${version%%-*}" +} + +xbmk_set_pyver() +{ + pyv="import sys; print(sys.version_info[:])" + python="python3" + pyver="2" + + if ! pybin python3 1>/dev/null; then + python="python" + fi + if [ "$python" = "python3" ]; then + pyver="3" + fi + if ! pybin "$python" 1>/dev/null; then + pyver="" + fi + if [ -n "$pyver" ]; then + "`x_ pybin "$python"`" -c "$pyv" 1>/dev/null \ + 2>/dev/null || \ + err "Can't detect Python version." "xbmk_set_pyver" "$@" + fi + if [ -n "$pyver" ]; then + pyver="$("$(pybin "$python")" -c "$pyv" | awk '{print $1}')" + pyver="${pyver#(}" + pyver="${pyver%,}" + fi + if [ "${pyver%%.*}" != "3" ]; then + err "Bad python version (must by 3.x)" "xbmk_set_pyver" "$@" + fi + + # set up python in PATH (environmental variable): + + ( + x_ cd "$xbtmp/xbmkpath" + + x_ ln -s "`x_ pybin "$python"`" python || \ + err "can't make symlink" "xbmk_set_pyver" "$@" + + ) || \ + err "Can't link Python in $xbtmp/xbmkpath" "xbmk_set_pyver" "$@"; : +} + +# Use direct path, to prevent a hang if Python is using a virtual environment, +# not command -v, to prevent a hang when checking python's version +# See: https://docs.python.org/3/library/venv.html#how-venvs-work +pybin() +{ + py="import sys; quit(1) if sys.prefix == sys.base_prefix else quit(0)" + + venv=1 + if ! command -v "$1" 1>/dev/null 2>/dev/null; then + venv=0 + fi + if [ $venv -gt 0 ]; then + if ! "$1" -c "$py" 1>/dev/null 2>/dev/null; then + venv=0 + fi + fi + + # ideally, don't rely on PATH or hardcoded paths if python venv. + # use the *real*, direct executable linked to by the venv symlink: + + if [ $venv -gt 0 ] && [ -L "`command -v "$1" 2>/dev/null`" ]; then + pypath="$(findpath \ + "$(command -v "$1" 2>/dev/null)" 2>/dev/null || :)" + + if [ -e "$pypath" ] && [ ! -d "$pypath" ] && \ + [ -x "$pypath" ]; then + + printf "%s\n" "$pypath" + + return 0 + fi + fi + + # if python venv: fall back to common PATH directories for checking: + + [ $venv -gt 0 ] && for pypath in "/usr/local/bin" "/usr/bin"; do + if [ -e "$pypath/$1" ] && [ ! -d "$pypath/$1" ] && \ + [ -x "$pypath/$1" ]; then + + printf "%s/%s\n" "$pypath" "$1" + + return 0 + fi + done && return 1 + + # Defer to normal command -v if not a venv + if ! command -v "$1" 2>/dev/null; then + return 1 + fi +} + +xbmk_git_init() +{ + for gitarg in "--global user.name" "--global user.email"; do + gitcmd="git config $gitarg" + if ! $gitcmd 1>/dev/null 2>/dev/null; then + err "Run this first: $gitcmd \"your ${gitcmd##*.}\"" \ + "xbmk_git_init" "$@" + fi + done + + if [ -L ".git" ]; then + err "'$xbmkpwd/.git' is a symlink" "xbmk_git_init" "$@" + fi + if [ -e ".git" ]; then + return 0 + fi + + # GNU-specific extensions of date are used. + # TODO: that is a bug. fix it! + + x_ date --version | grep "GNU coreutils" 1>/dev/null 2>/dev/null || \ + err "Non-GNU date implementation" "xbmk_git_init" "$@" + + cdate="`x_ date -Rud @$versiondate || err "can't get date"`" || \ + err "can't get date" "xbmk_git_init" "$@" + + x_ git init 1>/dev/null 2>/dev/null + x_ git add -A . 1>/dev/null 2>/dev/null + x_ git commit -m "$projectname $version" --date "$cdate" \ + --author="xbmk <xbmk@example.com>" 1>/dev/null 2>/dev/null + x_ git tag -a "$version" -m "$projectname $version" 1>/dev/null \ + 2>/dev/null; : +} + +xbmk_child_exec() +{ + xbmk_rval=0 + + ( x_ ./mk "$@" ) || xbmk_rval=1 + + ( x_ rm -Rf "$xbtmp" ) || xbmk_rval=1 + ( x_ rm -f "$xbmklock" ) || xbmk_rval=1 + + exit $xbmk_rval +} + +xbmk_init "$@" diff --git a/include/inject.sh b/include/inject.sh new file mode 100644 index 00000000..90528ac0 --- /dev/null +++ b/include/inject.sh @@ -0,0 +1,234 @@ +# SPDX-License-Identifier: GPL-3.0-only + +# Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com> +# Copyright (c) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com> +# Copyright (c) 2023-2025 Leah Rowe <leah@libreboot.org> + +cbcfgsdir="config/coreboot" +tmpromdel="$XBMK_CACHE/DO_NOT_FLASH" +nvm="util/nvmutil/nvm" +ifdtool="elf/coreboot/default/ifdtool" + +checkvars="CONFIG_GBE_BIN_PATH" +if [ -n "$checkvarsxbmk" ]; then + checkvars="$checkvars $checkvarsxbmk" +fi +if [ -n "$checkvarschk" ]; then + checkvars="$checkvars $checkvarschk" +fi + +archive="" +boarddir="" +IFD_platform="" +ifdprefix="" +tree="" +new_mac="" +tmpromdir="" +board="" +xchanged="" + +eval "`setvars "" $checkvars`" + +inject() +{ + remkdir "$tmpromdel" + + if [ $# -lt 1 ]; then + err "No options specified" "inject" "$@" + fi + + nuke="" + new_mac="" + xchanged="" + + archive="$1"; + new_mac="xx:xx:xx:xx:xx:xx" + + [ $# -gt 1 ] && case "$2" in + nuke) + new_mac="" + nuke="nuke" + ;; + setmac) + if [ $# -gt 2 ]; then + new_mac="$3" && \ + if [ -z "$new_mac" ]; then + err "Empty MAC address specified" "inject" "$@" + fi + fi + ;; + *) + err "Unrecognised inject mode: '$2'" "inject" "$@" ;; + esac + + if [ "$new_mac" = "keep" ]; then + new_mac="" + fi + + check_release + if check_target; then + if ! patch_release; then + return 0 + fi + fi + if [ "$xchanged" = "y" ]; then + remktar + fi + + if [ "$xchanged" = "y" ]; then + printf "\n'%s' was modified\n" "$archive" 1>&2 + else + printf "\n'%s' was NOT modified\n" "$archive" 1>&2 + fi + + x_ rm -Rf "$tmpromdel" +} + +check_release() +{ + if [ -L "$archive" ]; then + err "'$archive' is a symlink" "check_release" "$@" + fi + if e "$archive" f missing; then + err "'$archive' missing" "check_release" "$@" + fi + + archivename="`basename "$archive" || err "Can't get '$archive' name"`" \ + || err "can't get '$archive' name" "check_release" "$@" + + if [ -z "$archivename" ]; then + err "Can't determine archive name" "check_release" "$@" + fi + + case "$archivename" in + *_src.tar.xz) + err "'$archive' is a src archive!" "check_release" "$@" + ;; + grub_*|seagrub_*|custom_*|seauboot_*|seabios_withgrub_*) + err "'$archive' is a ROM image" "check_release" "$@" + ;; + *.tar.xz) _stripped_prefix="${archivename#*_}" + board="${_stripped_prefix%.tar.xz}" + ;; + *) + err "'$archive': cannot detect board" "check_release" "$@" + ;; + esac; : +} + +check_target() +{ + if [ "$board" != "${board#serprog_}" ]; then + return 1 + fi + + boarddir="$cbcfgsdir/$board" + + . "$boarddir/target.cfg" || \ + err "Can't read '$boarddir/target.cfg'" "check_target" "$@" + + if [ -z "$tree" ]; then + err "tree unset in '$boarddir/target.cfg'" "check_target" "$@" + fi + + x_ ./mk -d coreboot "$tree" + + ifdtool="elf/coreboot/$tree/ifdtool" + + if [ -n "$IFD_platform" ]; then + ifdprefix="-p $IFD_platform" + fi +} + +patch_release() +{ + if [ "$nuke" != "nuke" ]; then + x_ ./mk download "$board" + fi + + has_hashes="n" + tmpromdir="$tmpromdel/bin/$board" + + remkdir "${tmpromdir%"/bin/$board"}" + x_ tar -xf "$archive" -C "${tmpromdir%"/bin/$board"}" + + for _hashes in "vendorhashes" "blobhashes"; do + if e "$tmpromdir/$_hashes" f; then + has_hashes="y" + hashfile="$_hashes" + + break + fi + done + + if ! readkconfig; then + return 1 + elif [ -n "$new_mac" ] && [ -n "$CONFIG_GBE_BIN_PATH" ]; then + modify_mac + fi +} + +readkconfig() +{ + x_ rm -f "$xbtmp/cbcfg" + + fx_ scankconfig x_ find "$boarddir/config" -type f + + if e "$xbtmp/cbcfg" f missing; then + return 1 + fi + + . "$xbtmp/cbcfg" || \ + err "Can't read '$xbtmp/cbcfg'" "readkconfig" "$@" + + if ! setvfile "$@"; then + return 1 + fi +} + +scankconfig() +{ + for cbc in $checkvars; do + grep "$cbc" "$1" 2>/dev/null 1>>"$xbtmp/cbcfg" || : + done +} + +modify_mac() +{ + x_ cp "${CONFIG_GBE_BIN_PATH##*../}" "$xbtmp/gbe" + + if [ -n "$new_mac" ] && [ "$new_mac" != "restore" ]; then + x_ make -C util/nvmutil clean + x_ make -C util/nvmutil + + x_ "$nvm" "$xbtmp/gbe" setmac "$new_mac" + fi + + fx_ newmac x_ find "$tmpromdir" -maxdepth 1 -type f -name "*.rom" + + printf "\nThe following GbE NVM data will be written:\n" + x_ "$nvm" "$xbtmp/gbe" dump | grep -v "bytes read from file" || : +} + +newmac() +{ + if e "$1" f; then + xchanged="y" + x_ "$ifdtool" $ifdprefix -i GbE:"$xbtmp/gbe" "$1" -O "$1" + fi +} + +remktar() +{ + ( + x_ cd "${tmpromdir%"/bin/$board"}" + + printf "Re-building tar archive (please wait)\n" + mkrom_tarball "bin/$board" 1>/dev/null + + ) || err "Cannot re-generate '$archive'" "remktar" "$@" + + mv "${tmpromdir%"/bin/$board"}/bin/${relname}_${board}.tar.xz" \ + "$archive" || \ + err "'$archive' -> Can't overwrite" "remktar" "$@"; : +} diff --git a/include/lib.sh b/include/lib.sh index cd3e14ae..feb411e0 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -1,288 +1,267 @@ # SPDX-License-Identifier: GPL-3.0-only + # Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com> # Copyright (c) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com> # Copyright (c) 2020-2025 Leah Rowe <leah@libreboot.org> # Copyright (c) 2025 Alper Nebi Yasak <alpernebiyasak@gmail.com> -export LC_COLLATE=C -export LC_ALL=C +cbfstool="elf/coreboot/default/cbfstool" +rmodtool="elf/coreboot/default/rmodtool" -projectname="libreboot" -projectsite="https://libreboot.org/" +mkrom_tarball() +{ + update_xbmkver "$1" + mktarball "$1" "${1%/*}/${relname}_${1##*/}.tar.xz" -[ -z "${PATH+x}" ] && \ - export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" -xbmkpath="$PATH" + x_ rm -Rf "$1" +} -_ua="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" +update_xbmkver() +{ + xbmk_sanitize_version -ifdtool="elf/ifdtool/default/ifdtool" -cbfstool="elf/cbfstool/default/cbfstool" -rmodtool="elf/cbfstool/default/rmodtool" -grubdata="config/data/grub" -err="err_" + printf "%s\n" "$version" > "$1/.version" || \ + err "can't write '$1'" "update_xbmkver" "$@"; : -err_() -{ - printf "ERROR %s: %s\n" "$0" "$1" 1>&2 - exit 1 -} -x_() { - [ $# -lt 1 ] || "$@" || $err "Unhandled error for: $(echo "$@")"; : + printf "%s\n" "$versiondate" > "$1/.versiondate" || \ + err "can't write '$versiondate'" "update_xbmkver" "$@"; : } -setvars() -{ - _setvars="" && [ $# -lt 2 ] && $err "setvars: too few arguments" - val="$1" && shift 1 && for var in "$@"; do - _setvars="$var=\"$val\"; $_setvars" - done - printf "%s\n" "${_setvars% }" -} -chkvars() +xbmk_sanitize_version() { - for var in "$@"; do - eval "[ -n \"\${$var+x}\" ] || \$err \"$var unset\"" - eval "[ -n \"\$$var\" ] || \$err \"$var unset\"" - done; : + if [ -z "$version" ]; then + return 0 + fi + + version="`printf "%s\n" "$version" | sed -e 's/\t//g'`" + version="`printf "%s\n" "$version" | sed -e 's/\ //g'`" + version="`printf "%s\n" "$version" | sed -e 's/\.\.//g'`" + version="`printf "%s\n" "$version" | sed -e 's/\.\///g'`" + version="`printf "%s\n" "$version" | sed -e 's/\//-/g'`" + + version="${version#-}" + + if [ -z "$version" ]; then + err "'version' empty after sanitization" \ + "xbmk_sanitize_version" "$@" + fi } -setcfg() +mktarball() { - [ $# -gt 1 ] && printf "e \"%s\" f missing && return %s;\n" "$1" "$2" - [ $# -gt 1 ] || \ - printf "e \"%s\" f not && %s \"Missing config\";\n" "$1" "$err" - printf ". \"%s\" || %s \"Could not read config\";\n" "$1" "$err" + printf "Creating tar archive '%s' from directory '%s'\n" "$2" "$1" + + if [ "${2%/*}" != "$2" ]; then + x_ xbmkdir "${2%/*}" + fi + + x_ tar -c "$1" | xz -T$XBMK_THREADS -9e > "$2" || \ + err "can't make tarball '$1'" "mktarball" "$@" } e() { - es_t="e" && [ $# -gt 1 ] && es_t="$2" + es_t="e" + + if [ $# -gt 1 ]; then + es_t="$2" + fi + es2="already exists" estr="[ -$es_t \"\$1\" ] || return 1" - [ $# -gt 2 ] && estr="[ -$es_t \"\$1\" ] && return 1" && es2="missing" + + if [ $# -gt 2 ]; then + estr="[ -$es_t \"\$1\" ] && return 1" + es2="missing" + fi eval "$estr" + printf "%s %s\n" "$1" "$es2" 1>&2 } -install_packages() +setvars() { - [ $# -lt 2 ] && $err "fewer than two arguments" - [ $# -gt 2 ] && reinstall="$3" + _setvars="" - eval "`setcfg "config/dependencies/$2"`" + if [ $# -lt 2 ]; then - chkvars pkg_add pkglist - $pkg_add $pkglist || $err "Cannot install packages" + return 0 + else + val="$1" - [ -n "$aur_notice" ] && \ - printf "You need AUR packages: %s\n" "$aur_notice" 1>&2; : -} + shift 1 -eval "`setvars "" _nogit board reinstall versiondate aur_notice configdir \ - datadir version relname xbmktmp`" - -if [ $# -gt 0 ] && [ "$1" = "dependencies" ]; then - install_packages "$@" || exit 1 - exit 0 -fi - -id -u 1>/dev/null 2>/dev/null || $err "suid check failed (id -u)" -[ "$(id -u)" != "0" ] || $err "this command as root is not permitted" - -xbmkpwd="`pwd`" || $err "Cannot generate PWD" -export PWD="$xbmkpwd" - -for fv in version versiondate; do - eval "[ ! -f \".$fv\" ] || read -r $fv < \".$fv\" || :" -done - -python="python3" -command -v python3 1>/dev/null || python="python" -pyver="2" && [ "$python" = "python3" ] && pyver="3" -command -v $python 1>/dev/null || pyver="" -[ -z "$pyver" ] || $python -c 'import sys; print(sys.version_info[:])' \ - 1>/dev/null 2>/dev/null || $err "Cannot detect host Python version." -[ -n "$pyver" ] && \ - pyver="`$python -c 'import sys; print(sys.version_info[:])' | \ - awk '{print $1}'`" && pyver="${pyver#(}" && pyver="${pyver%,}" -[ "${pyver%%.*}" = "3" ] || $err "Wrong python version (must be v 3.x)" - -# XBMK_CACHE is a directory, for caching downloads and git repositories -[ -z "${XBMK_CACHE+x}" ] && export XBMK_CACHE="$xbmkpwd/cache" -[ -z "$XBMK_CACHE" ] && export XBMK_CACHE="$xbmkpwd/cache" -[ -L "$XBMK_CACHE" ] && [ "$XBMK_CACHE" = "$xbmkpwd/cache" ] && \ - $err "cachedir is default, $xbmkpwd/cache, but it exists and is a symlink" -[ -L "$XBMK_CACHE" ] && export XBMK_CACHE="$xbmkpwd/cache" -[ -f "$XBMK_CACHE" ] && $err "cachedir '$XBMK_CACHE' exists but it's a file" - -# unify all temporary files/directories in a single TMPDIR -[ -z "${TMPDIR+x}" ] || [ "${TMPDIR%_*}" = "/tmp/xbmk" ] || unset TMPDIR -[ -n "${TMPDIR+x}" ] && export TMPDIR="$TMPDIR" -if [ -z "${TMPDIR+x}" ]; then - [ -f "lock" ] && $err "$xbmkpwd/lock exists. Is a build running?" - export TMPDIR="/tmp" - export TMPDIR="$(mktemp -d -t xbmk_XXXXXXXX)" - xbmktmp="$TMPDIR" - touch lock || $err "cannot create 'lock' file" - x_ rm -Rf "$XBMK_CACHE/xbmkpath" "$XBMK_CACHE/gnupath" - x_ mkdir -p "$XBMK_CACHE/gnupath" "$XBMK_CACHE/xbmkpath" - export PATH="$XBMK_CACHE/xbmkpath:$XBMK_CACHE/gnupath:$PATH" - ( - # set up python v3.x in PATH, in case it's not set up correctly. - # see code above that detected the correct python3 command. - cd "$XBMK_CACHE/xbmkpath" || $err "can't cd $XBMK_CACHE/xbmkpath" - x_ ln -s "`command -v "$python"`" python - ) || $err "Can't set up python symlink in $XBMK_CACHE/xbmkpath" - - xbmk_rval=0 - ./mk "$@" || xbmk_rval=1 - rm -Rf "$xbmktmp" || xbmk_rval=1 - rm -f lock || xbmk_rval=1 - exit $xbmk_rval -fi -xbmktmp="$TMPDIR" - -# if "y": a coreboot target won't be built if target.cfg says release="n" -# (this is used to exclude certain build targets from releases) -[ -z "${XBMK_RELEASE+x}" ] && export XBMK_RELEASE="n" -[ "$XBMK_RELEASE" = "y" ] || export XBMK_RELEASE="n" - -[ -z "${XBMK_THREADS+x}" ] && export XBMK_THREADS=1 -expr "X$XBMK_THREADS" : "X-\{0,1\}[0123456789][0123456789]*$" \ - 1>/dev/null 2>/dev/null || export XBMK_THREADS=1 # user gave a non-integer - -[ -e ".git" ] || [ -f ".version" ] || printf "unknown\n" > .version || \ - $err "Cannot generate unknown .version file" -[ -e ".git" ] || [ -f ".versiondate" ] || printf "1716415872\n" > \ - .versiondate || $err "Cannot generate unknown .versiondate file" - -version_="$version" -[ ! -e ".git" ] || version="$(git describe --tags HEAD 2>&1)" || \ - version="git-$(git rev-parse HEAD 2>&1)" || version="$version_" -versiondate_="$versiondate" -[ ! -e ".git" ] || versiondate="$(git show --no-patch --no-notes \ - --pretty='%ct' HEAD)" || versiondate="$versiondate_" -for p in version versiondate; do - chkvars "$p" - eval "printf \"%s\\n\" \"\$$p\" > .$p || $err \"can't save $p\"" -done -relname="$projectname-$version" -export LOCALVERSION="-$projectname-${version%%-*}" - -check_defconfig() -{ - [ -d "$1" ] || $err "Target '$1' not defined." - for x in "$1"/config/*; do - [ -f "$x" ] && printf "%s\n" "$x" && return 1 - done; : + while [ $# -gt 0 ]; do + printf "%s=\"%s\"\n" "$1" "$val" + + shift 1 + done + fi } -remkdir() +# return 0 if project is single-tree, otherwise 1 +# e.g. coreboot is multi-tree, so 1 +singletree() { - rm -Rf "$1" || $err "remkdir: !rm -Rf \"$1\"" - mkdir -p "$1" || $err "remkdir: !mkdir -p \"$1\"" + ( fx_ "eval exit 1 && err" find "config/$1/"*/ -type f \ + -name "target.cfg" ) || return 1; : } -mkrom_tarball() +findpath() { - printf "%s\n" "$version" > "$1/.version" || $err "$1 !version" - printf "%s\n" "$versiondate" > "$1/.versiondate" || $err "$1 !vdate" + if [ $# -lt 1 ]; then + err "findpath: No arguments provided" "findpath" "$@" + fi - mktarball "$1" "${1%/*}/${relname}_${1##*/}.tar.xz" - x_ rm -Rf "$1" + while [ $# -gt 0 ] + do + found="`readlink -f "$1" 2>/dev/null`" || return 1; : + + if [ -z "$found" ]; then + found="`realpath "$1" 2>/dev/null`" || \ + return 1 + fi + + printf "%s\n" "$found" + + shift 1 + done } -mktarball() +pad_one_byte() { - [ "${2%/*}" = "$2" ] || x_ mkdir -p "${2%/*}" - x_ tar -c "$1" | xz -T$XBMK_THREADS -9e > "$2" || $err "mktarball2, $1" + paddedfile="`mktemp || err "mktemp pad_one_byte"`" || \ + err "can't make tmp file" "pad_one_byte" "$@" + + x_ cat "$1" config/data/coreboot/0 > "$paddedfile" || \ + err "could not pad file '$paddedfile'" "pad_one_byte" "$1"; : + + x_ mv "$paddedfile" "$1" } -mksha512sum() +unpad_one_byte() { - ( - [ "${1%/*}" != "$1" ] && x_ cd "${1%/*}" - sha512sum ./"${1##*/}" >> "$2" || $err "!sha512sum \"$1\" > \"$2\"" - ) || $err "failed to create tarball checksum" + xromsize="$(expr $(stat -c '%s' "$1") - 1)" || \ + err "can't increment file size" "unpad_one_byte" "$@" + + if [ $xromsize -lt 524288 ]; then + err "too small, $xromsize: $1" "unpad_one_byte" "$@" + fi + + unpaddedfile="`mktemp || err "mktemp unpad_one_byte"`" || \ + err "can't make tmp file" "unpad_one_byte" "$@" + + x_ dd if="$1" of="$unpaddedfile" bs=$xromsize count=1 + x_ mv "$unpaddedfile" "$1" } -rmgit() +build_sbase() { - ( - cd "$1" || $err "!cd gitrepo $1" - find . -name ".git" -exec rm -Rf {} + || $err "!rm .git $1" - find . -name ".gitmodules" -exec rm -Rf {} + || $err "!rm .gitmod $1" - ) || $err "Cannot remove .git/.gitmodules in $1" + if [ ! -f "$sha512sum" ]; then + x_ make -C "$xbmkpwd/util/sbase" + fi } -# return 0 if project is single-tree, otherwise 1 -# e.g. coreboot is multi-tree, so 1 -singletree() +remkdir() { - for targetfile in "config/${1}/"*/target.cfg; do - [ -e "$targetfile" ] && [ -f "$targetfile" ] && return 1; : - done; : + x_ rm -Rf "$@" + x_ xbmkdir "$@" } -# can grab from the internet, or copy locally. -# if copying locally, it can only copy a file. -download() +xbmkdir() { - _dlop="curl" && [ $# -gt 4 ] && _dlop="$5" - cached="$XBMK_CACHE/file/$4" - dl_fail="n" # 1 url, 2 url backup, 3 destination, 4 checksum - vendor_checksum "$4" "$cached" 2>/dev/null && dl_fail="y" - [ "$dl_fail" = "n" ] && e "$3" f && return 0 - x_ mkdir -p "${3%/*}" "$XBMK_CACHE/file" - for url in "$1" "$2"; do - [ "$dl_fail" = "n" ] && break - [ -z "$url" ] && continue - rm -f "$cached" || $err "!rm -f '$cached'" - if [ "$_dlop" = "curl" ]; then - curl --location --retry 3 -A "$_ua" "$url" \ - -o "$cached" || wget --tries 3 -U "$_ua" "$url" \ - -O "$cached" || continue - elif [ "$_dlop" = "copy" ]; then - [ -L "$url" ] && \ - printf "dl %s %s %s %s: '%s' is a symlink\n" \ - "$1" "$2" "$3" "$4" "$url" 1>&2 && continue - [ ! -f "$url" ] && \ - printf "dl %s %s %s %s: '%s' not a file\n" \ - "$1" "$2" "$3" "$4" "$url" 1>&2 && continue - cp "$url" "$cached" || continue - else - $err "$1 $2 $3 $4: Unsupported dlop type: '$_dlop'" + while [ $# -gt 0 ] + do + if [ ! -d "$1" ]; then + x_ mkdir -p "$1" fi - vendor_checksum "$4" "$cached" || dl_fail="n" + + shift 1 done - [ "$dl_fail" = "y" ] && $err "$1 $2 $3 $4: not downloaded" - [ "$cached" = "$3" ] || x_ cp "$cached" "$3"; : } -vendor_checksum() +fx_() { - [ "$(sha512sum "$2" | awk '{print $1}')" != "$1" ] || return 1 - printf "Bad checksum for file: %s\n" "$2" 1>&2; rm -f "$2" || :; : + xchk fx_ "$@" + xcmd="$1" + + xfile="`mktemp || err "can't create tmpfile"`" || \ + err "can't make tmpfile" "fx_" "$@" + + x_ rm -f "$xfile" + x_ touch "$xfile" + + shift 1 + + "$@" 2>/dev/null | sort 1>"$xfile" 2>/dev/null || \ + err "can't sort to '$xfile'" "fx_" "$xcmd" "$@" + + dx_ "$xcmd" "$xfile" || : + x_ rm -f "$xfile" +} + +dx_() +{ + xchk dx_ "$@" + + if [ ! -f "$2" ]; then + return 0 + fi + + while read -r fx; do + $1 "$fx" || return 1; : + done < "$2" || err "cannot read '$2'" "dx_" "$@"; : +} + +x_() +{ + if [ $# -lt 1 ]; then + return 0 + elif [ -z "$1" ]; then + err "Empty first arg" "x_" "$@" + else + "$@" || err "Unhandled error" "x_" "$@" + fi } -cbfs() +xchk() { - ccmd="add-payload" && [ $# -gt 3 ] && [ $# -lt 5 ] && ccmd="add" - lzma="-c lzma" && [ $# -gt 3 ] && [ $# -lt 5 ] && lzma="-t $4" + if [ $# -lt 3 ]; then + err "$1 needs at least two arguments" "xchk" "$@" + elif [ -z "$2" ] || [ -z "$3" ]; then + err "arguments must not be empty" "xchk" "$@" + fi +} - [ $# -gt 4 ] && [ "$5" = "0x1110000" ] && \ - ccmd="add-flat-binary" && \ - lzma="-c lzma -l 0x1110000 -e 0x1110000" +err() +{ + if [ $# -eq 1 ]; then + printf "ERROR %s: %s\n" "$0" "$1" 1>&2 || : + elif [ $# -gt 1 ]; then + printf "ERROR %s: %s: in command with args: " "$0" "$1" 1>&2 + shift 1 + xprintf "$@" 1>&2 + else + printf "ERROR, but no arguments provided to err\n" 1>&2 + fi - x_ "$cbfstool" "$1" $ccmd -f "$2" -n "$3" $lzma + exit 1 } -mk() +xprintf() { - mk_flag="$1" || $err "No argument given" - shift 1 && for mk_arg in "$@"; do - x_ ./mk $mk_flag $mk_arg - done; : + xprintfargs=0 + while [ $# -gt 0 ]; do + printf "\"%s\"" "$1" + if [ $# -gt 1 ]; then + printf " " + fi + + xprintfargs=1 + shift 1 + done + if [ $xprintfargs -gt 0 ]; then + printf "\n" + fi } diff --git a/include/mrc.sh b/include/mrc.sh index 6e00292b..f1e31fa7 100644 --- a/include/mrc.sh +++ b/include/mrc.sh @@ -1,59 +1,77 @@ # SPDX-License-Identifier: GPL-2.0-only # Logic based on util/chromeos/crosfirmware.sh in coreboot cfc26ce278. -# Modifications in this version are Copyright 2021, 2023 and 2024 Leah Rowe. +# Modifications in this version are Copyright 2021,2023-2025 Leah Rowe. # Original copyright detailed in repo: https://review.coreboot.org/coreboot/ -eval "`setvars "" MRC_url MRC_url_bkup MRC_hash MRC_board SHELLBALL`" +MRC_url="" +MRC_url_bkup="" +MRC_hash="" +MRC_board="" +SHELLBALL="" + +extract_refcode() +{ + extract_mrc + + # cbfstool after coreboot 4.13 changed the stage file attribute scheme, + # and refcode is extracted from an image using the old scheme. we use + # cbfstool from coreboot 4.11_branch, the tree used by ASUS KGPE-D16: + + if [ -z "$cbfstoolref" ]; then + err "cbfstoolref not set" "extract_refcode" "$@" + fi + + x_ xbmkdir "${_pre_dest%/*}" + + x_ "$cbfstoolref" "$appdir/bios.bin" extract \ + -m x86 -n fallback/refcode -f "$appdir/ref" -r RO_SECTION + + # enable the Intel GbE device, if told by offset MRC_refcode_gbe + if [ -n "$MRC_refcode_gbe" ]; then + x_ dd if="config/ifd/hp820g2/1.bin" of="$appdir/ref" bs=1 \ + seek=$MRC_refcode_gbe count=1 conv=notrunc; : + fi + + x_ mv "$appdir/ref" "$_pre_dest" +} extract_mrc() { - chkvars "MRC_board" "CONFIG_MRC_FILE" + if [ -z "$MRC_board" ]; then + err "MRC_board unset" "extract_mrc" "$@" + elif [ -z "$CONFIG_MRC_FILE" ]; then + err "CONFIG_MRC_FILE unset" "extract_mrc" "$@" + fi + SHELLBALL="chromeos-firmwareupdate-$MRC_board" ( - x_ cd "$appdir" - extract_partition "${MRC_url##*/}" - extract_archive "$SHELLBALL" . - ) || $err "mrc download/extract failure" + x_ cd "$appdir" + extract_partition "${MRC_url##*/}" + extract_archive "$SHELLBALL" . - "$cbfstool" "$appdir/"bios.bin extract -n mrc.bin \ - -f "$_dest" -r RO_SECTION || $err "extract_mrc: !$cbfstool $_dest" + ) || err "mrc download/extract failure" "extract_mrc" "$@" - [ -n "$CONFIG_REFCODE_BLOB_FILE" ] && extract_refcode; : + x_ "$cbfstool" "$appdir/"bios.bin extract -n mrc.bin \ + -f "${_pre_dest%/*}/mrc.bin" -r RO_SECTION } extract_partition() { printf "Extracting ROOT-A partition\n" + ROOTP=$( printf "unit\nB\nprint\nquit\n" | \ parted "${1%.zip}" 2>/dev/null | grep "ROOT-A" ) START=$(( $( echo $ROOTP | cut -f2 -d\ | tr -d "B" ) )) + SIZE=$(( $( echo $ROOTP | cut -f4 -d\ | tr -d "B" ) )) - dd if="${1%.zip}" of="root-a.ext2" bs=1024 skip=$(( $START / 1024 )) \ - count=$(( $SIZE / 1024 )) || $err "ex dd ${1%.zip}, root-a.ext2" + x_ dd if="${1%.zip}" of="root-a.ext2" bs=1024 \ + skip=$(( $START / 1024 )) count=$(( $SIZE / 1024 )) printf "cd /usr/sbin\ndump chromeos-firmwareupdate %s\nquit" \ - "$SHELLBALL" | debugfs "root-a.ext2" || $err "!extract shellball" -} - -extract_refcode() -{ - _refdest="${CONFIG_REFCODE_BLOB_FILE##*../}" - e "$_refdest" f && return 0 - - # cbfstool changed the attributes scheme for stage files, - # incompatible with older versions before coreboot 4.14, - # so we need coreboot 4.13 cbfstool for certain refcode files - chkvars cbfstoolref - mkdir -p "${_refdest%/*}" || $err "ref: !mkdir -p ${_refdest%/*}" - - x_ "$cbfstoolref" "$appdir/bios.bin" extract \ - -m x86 -n fallback/refcode -f "$_refdest" -r RO_SECTION - - # enable the Intel GbE device, if told by offset MRC_refcode_gbe - [ -z "$MRC_refcode_gbe" ] || x_ dd if="config/ifd/hp820g2/1.bin" \ - of="$_refdest" bs=1 seek=$MRC_refcode_gbe count=1 conv=notrunc; : + "$SHELLBALL" | debugfs "root-a.ext2" || \ + err "!extract shellball" "extract_partition" "$@" } diff --git a/include/release.sh b/include/release.sh new file mode 100644 index 00000000..339ab3f5 --- /dev/null +++ b/include/release.sh @@ -0,0 +1,130 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +# Copyright (c) 2023-2025 Leah Rowe <leah@libreboot.org> + +reldir="" +reldest="" +vdir="" +rsrc="" +relmode="" + +release() +{ + export XBMK_RELEASE="y" + + reldir="release" + + while getopts m: option + do + if [ -z "$OPTARG" ]; then + err "empty argument not allowed" "release" "$@" + fi + + case "$option" in + m) + relmode="$OPTARG" + ;; + *) + err "invalid option '-$option'" "release" "$@" + ;; + esac + done + + reldest="$reldir/$version" + if [ -e "$reldest" ]; then + err "already exists: \"$reldest\"" "release" "$@" + fi + + vdir="`mktemp -d || err "can't make vdir"`" || \ + err "can't make tmp vdir" "release" "$@" + vdir="$vdir/$version" + + rsrc="$vdir/${relname}_src" + + remkdir "$vdir" + x_ git clone . "$rsrc" + update_xbmkver "$rsrc" + + prep_release src + prep_release tarball + if [ "$relmode" != "src" ]; then + prep_release bin + fi + x_ rm -Rf "$rsrc" + + x_ xbmkdir "$reldir" + x_ mv "$vdir" "$reldir" + x_ rm -Rf "${vdir%"/$version"}" + + printf "\n\nDONE! Check release files under %s\n" "$reldest" +} + +prep_release() +{ + ( + if [ "$1" != "tarball" ]; then + x_ cd "$rsrc" + if [ ! -e "cache" ]; then + x_ ln -s "$XBMK_CACHE" "cache" + fi + fi + + prep_release_$1 + + ) || err "can't prep release $1" "prep_release" "$@" +} + +prep_release_src() +{ + x_ cp -R "util/sbase" "util/sbase2" + + x_ ./mk -f + + fx_ "x_ rm -Rf" x_ find . -name ".git" + fx_ "x_ rm -Rf" x_ find . -name ".gitmodules" + + ( fx_ nuke x_ find config -type f -name "nuke.list" ) || \ + err "can't prune project files" "prep_release_src" "$@"; : +} + +nuke() +{ + r="$rsrc/src/${1#config/}" + + if [ -d "${r%/*}" ]; then + x_ cd "${r%/*}" + + dx_ "x_ rm -Rf" "$rsrc/$1" + fi +} + +prep_release_tarball() +{ + git log --graph --pretty=format:'%Cred%h%Creset %s %Creset' \ + --abbrev-commit > "$rsrc/CHANGELOG" || \ + err "can't create '$rsrc/CHANGELOG'" "prep_release_tarball" "$@" + + x_ rm -f "$rsrc/lock" "$rsrc/cache" + x_ rm -Rf "$rsrc/xbmkwd" "$rsrc/util/sbase" + x_ mv "$rsrc/util/sbase2" "$rsrc/util/sbase" + + ( + x_ cd "${rsrc%/*}" + x_ mktarball "${rsrc##*/}" "${rsrc##*/}.tar.xz" + + ) || err "can't create src tarball" "prep_release_tarball" "$@"; : +} + +prep_release_bin() +{ + x_ ./mk -d coreboot + + x_ ./mk -b coreboot + x_ ./mk -b pico-serprog + x_ ./mk -b stm32-vserprog + x_ ./mk -b pcsx-redux + + fx_ mkrom_tarball x_ find bin -maxdepth 1 -type d -name "serprog_*" + + x_ mv bin ../roms +} diff --git a/include/rom.sh b/include/rom.sh index 710df853..6f0e3529 100644 --- a/include/rom.sh +++ b/include/rom.sh @@ -1,70 +1,59 @@ # SPDX-License-Identifier: GPL-3.0-or-later + # Copyright (c) 2014-2016,2020-2021,2023-2025 Leah Rowe <leah@libreboot.org> # Copyright (c) 2021-2022 Ferass El Hafidi <vitali64pmemail@protonmail.com> # Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com> # Copyright (c) 2022-2023 Alper Nebi Yasak <alpernebiyasak@gmail.com> # Copyright (c) 2023-2024 Riku Viitanen <riku.viitanen@protonmail.com> -mkserprog() -{ - [ $# -lt 1 ] && $err "mkserprog: no arguments provided" - [ "$_f" = "-d" ] && return 0 # dry run - - [ "$1" = "pico" ] && mkpicotool - - basename -as .h "$serdir/"*.h > "$xbmktmp/ser" || \ - $err "!mk $1 $xbmktmp" - - while read -r sertarget; do - [ "$1" = "pico" ] && - x_ rm -rf "$sersrc/build" \ - && (pt=$(x_ grep "pico_cmake_set" \ - "$picosdk/src/boards/include/boards/$sertarget.h" \ - | grep "PICO_PLATFORM" | cut -d= -f2 | tr -d [:blank:]) - mkdir -p "$sersrc/build_$pt" - ln -srf "$sersrc/build_$pt/" "$sersrc/build") \ - && x_ cmake -DPICO_BOARD="$sertarget" \ - -DPICO_SDK_PATH="$picosdk" -B "$sersrc/build" "$sersrc" \ - -Dpicotool_DIR="$picotool/picotool" \ - && x_ cmake --build "$sersrc/build" - [ "$1" = "stm32" ] && x_ make -C "$sersrc" \ - libopencm3-just-make BOARD=$sertarget && x_ make -C \ - "$sersrc" BOARD=$sertarget - x_ mkdir -p "bin/serprog_$1" - x_ mv "$serx" "bin/serprog_$1/serprog_$sertarget.${serx##*.}" - done < "$xbmktmp/ser" - - [ "$XBMK_RELEASE" = "y" ] && mkrom_tarball "bin/serprog_$1"; : -} +grubdata="config/data/grub" -mkpicotool() +buildser() { - rm -Rf "$picotool" || $err "Can't remove picotool builddir" - ( - x_ cd src/picotool - x_ cmake -DCMAKE_INSTALL_PREFIX=xbmkbin -DPICOTOOL_FLAT_INSTALL=1 \ - -DPICO_SDK_PATH=../pico-sdk - x_ make install - ) || $err "Can't build picotool"; : + if [ "$1" = "pico" ]; then + x_ cmake -DPICO_BOARD="$2" \ + -DPICO_SDK_PATH="$picosdk" -B "$sersrc/build" "$sersrc" + x_ cmake --build "$sersrc/build" + elif [ "$1" = "stm32" ]; then + x_ make -C "$sersrc" libopencm3-just-make BOARD=$2 + x_ make -C "$sersrc" BOARD=$2 + fi + + x_ xbmkdir "bin/serprog_$1" + x_ mv "$serx" "bin/serprog_$1/serprog_$2.${serx##*.}" } copyps1bios() { - x_ rm -Rf bin/playstation - x_ mkdir -p bin/playstation + $if_dry_build \ + return 0 + + remkdir "bin/playstation" x_ cp src/pcsx-redux/src/mips/openbios/openbios.bin bin/playstation - printf "MIT License\n\nCopyright (c) 2019-2024 PCSX-Redux authors\n\n" \ - > bin/playstation/COPYING.txt || $err "!pcsx-redux copyright" - cat config/snippet/mit >>bin/playstation/COPYING.txt || $err "!pcsx MIT" + printf "MIT License\n\nCopyright (c) 2019-2025 PCSX-Redux authors\n\n" \ + > bin/playstation/COPYING.txt || \ + err "can't write PCSX Redux copyright info" "copyps1bios" "$@" + + x_ cat config/snippet/mit >>bin/playstation/COPYING.txt || \ + err "can't copy MIT license snippet" "copyps1bios" "$@" } mkpayload_grub() { - eval "`setvars "" grub_modules grub_install_modules`" - $dry eval "`setcfg "$grubdata/module/$tree"`" - $dry x_ rm -f "$srcdir/grub.elf"; $dry \ - x_ "$srcdir/grub-mkstandalone" --grub-mkimage="$srcdir/grub-mkimage" \ + grub_modules="" + grub_install_modules="" + + $if_dry_build \ + return 0 + + . "$grubdata/module/$tree" || \ + err "Can't read '$grubdata/module/$tree'" "mkpayload_grub" "$@" + + x_ rm -f "$srcdir/grub.elf" + + x_ "$srcdir/grub-mkstandalone" \ + --grub-mkimage="$srcdir/grub-mkimage" \ -O i386-coreboot -o "$srcdir/grub.elf" -d "${srcdir}/grub-core/" \ --fonts= --themes= --locales= --modules="$grub_modules" \ --install-modules="$grub_install_modules" \ @@ -72,162 +61,337 @@ mkpayload_grub() "/boot/grub/grub.cfg=$grubdata/memdisk.cfg"; : } -mkvendorfiles() +corebootpremake() { - [ -z "$mode" ] && $dry cook_coreboot_config - check_coreboot_utils "$tree" + if [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ]; then + return 0 + fi + + $if_not_dry_build \ + cook_coreboot_config + + fx_ check_coreboot_util printf "cbfstool\nifdtool\n" + printf "%s\n" "${version%%-*}" > "$srcdir/.coreboot-version" || \ - $err "!mk $srcdir .coreboot-version" - [ -z "$mode" ] && [ "$target" != "$tree" ] && \ - x_ ./mk download "$target"; : + err "!mk $srcdir .coreboot-version" "corebootpremake" "$@" + + if [ -z "$mode" ] && [ "$target" != "$tree" ]; then + x_ ./mk download "$target" + fi } cook_coreboot_config() { - [ -f "$srcdir/.config" ] || return 0 - printf "CONFIG_CCACHE=y\n" >> "$srcdir/.config" || \ - $err "$srcdir/.config: Could not enable ccache" - make -C "$srcdir" oldconfig || $err "Could not cook $srcdir/.config"; : + if [ -z "$mode" ] && [ -f "$srcdir/.config" ]; then + printf "CONFIG_CCACHE=y\n" >> "$srcdir/.config" || \ + err "can't cook '$srcdir'" "cook_coreboot_config" "$@" + fi } -check_coreboot_utils() +check_coreboot_util() { - for util in cbfstool ifdtool; do - [ "$badhash" = "y" ] && x_ rm -f "elf/$util/$1/$util" - e "elf/$util/$1/$util" f && continue - - utilelfdir="elf/$util/$1" - utilsrcdir="src/coreboot/$1/util/$util" - - utilmode="" && [ -n "$mode" ] && utilmode="clean" - x_ make -C "$utilsrcdir" $utilmode -j$XBMK_THREADS $makeargs - if [ -z "$mode" ] && [ ! -f "$utilelfdir/$util" ]; then - x_ mkdir -p "$utilelfdir" - x_ cp "$utilsrcdir/$util" "$utilelfdir" - [ "$util" = "cbfstool" ] || continue - x_ cp "$utilsrcdir/rmodtool" "$utilelfdir" - elif [ -n "$mode" ]; then - x_ rm -Rf "$utilelfdir" - fi; : - done; : + if [ "$badhash" = "y" ]; then + x_ rm -f "elf/coreboot/$tree/$1" + fi + if e "elf/coreboot/$tree/$1" f; then + return 0 + fi + + utilelfdir="elf/coreboot/$tree" + utilsrcdir="src/coreboot/$tree/util/$1" + + utilmode="" + if [ -n "$mode" ]; then + utilmode="clean" + fi + + x_ make -C "$utilsrcdir" $utilmode -j$XBMK_THREADS $makeargs + + if [ -n "$mode" ]; then + # TODO: is this rm command needed? + + x_ rm -Rf "$utilelfdir" + + return 0 + elif [ -n "$mode" ] || [ -f "$utilelfdir/$1" ]; then + return 0 + fi + + x_ xbmkdir "$utilelfdir" + x_ cp "$utilsrcdir/$1" "$utilelfdir" + + if [ "$1" = "cbfstool" ]; then + x_ cp "$utilsrcdir/rmodtool" "$utilelfdir" + fi +} + +coreboot_pad_one_byte() +{ + if [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ]; then + return 0 + fi + + $if_not_dry_build \ + pad_one_byte "$srcdir/build/coreboot.rom" } mkcorebootbin() { - [ "$target" = "$tree" ] && return 0 + if [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ]; then + return 0 + fi + + $if_not_dry_build \ + check_coreboot_util cbfstool + + $if_not_dry_build \ + check_coreboot_util ifdtool + + for y in "$target_dir/config"/*; do + defconfig="$y" + mkcorebootbin_real + done + + mkcoreboottar +} + +mkcorebootbin_real() +{ + if [ "$target" = "$tree" ]; then + return 0 + fi - tmprom="$xbmktmp/coreboot.rom" - $dry x_ cp "$srcdir/build/coreboot.rom" "$tmprom" + tmprom="$xbtmp/coreboot.rom" initmode="${defconfig##*/}" displaymode="${initmode##*_}" - [ "$displaymode" = "$initmode" ] && displaymode="" # "normal" config + if [ "$displaymode" = "$initmode" ]; then + # blank it for "normal" or "fspgop" configs: + + displaymode="" + fi initmode="${initmode%%_*}" - cbfstool="elf/cbfstool/$tree/cbfstool" + cbfstool="elf/coreboot/$tree/cbfstool" - [ "$payload_uboot_i386" = "y" ] && \ - [ "$payload_uboot_amd64" = "y" ] && \ - $err "'$target' enables 32- and 64-bit x86 U-Boot" + # cbfstool option backends, if they exist + cbfscfg="config/coreboot/$target/cbfs.cfg" - if [ "$payload_uboot_i386" = "y" ] || \ - [ "$payload_uboot_amd64" = "y" ]; then - printf "'%s' has x86 U-Boot; assuming SeaBIOS=y\n" \ - "$target" 1>&2 + elfrom="elf/coreboot/$tree/$target/$initmode" + if [ -n "$displaymode" ]; then + elfrom="${elfrom}_$displaymode" + fi + elfrom="$elfrom/coreboot.rom" + + $if_not_dry_build \ + x_ cp "$elfrom" "$tmprom" + + $if_not_dry_build \ + unpad_one_byte "$tmprom" + + if [ -n "$payload_uboot" ] && [ "$payload_uboot" != "amd64" ] && \ + [ "$payload_uboot" != "i386" ] && [ "$payload_uboot" != "arm64" ] + then + err "'$target' defines bad u-boot type '$payload_uboot'" \ + "mkcorebootbin_real" "$@" + fi + + if [ -n "$payload_uboot" ] && [ "$payload_uboot" != "arm64" ]; then payload_seabios="y" fi - [ -n "$uboot_config" ] || uboot_config="default" - [ "$payload_uboot" = "y" ] || payload_seabios="y" - [ "$payload_grub" = "y" ] && payload_seabios="y" - [ "$payload_seabios" = "y" ] && [ "$payload_uboot" = "y" ] && \ - $dry $err "$target: U-Boot(arm64) and SeaBIOS/GRUB both enabled." + if [ -z "$uboot_config" ]; then + uboot_config="default" + fi + if [ "$payload_grub" = "y" ]; then + payload_seabios="y" + fi + if [ "$payload_seabios" = "y" ] && [ "$payload_uboot" = "arm64" ]; then + $if_not_dry_build \ + err "$target: U-Boot arm / SeaBIOS/GRUB both enabled" \ + "mkcorebootbin_real" "$@" + fi - [ -z "$grub_scan_disk" ] && grub_scan_disk="nvme ahci ata" + if [ -z "$grub_scan_disk" ]; then + grub_scan_disk="nvme ahci ata" + fi + if [ -z "$grubtree" ]; then + grubtree="default" + fi + grubelf="elf/grub/$grubtree/$grubtree/payload/grub.elf" - [ -n "$grubtree" ] || grubtree="default" - grubelf="elf/grub/$grubtree/payload/grub.elf" + if [ "$payload_memtest" != "y" ]; then + payload_memtest="n" + fi + if [ "$(uname -m)" != "x86_64" ]; then + payload_memtest="n" + fi - [ "$payload_memtest" = "y" ] || payload_memtest="n" - [ "$(uname -m)" = "x86_64" ] || payload_memtest="n" + if [ "$payload_grubsea" = "y" ] && [ "$initmode" = "normal" ]; then + payload_grubsea="n" + fi + if [ "$payload_grub" != "y" ]; then + payload_grubsea="n" + fi - [ "$payload_grubsea" = "y" ] && [ "$initmode" = "normal" ] && \ - payload_grubsea="n" - [ "$payload_grub" = "y" ] || payload_grubsea="n" + $if_dry_build \ + return 0 + + if [ -f "$cbfscfg" ]; then + dx_ add_cbfs_option "$cbfscfg" + fi - if $dry grep "CONFIG_PAYLOAD_NONE=y" "$defconfig"; then - [ "$payload_seabios" = "y" ] && pname="seabios" && \ - $dry add_seabios - [ "$payload_uboot" = "y" ] && pname="uboot" && $dry add_uboot + if grep "CONFIG_PAYLOAD_NONE=y" "$defconfig"; then + if [ "$payload_seabios" = "y" ]; then + pname="seabios" + add_seabios + fi + if [ "$payload_uboot" = "arm64" ]; then + pname="uboot" + add_uboot + fi else pname="custom" - $dry cprom + cprom fi; : } +# options for cbfs backend (as opposed to nvram/smmstore): + +add_cbfs_option() +{ + # TODO: input sanitization (currently mitigated by careful config) + + op_name="`printf "%s\n" "$1" | awk '{print $1}'`" + op_arg="`printf "%s\n" "$1" | awk '{print $2}'`" + + if [ -z "$op_name" ] || [ -z "$op_arg" ]; then + return 0 + fi + + ( x_ "$cbfstool" "$tmprom" remove -n "option/$op_name" 1>/dev/null \ + 2>/dev/null ) || : + + x_ "$cbfstool" "$tmprom" add-int -i "$op_arg" -n "option/$op_name" +} + +# in our design, SeaBIOS is also responsible for starting either +# a GRUB or U-Boot payload. this is because SeaBIOS is generally +# a more reliable codebase, so it's less likely to cause a brick +# during testing and development, or user configuration. if one +# of the u-boot or grub payloads fails, the user still has a +# functional SeaBIOS setup to fall back on. watch: + add_seabios() { - if [ "$payload_uboot_i386" = "y" ] || \ - [ "$payload_uboot_amd64" = "y" ]; then - $dry add_uboot + if [ -n "$payload_uboot" ] && [ "$payload_uboot" != "arm64" ]; then + # we must add u-boot first, because it's added as a flat + # binary at a specific offset for secondary program loader + + $if_not_dry_build \ + add_uboot fi - _seabioself="elf/seabios/default/$initmode/bios.bin.elf" - _seaname="fallback/payload" && [ "$payload_grubsea" = "y" ] && \ - _seaname="seabios.elf" + _seabioself="elf/seabios/default/default/$initmode/bios.bin.elf" + [ "$initmode" = "fspgop" ] && \ + _seabioself="elf/seabios/default/default/libgfxinit/bios.bin.elf" + + _seaname="fallback/payload" + if [ "$payload_grubsea" = "y" ]; then + _seaname="seabios.elf" + fi cbfs "$tmprom" "$_seabioself" "$_seaname" + x_ "$cbfstool" "$tmprom" add-int -i 3000 -n etc/ps2-keyboard-spinup - _z="2" && [ "$initmode" = "vgarom" ] && _z="0" - x_ "$cbfstool" "$tmprom" add-int -i $_z -n etc/pci-optionrom-exec + opexec="2" + if [ "$initmode" = "vgarom" ]; then + opexec="0" + fi + x_ "$cbfstool" "$tmprom" add-int -i $opexec -n etc/pci-optionrom-exec + x_ "$cbfstool" "$tmprom" add-int -i 0 -n etc/optionroms-checksum - [ "$initmode" = "libgfxinit" ] && \ - cbfs "$tmprom" "$seavgabiosrom" vgaroms/seavgabios.bin raw + if [ "$initmode" = "libgfxinit" ] || [ "$initmode" = "fspgop" ]; then + cbfs "$tmprom" "$seavgabiosrom" vgaroms/seavgabios.bin raw + fi + + if [ "$payload_memtest" = "y" ]; then + # because why not have memtest? + + cbfs "$tmprom" "elf/memtest86plus/memtest.bin" img/memtest + fi + + if [ "$payload_grub" = "y" ]; then + add_grub + fi + + if [ "$payload_grubsea" != "y" ]; then + # ROM image where SeaBIOS doesn't load grub/u-boot first. + # U-Boot/GRUB available in ESC menu if enabled for the board - [ "$payload_memtest" = "y" ] && cbfs "$tmprom" \ - "elf/memtest86plus/memtest.bin" img/memtest + cprom + fi + + # now make "SeaUBoot" and "SeaGRUB" images, where SeaBIOS auto-loads + # SeaBIOS or U-Boot first; users can bypass this by pressing ESC + # in the SeaBIOS menu, to boot devices using SeaBIOS itself instead - [ "$payload_grub" = "y" ] && add_grub + if [ "$payload_uboot" = "amd64" ] && \ + [ "$displaymode" != "txtmode" ] && \ + [ "$initmode" != "normal" ] && [ "$payload_grubsea" != "y" ]; then + pname="seauboot" + cprom "seauboot" + fi - [ "$payload_grubsea" != "y" ] && cprom - [ "$payload_uboot_amd64" = "y" ] && [ "$displaymode" != "txtmode" ] && \ - [ "$initmode" != "normal" ] && [ "$payload_grubsea" != "y" ] && \ - pname="seauboot" && cprom "seauboot" - [ "$payload_grub" = "y" ] && pname="seagrub" && mkseagrub; : + if [ "$payload_grub" = "y" ]; then + pname="seagrub" + mkseagrub + fi } add_grub() { - _grubname="img/grub2" && [ "$payload_grubsea" = "y" ] && \ - _grubname="fallback/payload" + # path in CBFS for the GRUB payload + _grubname="img/grub2" + if [ "$payload_grubsea" = "y" ]; then + _grubname="fallback/payload" + fi + cbfs "$tmprom" "$grubelf" "$_grubname" + printf "set grub_scan_disk=\"%s\"\n" "$grub_scan_disk" \ - > "$xbmktmp/tmpcfg" || $err "$target: !insert scandisk" - cbfs "$tmprom" "$xbmktmp/tmpcfg" scan.cfg raw - [ "$initmode" != "normal" ] && [ "$displaymode" != "txtmode" ] && \ - cbfs "$tmprom" "$grubdata/background/background1280x800.png" \ - "background.png" raw; : + > "$xbtmp/tmpcfg" || \ + err "$target: !insert scandisk" "add_grub" "$@" + + cbfs "$tmprom" "$xbtmp/tmpcfg" scan.cfg raw + + if [ "$initmode" != "normal" ] && [ "$displaymode" != "txtmode" ]; then + cbfs "$tmprom" "$grubdata/background/background1280x800.png" \ + "background.png" raw + fi } mkseagrub() { - [ "$payload_grubsea" = "y" ] && pname="grub" - [ "$payload_grubsea" = "y" ] || \ - cbfs "$tmprom" "$grubdata/bootorder" bootorder raw - for keymap in config/data/grub/keymap/*.gkb; do - [ -f "$keymap" ] && cprom "${keymap##*/}"; : - done; : + if [ "$payload_grubsea" = "y" ]; then + pname="grub" + else + cbfs "$tmprom" "$grubdata/bootorder" bootorder raw + fi + + fx_ cprom x_ find "$grubdata/keymap" -type f -name "*.gkb" } add_uboot() { if [ "$displaymode" = "txtmode" ]; then - printf "cb/%s: Cannot use U-Boot in text mode\n" \ - "$target" 1>&2 + printf "cb/%s: Can't use U-Boot in text mode\n" "$target" 1>&2 + return 0 elif [ "$initmode" = "normal" ]; then - printf "cb/%s: Cannot use U-Boot in normal initmode\n" \ + printf "cb/%s: Can't use U-Boot in normal initmode\n" \ "$target" 1>&2 + return 0 fi @@ -237,52 +401,114 @@ add_uboot() # aarch64 targets: ubcbfsargs="" ubpath="fallback/payload" + ubtree="default" ubtarget="$target" + # override for x86/x86_64 targets: - if [ "$payload_uboot_i386" = "y" ] || \ - [ "$payload_uboot_amd64" = "y" ]; then + if [ -n "$payload_uboot" ] && [ "$payload_uboot" != "arm64" ]; then ubcbfsargs="-l 0x1110000 -e 0x1110000" # 64-bit and 32-bit - # on 64-bit, 0x1120000 is the SPL, and stub before that + # on 64-bit, 0x1120000 is the SPL, with a stub that + # loads it, located at 0x1110000 + ubpath="img/u-boot" # 64-bit + ubtree="x86_64" ubtarget="amd64coreboot" - [ "$payload_uboot_i386" = "y" ] && ubpath="u-boot" # 32-bit - [ "$payload_uboot_i386" = "y" ] && ubtarget="i386coreboot"; : + + if [ "$payload_uboot" = "i386" ] + then + ubpath="u-boot" # 32-bit + ubtree="x86" + ubtarget="i386coreboot"; : + fi fi - ubdir="elf/u-boot/$ubtarget/$uboot_config" + ubdir="elf/u-boot/$ubtree/$ubtarget/$uboot_config" # aarch64 targets: - ubootelf="$ubdir/u-boot.elf" && [ ! -f "$ubootelf" ] && \ - ubootelf="$ubdir/u-boot" + ubootelf="$ubdir/u-boot.elf" + if [ ! -f "$ubootelf" ]; then + ubootelf="$ubdir/u-boot" + fi + # override for x86/x86_64 targets: - [ "$payload_uboot_i386" = "y" ] && ubootelf="$ubdir/u-boot-dtb.bin" - [ "$payload_uboot_amd64" = "y" ] && \ - ubootelf="$ubdir/u-boot-x86-with-spl.bin" # EFI-compatible + if [ "$payload_uboot" = "i386" ]; then + ubootelf="$ubdir/u-boot-dtb.bin" + elif [ "$payload_uboot" = "amd64" ]; then + ubootelf="$ubdir/u-boot-x86-with-spl.bin" # EFI-compatible + fi cbfs "$tmprom" "$ubootelf" "$ubpath" $ubcbfsargs - [ "$payload_seabios" = "y" ] || cprom; : + if [ "$payload_seabios" != "y" ]; then + cprom + fi } +# prepare the final image in bin/ for user installation: + cprom() { + cpcmd="cp" + + tmpnew="" newrom="bin/$target/${pname}_${target}_$initmode.rom" - [ -n "$displaymode" ] && newrom="${newrom%.rom}_$displaymode.rom" - [ $# -gt 0 ] && [ "$1" != "seauboot" ] && \ - newrom="${newrom%.rom}_${1%.gkb}.rom" - - x_ mkdir -p "bin/$target" - x_ cp "$tmprom" "$newrom" && [ $# -gt 0 ] && [ "$1" != "seauboot" ] && \ - cbfs "$newrom" "config/data/grub/keymap/$1" keymap.gkb raw - [ $# -gt 0 ] && [ "$1" = "seauboot" ] && \ - cbfs "$newrom" "config/data/grub/bootorder_uboot" bootorder raw; : + + if [ -n "$displaymode" ]; then + newrom="${newrom%.rom}_$displaymode.rom" + fi + if [ $# -gt 0 ] && [ "${1%.gkb}" != "$1" ]; then + tmpnew="${1##*/}" + newrom="${newrom%.rom}_${tmpnew%.gkb}.rom" + fi + + irom="$tmprom" + + if [ $# -gt 0 ]; then + irom="$(mktemp || err "!mk irom, $(echo "$@")")" || \ + err "can't copy rom" "cprom" "$@" + + x_ cp "$tmprom" "$irom" && cpcmd="mv" + + if [ "${1%.gkb}" != "$1" ]; then + cbfs "$irom" "$grubdata/keymap/$tmpnew" keymap.gkb raw + elif [ "$1" = "seauboot" ]; then + cbfs "$irom" "$grubdata/bootorder_uboot" bootorder raw + fi + fi + + printf "Creating new %s image: '%s'\n" "$projectname" "$newrom" + + x_ xbmkdir "bin/$target" + x_ $cpcmd "$irom" "$newrom" +} + +cbfs() +{ + ccmd="add-payload" + lzma="-c lzma" + + if [ $# -gt 3 ] && [ $# -lt 5 ]; then + ccmd="add" + lzma="-t $4" + elif [ $# -gt 4 ] && [ "$5" = "0x1110000" ]; then + ccmd="add-flat-binary" && \ + lzma="-c lzma -l 0x1110000 -e 0x1110000" + fi + + x_ "$cbfstool" "$1" $ccmd -f "$2" -n "$3" $lzma } +# for release files: + mkcoreboottar() { - [ "$target" = "$tree" ] && return 0 - [ "$XBMK_RELEASE" = "y" ] || return 0 - [ "$release" != "n" ] || return 0 + $if_dry_build \ + return 0 + + if [ "$target" = "$tree" ] || [ "$XBMK_RELEASE" != "y" ] || \ + [ "$release" = "n" ]; then + return 0 + fi - $dry mkrom_tarball "bin/$target" - $dry x_ ./mk inject "bin/${relname}_${target}.tar.xz" nuke; : + mkrom_tarball "bin/$target" + x_ ./mk inject "bin/${relname}_${target}.tar.xz" nuke } diff --git a/include/tree.sh b/include/tree.sh new file mode 100644 index 00000000..2020c450 --- /dev/null +++ b/include/tree.sh @@ -0,0 +1,775 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +# Copyright (c) 2022-2023 Alper Nebi Yasak <alpernebiyasak@gmail.com> +# Copyright (c) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com> +# Copyright (c) 2023-2025 Leah Rowe <leah@libreboot.org> + +# flag e.g. ./mk -b <-- mkflag would be "b" +flag="" + +xarch="" +srcdir="" +premake="" +gnatdir="" +xlang="" +mode="" +makeargs="" +elfdir="" +cmd="" +project="" +target="" +target_dir="" +targets="" +xgcctree="" +release="" +bootstrapargs="" +mkhelper="" +autoconfargs="" +listfile="" +autogenargs="" +buildtype="" +rev="" +build_depend="" +gccdir="" +cmakedir="" +defconfig="" +postmake="" +mkhelpercfg="" +if_dry_build=":" +if_not_dry_build="" +dest_dir="" +mdir="" +cleanargs="" +gccver="" +gccfull="" +gnatver="" +gnatfull="" +do_make="" +badhash="" +badtghash="" +tree="" +forcepull="" + +trees() +{ + flags="f:F:b:m:u:c:x:s:l:n:d:" + + while getopts $flags option + do + if [ -n "$flag" ]; then + err "only one flag is permitted" "trees" "$@" + fi + + flag="$1" + + # the "mode" variable is affixed to a make command, example: + # ./mk -m coreboot does: make menuconfig -C src/coreboot/tree + + case "$flag" in + -d) + # -d is similar to -b, except that + # a large number of operations will be + # skipped. these are "if_not_dry_build build" scenarios + # where only a subset of build tasks are done, + # and $if_not_dry_build is prefixed to skipped commands + + if_not_dry_build=":" + if_dry_build="" + ;; + -b) : ;; + -u) mode="oldconfig" ;; + -m) mode="menuconfig" ;; + -c) mode="distclean" ;; + -x) mode="crossgcc-clean" ;; + -f) # download source code for a project + do_make="n" # lets us know not to build anything + if_not_dry_build=":" + if_dry_build="" + ;; + -F) # same as -F, but don't skip git fetch/pull on cache + do_make="n" # lets us know not to build anything + if_not_dry_build=":" + if_dry_build="" + forcepull="y" + ;; + -s) mode="savedefconfig" ;; + -l) mode="olddefconfig" ;; + -n) mode="nconfig" ;; + *) err "invalid option '-$option'" "trees" "$@" ;; + esac + + if [ -z "${OPTARG+x}" ]; then + shift 1 + + break + fi + + project="${OPTARG#src/}" + project="${project#config/git/}" + + shift 2 + done + + if [ -z "$flag" ]; then + err "missing flag ($flags)" "trees" "$@" + elif [ -z "$project" ]; then + fx_ "x_ ./mk $flag" x_ ls -1 config/git + + return 1 + + elif [ ! -f "config/git/$project/pkg.cfg" ]; then + err "config/git/$project/pkg.cfg missing" "trees" "$@" + fi + + elfdir="elf/$project" + datadir="config/data/$project" + configdir="config/$project" + srcdir="src/$project" + dest_dir="$elfdir" + + listfile="$datadir/build.list" + if [ ! -f "$listfile" ]; then + listfile="" # build.list is optional on all projects + fi + + mkhelpercfg="$datadir/mkhelper.cfg" + if e "$mkhelpercfg" f missing; then + mkhelpercfg="$xbtmp/mkhelper.cfg" + x_ touch "$mkhelpercfg" + fi + + targets="$*" + cmd="build_targets $targets" + if singletree "$project"; then + cmd="build_project" + fi + + remkdir "${tmpgit%/*}" +} + +build_project() +{ + if ! configure_project "$configdir"; then + return 0 + elif [ -f "$listfile" ]; then + if ! $if_not_dry_build elfcheck; then + return 0 + fi + fi + + if [ "$mode" = "distclean" ]; then + mode="clean" + fi + + if ! run_make_command; then + return 0 + fi + + if [ -z "$mode" ]; then + $if_not_dry_build \ + copy_elf; : + fi +} + +build_targets() +{ + if [ ! -d "$configdir" ]; then + err "directory '$configdir' doesn't exist" "build_targets" "$@" + elif [ $# -lt 1 ]; then + targets="$(ls -1 "$configdir")" || \ + err "'$configdir': can't list targets" "build_targets" "$@" + fi + + for x in $targets + do + unset CROSS_COMPILE + export PATH="$xbmkpath" + + if [ "$x" = "list" ]; then + x_ ls -1 "config/$project" + + listfile="" + + break + fi + + printf "'make %s', '%s', '%s'\n" "$mode" "$project" "$x" + + target="$x" + + x_ handle_defconfig + + if [ -z "$mode" ]; then + x_ $postmake + fi + done; : +} + +handle_defconfig() +{ + target_dir="$configdir/$target" + + if [ ! -f "CHANGELOG" ]; then + fetch_project "$project" + fi + if ! configure_project "$target_dir"; then + return 0 + fi + + if [ -z "$tree" ]; then + err "$configdir: 'tree' not set" "handle_defconfig" "$@" + fi + + srcdir="src/$project/$tree" + + if [ "$mode" = "${mode%clean}" ] && [ ! -d "$srcdir" ]; then + return 0 + fi + + for y in "$target_dir/config"/* + do + if [ "$flag" != "-d" ] && [ ! -f "$y" ]; then + continue + elif [ "$flag" != "-d" ]; then + defconfig="$y" + fi + + if [ -z "$mode" ]; then + check_defconfig || continue; : + fi + + if [ -z "$mode" ]; then + for _xarch in $xarch; do + $if_dry_build \ + break + if [ -n "$_xarch" ]; then + check_cross_compiler "$_xarch" + fi + done; : + fi + + handle_makefile + + if [ -z "$mode" ]; then + $if_not_dry_build \ + copy_elf + fi + done; : +} + +configure_project() +{ + cleanargs="" + build_depend="" + autoconfargs="" + xgcctree="" + postmake="" + makeargs="" + buildtype="" + mkhelper="" + bootstrapargs="" + premake="" + release="" + xlang="" + xarch="" + badhash="" + badtghash="" + + _tcfg="$1/target.cfg" + + if [ ! -f "$_tcfg" ]; then + buildtype="auto" + fi + + # globally initialise all variables for a source tree / target: + + if e "$datadir/mkhelper.cfg" f; then + . "$datadir/mkhelper.cfg" || \ + err "Can't read '$datadir/mkhelper.cfg'" \ + "configure_project" "$@" + fi + + # override target/tree specific variables from per-target config: + + while e "$_tcfg" f || [ "$cmd" != "build_project" ] + do + # TODO: implement infinite loop detection here, caused + # by project targets pointing to other targets/trees + # when then ultimate point back repeatedly; this is + # currently avoided simply by careful configuration. + # temporary files per tree/target name could be created + # per iteration, and then checked the next time + + printf "Loading %s config: %s\n" "$project" "$_tcfg" + + rev="" + tree="" + + . "$_tcfg" || \ + err "Can't read '$_tcfg'" "configure_project" "$@" + + if [ "$flag" = "-d" ]; then + build_depend="" # dry run + fi + if [ "$cmd" = "build_project" ]; then + # single-tree, so it can't be a target pointing + # to a main source tree + + break + fi + if [ "$do_make" != "n" ]; then + # if we're *downloading* a project, then + # we don't need to to change the target.cfg + + break + fi + if [ "${_tcfg%/*/target.cfg}" = "${_tcfg%"/$tree/target.cfg"}" ] + then + # we have found the main source tree that + # a given target uses; no need to continue + + break + else + _tcfg="${_tcfg%/*/target.cfg}/$tree/target.cfg" + fi + + done + + if [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ]; then + return 1 + fi + if [ -n "$buildtype" ] && [ "${mode%config}" != "$mode" ]; then + return 1 + fi + + if [ -z "$mode" ]; then + $if_not_dry_build \ + build_dependencies + fi + + mdir="$xbmkpwd/config/submodule/$project" + if [ -n "$tree" ]; then + mdir="$mdir/$tree" + fi + + if [ ! -f "CHANGELOG" ]; then + delete_old_project_files + fi + if [ "$do_make" = "n" ]; then + if [ ! -f "CHANGELOG" ]; then + fetch_${cmd#build_} + fi + + return 1 + fi + + x_ ./mk -f "$project" "$target" +} + +# projects can specify which other projects +# to build first, as declared dependencies: + +build_dependencies() +{ + for bd in $build_depend + do + bd_project="${bd%%/*}" + bd_tree="${bd##*/}" + + if [ -z "$bd_project" ]; then + $if_not_dry_build \ + err "$project/$tree: !bd '$bd'" \ + "build_dependencies" "$@" + fi + if [ "${bd##*/}" = "$bd" ]; then + bd_tree="" + fi + if [ -n "$bd_project" ]; then + $if_not_dry_build \ + x_ ./mk -b $bd_project $bd_tree; : + fi + done; : +} + +# delete_old_project_files along with project_up_to_date, +# concatenates the sha512sum hashes of all files related to +# a project, tree or target, then gets the sha512sum of that +# concatenation. this is checked against any existing +# calculation previously cached; if the result differs, or +# nothing was previously stored, we know to delete resources +# such as builds, project sources and so on, for auto-rebuild: + +delete_old_project_files() +{ + # delete an entire source tree along with its builds: + if ! project_up_to_date hash "$tree" badhash "$datadir" \ + "$configdir/$tree" "$mdir"; then + x_ rm -Rf "src/$project/$tree" "elf/$project/$tree" + fi + + x_ cp "$xbtmp/new.hash" "$XBMK_CACHE/hash/$project$tree" + + if singletree "$project" || [ -z "$target" ] || [ "$target" = "$tree" ] + then + return 0 + fi + + # delete only the builds of a given target, but not src. + # this is useful when only the target config changes, for + # example x200_8mb coreboot configs change, but not coreboot: + + if ! project_up_to_date tghash "$target" badtghash "$configdir/$target" + then + x_ rm -Rf "elf/$project/$tree/$target" + fi + + x_ cp "$xbtmp/new.hash" "$XBMK_CACHE/tghash/$project$target" +} + +project_up_to_date() +{ + old_hash="" + hash="" + + hashdir="$1" + hashname="$2" + badhashvar="$3" + + shift 3 + + x_ xbmkdir "$XBMK_CACHE/$hashdir" + + if [ -f "$XBMK_CACHE/$hashdir/$project$hashname" ]; then + read -r old_hash < "$XBMK_CACHE/$hashdir/$project$hashname" \ + || err \ + "$hashdir: err '$XBMK_CACHE/$hashdir/$project$hashname'" \ + "project_up_to_date" "$hashdir" "$hashname" "$badhashvar" \ + "$@" + fi + + build_sbase + fx_ "x_ util/sbase/sha512sum" find "$@" -type f -not -path \ + "*/.git*/*" | awk '{print $1}' > "$xbtmp/tmp.hash" || \ + err "!h $project $hashdir" \ + "project_up_to_date" "$hashdir" "$hashname" "$badhashvar" "$@" + + hash="$(x_ "$sha512sum" "$xbtmp/tmp.hash" | awk '{print $1}' || \ + err)" || err "$hashname: Can't read sha512 of '$xbtmp/tmp.hash'" \ + "project_up_to_date" "$hashdir" "$hashname" "$badhashvar" "$@" + + if [ "$hash" != "$old_hash" ] || \ + [ ! -f "$XBMK_CACHE/$hashdir/$project$hashname" ]; then + eval "$badhashvar=\"y\"" + fi + + printf "%s\n" "$hash" > "$xbtmp/new.hash" || \ + err "!mkhash $xbtmp/new.hash ($hashdir $hashname $badhashvar)" \ + "project_up_to_date" "$hashdir" "$hashname" "$badhashvar" "$@" + + eval "[ \"\$$badhashvar\" = \"y\" ] && return 1"; : +} + +check_cross_compiler() +{ + cbdir="src/coreboot/$tree" + + if [ "$project" != "coreboot" ]; then + cbdir="src/coreboot/default" + fi + if [ -n "$xgcctree" ]; then + cbdir="src/coreboot/$xgcctree" + fi + + xfix="${1%-*}" + + if [ "$xfix" = "x86_64" ]; then + xfix="x64" + fi + + xgccfile="elf/coreboot/$tree/xgcc_${xfix}_was_compiled" + xgccargs="crossgcc-$xfix UPDATED_SUBMODULES=1 CPUS=$XBMK_THREADS" + + x_ ./mk -f coreboot "${cbdir#src/coreboot/}" + x_ xbmkdir "elf/coreboot/$tree" # TODO: is this needed? + + export PATH="$xbmkpwd/$cbdir/util/crossgcc/xgcc/bin:$PATH" + export CROSS_COMPILE="${xarch% *}-" + + if [ -n "$xlang" ]; then + export BUILD_LANGUAGES="$xlang" + fi + + if [ -f "$xgccfile" ]; then + # skip the build, because a build already exists: + + return 0 + fi + + check_gnu_path gcc gnat || x_ check_gnu_path gnat gcc + make -C "$cbdir" $xgccargs || x_ make -C "$cbdir" $xgccargs + + # this tells subsequent runs that the build was already done: + x_ touch "$xgccfile" + + # reset hostcc in PATH: + remkdir "$xbtmp/gnupath" +} + +# fix mismatching gcc/gnat versions on debian trixie/sid. as of december 2024, +# trixie/sid had gnat-13 as gnat and gcc-14 as gcc, but has gnat-14 in apt. in +# some cases, gcc 13+14 and gnat-13 are present; or gnat-14 and gcc-14, but +# gnat in PATH never resolves to gnat-14, because gnat-14 was "experimental" + +check_gnu_path() +{ + if ! command -v "$1" 1>/dev/null; then + err "Host '$1' unavailable" "check_gnu_path" "$@" + fi + + gccver="" + gccfull="" + gnatver="" + gnatfull="" + gccdir="" + gnatdir="" + + if host_gcc_gnat_match "$@"; then + return 0 + fi + + if ! match_gcc_gnat_versions "$@"; then + return 1 + fi +} + +# check if gcc/gnat versions already match: + +host_gcc_gnat_match() +{ + if ! gnu_setver "$1" "$1"; then + err "Command '$1' unavailable." "check_gnu_path" "$@" + fi + gnu_setver "$2" "$2" || : + + eval "[ -z \"\$$1ver\" ] && err \"Cannot detect host '$1' version\"" + + if [ "$gnatfull" != "$gccfull" ]; then + # non-matching gcc/gnat versions + + return 1 + fi +} + +# find all gcc/gnat versions, matching them up in PATH: + +match_gcc_gnat_versions() +{ + eval "$1dir=\"$(dirname "$(command -v "$1")")\"" + eval "_gnudir=\"\$$1dir\"" + eval "_gnuver=\"\$$1ver\"" + + for _bin in "$_gnudir/$2-"* + do + if [ "${_bin#"$_gnudir/$2-"}" = "$_gnuver" ] && [ -x "$_bin" ] + then + _gnuver="${_bin#"$_gnudir/$2-"}" + break + fi + done + + if ! gnu_setver "$2" "$_gnudir/$2-$_gnuver"; then + return 1 + elif [ "$gnatfull" != "$gccfull" ]; then + return 1 + fi + + ( link_gcc_gnat_versions "$@" "$_gnudir" "$_gnuver" ) || \ + err "Can't link '$2-$_gnuver' '$_gnudir'" "check_gnu_path" "$@"; : +} + +# create symlinks in PATH, so that the GCC/GNAT versions match: + +link_gcc_gnat_versions() +{ + _gnudir="$3" + _gnuver="$4" + + remkdir "$xbtmp/gnupath" + + x_ cd "$xbtmp/gnupath" + + for _gnubin in "$_gnudir/$2"*"-$_gnuver" + do + _gnuutil="${_gnubin##*/}" + if [ -e "$_gnubin" ]; then + x_ ln -s "$_gnubin" "${_gnuutil%"-$_gnuver"}" + fi + done +} + +# get the gcc/gnat version +# fail: return 1 if util not found +gnu_setver() +{ + eval "$2 --version 1>/dev/null 2>/dev/null || return 1" + + eval "$1ver=\"`"$2" --version 2>/dev/null | head -n1`\"" + eval "$1ver=\"\${$1ver##* }\"" + eval "$1full=\"\$$1ver\"" + eval "$1ver=\"\${$1ver%%.*}\""; : +} + +check_defconfig() +{ + if [ ! -f "$defconfig" ]; then + $if_not_dry_build \ + err "$project/$target: no config" "check_defconfig" "$@" + fi + + dest_dir="$elfdir/$tree/$target/${defconfig#"$target_dir/config/"}" + + # skip build if a previous one exists: + + $if_dry_build \ + return 0 + if ! elfcheck; then + return 1 + fi +} + +elfcheck() +{ + # TODO: *STILL* very hacky check. do it properly (based on build.list) + + ( fx_ "eval exit 1 && err" find "$dest_dir" -type f ) || return 1; : +} + +handle_makefile() +{ + if $if_not_dry_build check_makefile "$srcdir"; then + $if_not_dry_build \ + x_ make -C "$srcdir" $cleanargs clean + fi + + if [ -f "$defconfig" ]; then + x_ cp "$defconfig" "$srcdir/.config" + fi + + run_make_command || \ + err "no makefile!" "handle_makefile" "$@" + + _copy=".config" + + if [ "$mode" = "savedefconfig" ]; then + _copy="defconfig" + fi + + if [ "${mode%config}" != "$mode" ]; then + $if_not_dry_build \ + x_ cp "$srcdir/$_copy" "$defconfig"; : + fi + + if [ -e "$srcdir/.git" ] && [ "$project" = "u-boot" ] && \ + [ "$mode" = "distclean" ]; then + $if_not_dry_build \ + x_ git -C "$srcdir" $cleanargs clean -fdx; : + fi +} + +run_make_command() +{ + if [ -z "$mode" ]; then + x_ $premake + fi + + if $if_not_dry_build check_cmake "$srcdir"; then + if [ -z "$mode" ]; then + $if_not_dry_build \ + check_autoconf "$srcdir" + fi + fi + if ! $if_not_dry_build check_makefile "$srcdir"; then + return 1 + fi + + $if_not_dry_build \ + x_ make -C "$srcdir" $mode -j$XBMK_THREADS $makeargs + + if [ -z "$mode" ]; then + x_ $mkhelper + fi + + if ! check_makefile "$srcdir"; then + return 0 + fi + + if [ "$mode" = "clean" ]; then + $if_dry_build \ + return 0 + if ! make -C "$srcdir" $cleanargs distclean; then + x_ make -C "$srcdir" $cleanargs clean + fi + fi +} + +check_cmake() +{ + $if_dry_build \ + return 0 + if [ ! -n "$cmakedir" ]; then + return 0 + elif ! check_makefile "$1"; then + if ! cmake -B "$1" "$1/$cmakedir"; then + x_ check_makefile "$1" + fi + fi + x_ check_makefile "$1"; : +} + +check_autoconf() +{ + ( + x_ cd "$1" + + if [ -f "bootstrap" ]; then + x_ ./bootstrap $bootstrapargs + fi + if [ -f "autogen.sh" ]; then + x_ ./autogen.sh $autogenargs + fi + if [ -f "configure" ]; then + x_ ./configure $autoconfargs; : + fi + + ) || err "can't bootstrap project: $1" "check_autoconf" "$@"; : +} + +check_makefile() +{ + if [ ! -f "$1/Makefile" ] && [ ! -f "$1/makefile" ] && \ + [ ! -f "$1/GNUmakefile" ]; then + + return 1 + fi +} + +copy_elf() +{ + if [ -f "$listfile" ]; then + x_ xbmkdir "$dest_dir" + fi + + if [ -f "$listfile" ]; then + while read -r f + do + if [ -f "$srcdir/$f" ]; then + x_ cp "$srcdir/$f" "$dest_dir" + fi + + done < "$listfile" || err \ + "cannot read '$listfile'" "copy_elf" "$@"; : + fi + + ( x_ make clean -C "$srcdir" $cleanargs ) || \ + err "can't make-clean '$srcdir'" "copy_elf" "$@"; : +} diff --git a/include/vendor.sh b/include/vendor.sh index c4e57069..761f9250 100644 --- a/include/vendor.sh +++ b/include/vendor.sh @@ -1,101 +1,158 @@ # SPDX-License-Identifier: GPL-3.0-only + # Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com> # Copyright (c) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com> # Copyright (c) 2023-2025 Leah Rowe <leah@libreboot.org> +# These are variables and functions, extending the functionality of +# inject.sh, to be used with lbmk; they are kept separate here, so that +# the main inject.sh can be as similar as possible between lbmk and cbmk, +# so that cherry-picking lbmk patches into cbmk yields fewer merge conflicts. + +# When reading this file, you should imagine that it is part of inject.sh, +# with inject.sh concatenated onto vendor.sh; they are inexorably intertwined. +# The main "mk" script sources vendor.sh first, and then inject.sh, in lbmk. + e6400_unpack="$xbmkpwd/src/bios_extract/dell_inspiron_1100_unpacker.py" me7updateparser="$xbmkpwd/util/me7_update_parser/me7_update_parser.py" pfs_extract="$xbmkpwd/src/biosutilities/Dell_PFS_Extract.py" uefiextract="$xbmkpwd/elf/uefitool/uefiextract" +bsdtar="$xbmkpwd/elf/libarchive/bsdtar" +bsdunzip="$xbmkpwd/elf/libarchive/bsdunzip" vendir="vendorfiles" appdir="$vendir/app" -cbcfgsdir="config/coreboot" -hashfiles="vendorhashes blobhashes" # blobhashes for backwards compatibility -dontflash="!!! AN ERROR OCCURED! Please DO NOT flash if injection failed. !!!" vfix="DO_NOT_FLASH_YET._FIRST,_INJECT_FILES_VIA_INSTRUCTIONS_ON_LIBREBOOT.ORG_" -vguide="https://libreboot.org/docs/install/ivy_has_common.html" -tmpromdel="$xbmkpwd/tmp/DO_NOT_FLASH" -nvm="util/nvmutil/nvm" - -cvchk="CONFIG_HAVE_MRC CONFIG_HAVE_ME_BIN CONFIG_KBC1126_FIRMWARE \ - CONFIG_VGA_BIOS_FILE CONFIG_INCLUDE_SMSC_SCH5545_EC_FW \ - CONFIG_LENOVO_TBFW_BIN CONFIG_FSP_M_FILE CONFIG_FSP_S_FILE" - -cv="CONFIG_ME_BIN_PATH CONFIG_SMSC_SCH5545_EC_FW_FILE CONFIG_KBC1126_FW1 \ - CONFIG_KBC1126_FW2 CONFIG_KBC1126_FW1_OFFSET CONFIG_KBC1126_FW2_OFFSET \ - CONFIG_VGA_BIOS_ID CONFIG_BOARD_DELL_E6400 CONFIG_FSP_S_CBFS \ - CONFIG_HAVE_REFCODE_BLOB CONFIG_REFCODE_BLOB_FILE CONFIG_GBE_BIN_PATH \ - CONFIG_IFD_BIN_PATH CONFIG_FSP_FD_PATH CONFIG_MRC_FILE CONFIG_FSP_M_CBFS \ - CONFIG_FSP_USE_REPO CONFIG_FSP_FULL_FD $cvchk" - -eval "`setvars "" has_hashes EC_hash DL_hash DL_url_bkup MRC_refcode_gbe vcfg \ - E6400_VGA_DL_hash E6400_VGA_DL_url E6400_VGA_DL_url_bkup E6400_VGA_offset \ - E6400_VGA_romname SCH5545EC_DL_url_bkup SCH5545EC_DL_hash _dest tree \ - mecleaner kbc1126_ec_dump MRC_refcode_cbtree new_mac _dl SCH5545EC_DL_url \ - archive EC_url boarddir rom cbdir DL_url nukemode cbfstoolref FSPFD_hash \ - _7ztest ME11bootguard ME11delta ME11version ME11sku ME11pch tmpromdir \ - IFD_platform ifdprefix cdir sdir _me _metmp mfs TBFW_url_bkup TBFW_url \ - TBFW_hash TBFW_size hashfile xromsize xchanged EC_url_bkup need_files \ - vfile cbcfg $cv`" - -vendor_download() -{ - [ $# -gt 0 ] || $err "No argument given" - export PATH="$PATH:/sbin" - board="$1" && readcfg && readkconfig && bootstrap && getfiles; : -} -readkconfig() +# lbmk-specific extension to the "checkvars" variable (not suitable for cbmk) +checkvarschk="CONFIG_INCLUDE_SMSC_SCH5545_EC_FW CONFIG_HAVE_MRC \ + CONFIG_HAVE_ME_BIN CONFIG_LENOVO_TBFW_BIN CONFIG_VGA_BIOS_FILE \ + CONFIG_FSP_M_FILE CONFIG_FSP_S_FILE CONFIG_KBC1126_FW1 CONFIG_KBC1126_FW2" + +# lbmk-specific extensions to the "checkvars" variable (not suitable for cbmk) +checkvarsxbmk="CONFIG_ME_BIN_PATH CONFIG_SMSC_SCH5545_EC_FW_FILE \ + CONFIG_FSP_FULL_FD CONFIG_KBC1126_FW1_OFFSET CONFIG_KBC1126_FW2_OFFSET \ + CONFIG_FSP_USE_REPO CONFIG_VGA_BIOS_ID CONFIG_BOARD_DELL_E6400 \ + CONFIG_FSP_S_CBFS CONFIG_HAVE_REFCODE_BLOB CONFIG_REFCODE_BLOB_FILE \ + CONFIG_FSP_FD_PATH CONFIG_IFD_BIN_PATH CONFIG_MRC_FILE CONFIG_FSP_M_CBFS" + +# lbmk-specific extensions; general variables +_dest="" +has_hashes="" +vcfg="" +mecleaner="" +kbc1126_ec_dump="" +_dl="" +rom="" +nuke="" +_7ztest="" +cbfstoolref="" +_me="" +_metmp="" +mfs="" +cbdir="" +hashfile="" +_dl_bin="" +_pre_dest="" +xromsize="" + +# lbmk-specific extensions; declared in pkg.cfg files in config/vendor/ +EC_hash="" +DL_hash="" +DL_url_bkup="" +MRC_refcode_gbe="" +E6400_VGA_DL_hash="" +E6400_VGA_DL_url="" +E6400_VGA_DL_url_bkup="" +E6400_VGA_offset="" +E6400_VGA_romname="" +SCH5545EC_DL_url_bkup="" +SCH5545EC_DL_hash="" +MRC_refcode_cbtree="" +SCH5545EC_DL_url="" +EC_url="" +DL_url="" +FSPFD_hash="" +ME11bootguard="" +ME11delta="" +ME11version="" +ME11sku="" +ME11pch="" +TBFW_url_bkup="" +TBFW_url="" +TBFW_hash="" +TBFW_size="" +EC_url_bkup="" +FSPM_bin_hash="" +FSPS_bin_hash="" +EC_FW1_hash="" +EC_FW2_hash="" +ME_bin_hash="" +MRC_bin_hash="" +REF_bin_hash="" +SCH5545EC_bin_hash="" +TBFW_bin_hash="" +E6400_VGA_bin_hash="" +XBMKmecleaner="" +MEclean="" + +download() { - x_ rm -f "$xbmktmp/cbcfg" - cbcfg="`check_defconfig "$boarddir"`" || for cbc in $cv; do - grep "$cbc" "$cbcfg" 1>>"$xbmktmp/cbcfg" 2>/dev/null || : - done - eval "`setcfg "$xbmktmp/cbcfg" 1`" - - for c in $cvchk; do - eval "[ \"\${$c}\" = \"/dev/null\" ] && continue" - eval "[ -z \"\${$c}\" ] && continue" - eval "`setcfg "$vfile"`" - return 0 - done - return 1 -} + if [ $# -lt 1 ]; then + err "No argument given" "download" "$@" + fi -bootstrap() -{ - x_ ./mk -f coreboot ${cbdir##*/} - mk -b uefitool biosutilities bios_extract - [ -d "${kbc1126_ec_dump%/*}" ] && x_ make -C "$cbdir/util/kbc1126" - [ -n "$MRC_refcode_cbtree" ] && \ - cbfstoolref="elf/cbfstool/$MRC_refcode_cbtree/cbfstool" && \ - x_ ./mk -d coreboot "$MRC_refcode_cbtree"; : + export PATH="$PATH:/sbin" + board="$1" + + if check_target; then + readkconfig download + fi } getfiles() { - [ -z "$CONFIG_HAVE_ME_BIN" ] || fetch intel_me "$DL_url" \ - "$DL_url_bkup" "$DL_hash" "$CONFIG_ME_BIN_PATH" - [ -z "$CONFIG_INCLUDE_SMSC_SCH5545_EC_FW" ] || fetch sch5545ec \ - "$SCH5545EC_DL_url" "$SCH5545EC_DL_url_bkup" "$SCH5545EC_DL_hash" \ - "$CONFIG_SMSC_SCH5545_EC_FW_FILE" - [ -z "$CONFIG_KBC1126_FIRMWARE" ] || fetch kbc1126ec "$EC_url" \ - "$EC_url_bkup" "$EC_hash" "$CONFIG_KBC1126_FW1" - [ -z "$CONFIG_VGA_BIOS_FILE" ] || fetch e6400vga "$E6400_VGA_DL_url" \ - "$E6400_VGA_DL_url_bkup" "$E6400_VGA_DL_hash" "$CONFIG_VGA_BIOS_FILE" - [ -z "$CONFIG_HAVE_MRC" ] || fetch "mrc" "$MRC_url" "$MRC_url_bkup" \ - "$MRC_hash" "$CONFIG_MRC_FILE" - [ -z "$CONFIG_LENOVO_TBFW_BIN" ] || fetch "tbfw" "$TBFW_url" \ - "$TBFW_url_bkup" "$TBFW_hash" "$CONFIG_LENOVO_TBFW_BIN" - # - # in the future, we might have libre fsp-s and then fsp-m. - # therefore, handle them separately, in case one of them is libre; if - # one of them was, the path wouldn't be set. - # - [ -z "$CONFIG_FSP_M_FILE" ] || fetch "fspm" "$CONFIG_FSP_FD_PATH" \ - "$CONFIG_FSP_FD_PATH" "$FSPFD_hash" "$CONFIG_FSP_M_FILE" copy - [ -z "$CONFIG_FSP_S_FILE" ] || fetch "fsps" "$CONFIG_FSP_FD_PATH" \ - "$CONFIG_FSP_FD_PATH" "$FSPFD_hash" "$CONFIG_FSP_S_FILE" copy; : + if [ -n "$CONFIG_HAVE_ME_BIN" ];then + fetch intel_me "$DL_url" "$DL_url_bkup" "$DL_hash" \ + "$CONFIG_ME_BIN_PATH" curl "$ME_bin_hash" + fi + if [ -n "$CONFIG_INCLUDE_SMSC_SCH5545_EC_FW" ]; then + fetch sch5545ec "$SCH5545EC_DL_url" "$SCH5545EC_DL_url_bkup" \ + "$SCH5545EC_DL_hash" "$CONFIG_SMSC_SCH5545_EC_FW_FILE" \ + "curl" "$SCH5545EC_bin_hash" + fi + if [ -n "$CONFIG_KBC1126_FW1" ]; then + fetch kbc1126ec "$EC_url" "$EC_url_bkup" "$EC_hash" \ + "$CONFIG_KBC1126_FW1" curl "$EC_FW1_hash" + fi + if [ -n "$CONFIG_KBC1126_FW2" ]; then + fetch kbc1126ec "$EC_url" "$EC_url_bkup" "$EC_hash" \ + "$CONFIG_KBC1126_FW2" curl "$EC_FW2_hash" + fi + if [ -n "$CONFIG_VGA_BIOS_FILE" ]; then + fetch e6400vga "$E6400_VGA_DL_url" "$E6400_VGA_DL_url_bkup" \ + "$E6400_VGA_DL_hash" "$CONFIG_VGA_BIOS_FILE" "curl" \ + "$E6400_VGA_bin_hash" + fi + if [ -n "$CONFIG_HAVE_MRC" ]; then + fetch "mrc" "$MRC_url" "$MRC_url_bkup" "$MRC_hash" \ + "$CONFIG_MRC_FILE" "curl" "$MRC_bin_hash" + fi + if [ -n "$CONFIG_REFCODE_BLOB_FILE" ]; then + fetch "refcode" "$MRC_url" "$MRC_url_bkup" "$MRC_hash" \ + "$CONFIG_REFCODE_BLOB_FILE" "curl" "$REF_bin_hash" + fi + if [ -n "$CONFIG_LENOVO_TBFW_BIN" ]; then + fetch "tbfw" "$TBFW_url" "$TBFW_url_bkup" "$TBFW_hash" \ + "$CONFIG_LENOVO_TBFW_BIN" "curl" "$TBFW_bin_hash" + fi + if [ -n "$CONFIG_FSP_M_FILE" ]; then + fetch "fsp" "$CONFIG_FSP_FD_PATH" "$CONFIG_FSP_FD_PATH" \ + "$FSPFD_hash" "$CONFIG_FSP_M_FILE" "copy" "$FSPM_bin_hash" + fi + if [ -n "$CONFIG_FSP_S_FILE" ]; then + fetch "fsp" "$CONFIG_FSP_FD_PATH" "$CONFIG_FSP_FD_PATH" \ + "$FSPFD_hash" "$CONFIG_FSP_S_FILE" "copy" "$FSPS_bin_hash" + fi } fetch() @@ -105,488 +162,572 @@ fetch() dl_bkup="$3" dlsum="$4" _dest="${5##*../}" + _pre_dest="$XBMK_CACHE/tmpdl/check" + dlop="$6" + binsum="$7" - [ "$5" = "/dev/null" ] && return 0 - _dl="$XBMK_CACHE/file/$dlsum" - if [ "$dl_type" = "fspm" ] || [ "$dl_type" = "fsps" ]; then - # HACK: if grabbing fsp from coreboot, fix the path for lbmk - for _cdl in dl dl_bkup; do - eval "$_cdl=\"\${$_cdl##*../}\"; _cdp=\"\$$_cdl\"" - [ -f "$_cdp" ] || _cdp="$cbdir/$_cdp" - [ -f "$_cdp" ] && eval "$_cdl=\"$_cdp\"" - done + if [ -z "$binsum" ]; then + err "binsum is empty (no checksum)" "fetch" "$@" fi - dlop="curl" && [ $# -gt 5 ] && dlop="$6" - download "$dl" "$dl_bkup" "$_dl" "$dlsum" "$dlop" + _dl="$XBMK_CACHE/file/$dlsum" # internet file to extract from e.g. .exe + _dl_bin="$XBMK_CACHE/file/$binsum" # extracted file e.g. me.bin - rm -Rf "${_dl}_extracted" || $err "!rm ${_ul}_extracted. $dontflash" - e "$_dest" f && return 0 + if [ "$5" = "/dev/null" ]; then + return 0 + fi + + # an extracted vendor file will be placed in pre_dest first, for + # verifying its checksum. if it matches, it is later moved to _dest + remkdir "${_pre_dest%/*}" "$appdir" + + # HACK: if grabbing fsp from coreboot, fix the path for lbmk + if [ "$dl_type" = "fsp" ] + then + dl="${dl##*../}" + _cdp="$dl" + + if [ ! -f "$_cdp" ]; then + _cdp="$cbdir/$_cdp" + fi + if [ -f "$_cdp" ]; then + dl="$_cdp" + fi + + dl_bkup="${dl_bkup##*../}" + _cdp="$dl_bkup" + + if [ ! -f "$_cdp" ]; then + _cdp="$cbdir/$_cdp" + fi + if [ -f "$_cdp" ]; then + dl_bkup="$_cdp"; : + fi + fi - x_ mkdir -p "${_dest%/*}" - remkdir "$appdir" - extract_archive "$_dl" "$appdir" "$dl_type" || \ - [ "$dl_type" = "e6400vga" ] || $err "$_dest $dl_type: !extract" + # download the file (from the internet) to extract from: - eval "extract_$dl_type" + xbget "$dlop" "$dl" "$dl_bkup" "$_dl" "$dlsum" + x_ rm -Rf "${_dl}_extracted" + + # skip extraction if a cached extracted file exists: + + ( xbget copy "$_dl_bin" "$_dl_bin" "$_dest" "$binsum" 2>/dev/null ) || : + if [ -f "$_dest" ]; then + return 0 + fi + + x_ xbmkdir "${_dest%/*}" + + if [ "$dl_type" != "fsp" ]; then + extract_archive "$_dl" "$appdir" || \ + [ "$dl_type" = "e6400vga" ] || \ + err "$_dest $dl_type: !extract" "fetch" "$@" + fi + + x_ extract_$dl_type "$_dl" "$appdir" set -u -e - e "$_dest" f missing && $err "!extract_$dl_type. $dontflash"; : + + # some functions don't output directly to the given file, _pre_dest. + # instead, they put multiple files there, but we need the one matching + # the given hashsum. So, search for a matching file via bruteforce: + ( fx_ "mkdst $binsum" x_ find "${_pre_dest%/*}" -type f ) || : + + if ! bad_checksum "$binsum" "$_dest"; then + if [ -f "$_dest" ]; then + return 0 + fi + fi + + if [ -z "$binsum" ]; then + printf "'%s': checksum undefined\n" "$_dest" 1>&2 + fi + + if [ -L "$_dest" ]; then + printf "WARNING: '%s' is a link!\n" "$_dest" 1>&2 + else + x_ rm -f "$_dest" + fi + + err "Can't safely extract '$_dest', for board '$board'" "fetch" "$@" } -extract_intel_me() +mkdst() { - e "$mecleaner" f not && $err "$cbdir: me_cleaner missing. $dontflash" + if bad_checksum "$1" "$2" 2>/dev/null; then + x_ rm -f "$2" + else + x_ mv "$2" "$_dl_bin" + x_ cp "$_dl_bin" "$_dest" - cdir="$xbmkpwd/$appdir" - _me="$xbmkpwd/$_dest" - _metmp="$xbmkpwd/tmp/me.bin" + exit 1 + fi +} - mfs="" && [ "$ME11bootguard" = "y" ] && mfs="--whitelist MFS" && \ - chkvars ME11delta ME11version ME11sku ME11pch - [ "$ME11bootguard" = "y" ] && x_ ./mk -f deguard +extract_intel_me() +{ + if e "$mecleaner" f missing; then + err "$cbdir: me_cleaner missing" "extract_intel_me" "$@" + fi - x_ mkdir -p tmp + mfs="" + _7ztest="$xbtmp/metmp/a" + _metmp="$xbtmp/me.bin" + + x_ rm -f "$_metmp" "$xbtmp/a" + x_ rm -Rf "$_7ztest" - extract_intel_me_bruteforce if [ "$ME11bootguard" = "y" ]; then - apply_me11_deguard_mod + mfs="--whitelist MFS" + + if [ -z "$ME11delta" ] || [ -z "$ME11version" ] || \ + [ -z "$ME11sku" ] || [ -z "$ME11pch" ]; then + err "$board: ME11delta/ME11version/ME11sku/ME11pch" \ + "extract_intel_me" "$@" + fi + + x_ ./mk -f deguard + fi + + set +u +e + + ( fx_ find_me x_ find "$xbmkpwd/$appdir" -type f ) || :; : + + set -u -e + + if [ "$ME11bootguard" != "y" ]; then + x_ mv "$_metmp" "$_pre_dest" else - mv "$_metmp" "$_me" || $err "!mv $_metmp $_me - $dontflash" + ( apply_deguard_hack ) || \ + err "deguard error on '$_dest'" "extract_intel_me" "$@"; : fi } -extract_intel_me_bruteforce() +# bruteforce Intel ME extraction. +# must be called inside a subshell. +find_me() { - [ $# -gt 0 ] && cdir="$1" - e "$_metmp" f && return 0 + if [ -f "$_metmp" ]; then + # we found me.bin, so we stop searching - [ -z "$sdir" ] && sdir="$(mktemp -d)" - x_ mkdir -p "$sdir" + exit 1 + elif [ -L "$1" ]; then + return 0 + fi - set +u +e - ( - [ "${cdir#/a}" != "$cdir" ] && cdir="${cdir#/}" - cd "$cdir" || $err "extract_intel_me: !cd \"$cdir\" - $dontflash" - for i in *; do - e "$_metmp" f && break - [ -L "$i" ] && continue - if [ -f "$i" ]; then - _r="-r" && [ -n "$mfs" ] && _r="" - "$mecleaner" $mfs $_r -t -O "$sdir/vendorfile" \ - -M "$_metmp" "$i" && break - "$mecleaner" $mfs $_r -t -O "$_metmp" "$i" && break - "$me7updateparser" -O "$_metmp" "$i" && break - _7ztest="${_7ztest}a" - extract_archive "$i" "$_7ztest" || continue - extract_intel_me_bruteforce "$cdir/$_7ztest" - elif [ -d "$i" ]; then - extract_intel_me_bruteforce "$cdir/$i" - else - continue - fi - cdir="$1"; [ "${cdir#/a}" != "$cdir" ] && cdir="${cdir#/}" - cd "$cdir" || : - done - ) || : - rm -Rf "$sdir" || $err "extract_intel_me: !rm -Rf $sdir - $dontflash" + _7ztest="${_7ztest}a" + _r="-r" # re-locate modules + _trunc="-t" # -t: truncate the ME size + _keep="" # -k: keep fptr modules even if they can be removed + _pass="" # -p: skip fptr check + + if [ -n "$mfs" ] || [ "$MEclean" = "n" ]; then + _r="" + fi + + if [ "$MEclean" = "n" ]; then + _keep="-k" + _trunc="" + _pass="-p" + fi + + if "$mecleaner" $mfs $_r $_keep $_pass $_trunc -O "$xbtmp/a" \ + -M "$_metmp" "$1" || [ -f "$_metmp" ]; then + # me.bin extracted from a full image with ifd, then shrunk + : + elif "$mecleaner" $mfs $_r $_pass $_keep $_trunc -O "$_metmp" "$1" || \ + [ -f "$_metmp" ]; then + # me.bin image already present, and we shrunk it + : + elif "$me7updateparser" $_keep -O "$_metmp" "$1"; then + # thinkpad sandybridge me.bin image e.g. x220/t420 + : + elif extract_archive "$1" "$_7ztest"; then + # scan newly extracted archive within extracted archive + : + else + # could not extract anything, so we'll try the next file + return 0 + fi + + if [ -f "$_metmp" ]; then + # we found me.bin, so we stop searching + + exit 1 + else + # if the subshell does exit 1, we found me.bin, so exit 1 + ( fx_ find_me x_ find "$_7ztest" -type f ) || exit 1; : + fi } -apply_me11_deguard_mod() +apply_deguard_hack() { - ( - x_ cd src/deguard/ + x_ cd src/deguard + x_ ./finalimage.py --delta "data/delta/$ME11delta" \ - --version "$ME11version" \ - --pch "$ME11pch" --sku "$ME11sku" --fake-fpfs data/fpfs/zero \ - --input "$_metmp" --output "$_me" - ) || $err "Error running deguard for $_me - $dontflash" + --version "$ME11version" --pch "$ME11pch" --sku "$ME11sku" \ + --fake-fpfs data/fpfs/zero --input "$_metmp" --output "$_pre_dest" } extract_archive() { - if [ $# -gt 2 ]; then - if [ "$3" = "fspm" ] || [ "$3" = "fsps" ]; then - decat_fspfd "$1" "$2" - return 0 - fi + if innoextract "$1" -d "$2"; then + : + elif python "$pfs_extract" "$1" -e; then + : + elif 7z x "$1" -o"$2"; then + : + elif "$bsdtar" -C "$2" -xf "$1"; then + : + elif "$bsdunzip" "$1" -d "$2"; then + : + else + return 1 fi - innoextract "$1" -d "$2" || python "$pfs_extract" "$1" -e || 7z x \ - "$1" -o"$2" || unar "$1" -o "$2" || unzip "$1" -d "$2" || return 1 - - [ ! -d "${_dl}_extracted" ] || cp -R "${_dl}_extracted" "$2" || \ - $err "!mv '${_dl}_extracted' '$2' - $dontflash"; : + if [ -d "${_dl}_extracted" ]; then + x_ cp -R "${_dl}_extracted" "$2" + fi } -decat_fspfd() +extract_kbc1126ec() { - _fspfd="$1" - _fspdir="$2" - _fspsplit="$cbdir/3rdparty/fsp/Tools/SplitFspBin.py" + ( extract_kbc1126ec_dump ) || \ + err "$board: can't extract kbc1126 fw" "extract_kbc1126ec" "$@" + + # throw error if either file is missing + x_ e "$appdir/ec.bin.fw1" f + x_ e "$appdir/ec.bin.fw2" f - x_ $python "$_fspsplit" split -f "$_fspfd" -o "$_fspdir" -n "Fsp.fd" + x_ cp "$appdir/"ec.bin.fw* "${_pre_dest%/*}/" } -extract_kbc1126ec() +extract_kbc1126ec_dump() { - x_ e "$kbc1126_ec_dump" f - ( x_ cd "$appdir/" - mv Rompaq/68*.BIN ec.bin || : + + if mv Rompaq/68*.BIN ec.bin; then + : + elif unar -D ROM.CAB Rom.bin; then + : + elif unar -D Rom.CAB Rom.bin; then + : + elif unar -D 68*.CAB Rom.bin; then + : + else + err "!kbc1126 unar" "extract_kbc1126ec" "$@" + fi + if [ ! -f "ec.bin" ]; then - unar -D ROM.CAB Rom.bin || unar -D Rom.CAB Rom.bin || \ - unar -D 68*.CAB Rom.bin || $err "kbc1126 unar failed" x_ mv Rom.bin ec.bin fi - x_ e ec.bin f && x_ "$kbc1126_ec_dump" ec.bin - ) || $err "$board: can't extract kbc1126 ec firmware - $dontflash" - - x_ e "$appdir/ec.bin.fw1" f && x_ e "$appdir/ec.bin.fw2" f - cp "$appdir/"ec.bin.fw* "${_dest%/*}/" || \ - $err "!cp 1126ec $_dest - $dontflash"; : + if x_ e ec.bin f; then + x_ "$kbc1126_ec_dump" ec.bin + fi } extract_e6400vga() { set +u +e - chkvars E6400_VGA_offset E6400_VGA_romname + + if [ -z "$E6400_VGA_offset" ] || [ -z "$E6400_VGA_romname" ]; then + err "$board: E6400_VGA_romname/E6400_VGA_offset unset" \ + "extract_e6400vga" "$@" + fi + tail -c +$E6400_VGA_offset "$_dl" | gunzip > "$appdir/bios.bin" || : + ( x_ cd "$appdir" x_ e "bios.bin" f "$e6400_unpack" bios.bin || printf "TODO: fix dell extract util\n" - ) || $err "can't extract e6400 vga rom - $dontflosh" - x_ cp "$appdir/$E6400_VGA_romname" "$_dest" + ) || err "can't extract e6400 vga rom" "extract_e6400vga" "$@" + + x_ cp "$appdir/$E6400_VGA_romname" "$_pre_dest" } extract_sch5545ec() { # full system ROM (UEFI), to extract with UEFIExtract: _bios="${_dl}_extracted/Firmware/1 $dlsum -- 1 System BIOS vA.28.bin" + # this is the SCH5545 firmware, inside of the extracted UEFI ROM: _sch5545ec_fw="$_bios.dump/4 7A9354D9-0468-444A-81CE-0BF617D890DF" _sch5545ec_fw="$_sch5545ec_fw/54 D386BEB8-4B54-4E69-94F5-06091F67E0D3" _sch5545ec_fw="$_sch5545ec_fw/0 Raw section/body.bin" # <-- this! - "$uefiextract" "$_bios" || $err "sch5545 !extract - $dontflash" - x_ cp "$_sch5545ec_fw" "$_dest" + x_ "$uefiextract" "$_bios" + x_ cp "$_sch5545ec_fw" "$_pre_dest" } # Lenovo ThunderBolt firmware updates: # https://pcsupport.lenovo.com/us/en/products/laptops-and-netbooks/thinkpad-t-series-laptops/thinkpad-t480-type-20l5-20l6/20l5/solutions/ht508988 extract_tbfw() { - chkvars TBFW_size # size in bytes, matching TBFW's flash IC - x_ mkdir -p tmp - x_ rm -f tmp/tb.bin - find "$appdir" -type f -name "TBT.bin" > "tmp/tb.txt" || \ - $err "extract_tbfw $_dest: Can't extract TBT.bin - $dontflash" - while read -r f; do - [ -f "$f" ] || continue - [ -L "$f" ] && continue - x_ cp "$f" "tmp/tb.bin" - break - done < "tmp/tb.txt" - x_ dd if=/dev/null of=tmp/tb.bin bs=1 seek=$TBFW_size - x_ cp "tmp/tb.bin" "$_dest" -} + if [ -z "$TBFW_size" ]; then + err "$board: TBFW_size unset" "extract_tbfw" "$@" + fi -extract_fspm() -{ - copy_fsp M; : + fx_ copytb x_ find "$appdir" -type f -name "TBT.bin" } -extract_fsps() +copytb() { - copy_fsp S; : -} + if [ -f "$1" ] && [ ! -L "$1" ]; then + x_ dd if=/dev/null of="$1" bs=1 seek=$TBFW_size + x_ mv "$1" "$_pre_dest" -# this copies the fsp s/m; re-base is handled by ./mk inject -copy_fsp() -{ - x_ cp "$appdir/Fsp_$1.fd" "$_dest" + return 1 + fi } -fail_inject() +extract_fsp() { - [ -L "$tmpromdel" ] || [ ! -d "$tmpromdel" ] || \ - rm -Rf "$tmpromdel" || : - printf "\n\n%s\n\n" "$dontflash" 1>&2 - printf "WARNING: File '%s' was NOT modified.\n\n" "$archive" 1>&2 - printf "Please MAKE SURE vendor files are inserted before flashing\n\n" - err_ "$1" + x_ python "$cbdir/3rdparty/fsp/Tools/SplitFspBin.py" split -f "$1" \ + -o "${_pre_dest%/*}" -n "Fsp.fd" } -vendor_inject() +setvfile() { - need_files="n" - err="fail_inject" - remkdir "$tmpromdel" + [ -n "$vcfg" ] && for c in $checkvarschk + do + do_getvfile="n" + vcmd="[ \"\${$c}\" != \"/dev/null\" ] && [ -n \"\${$c}\" ]" - set +u +e - [ $# -lt 1 ] && $err "No options specified. - $dontflash" - eval "`setvars "" nukemode new_mac xchanged`" - - archive="$1"; - new_mac="??:??:??:??:??:??" - - [ $# -gt 1 ] && case "$2" in - nuke) - new_mac="" - nukemode="nuke" ;; - setmac) - [ $# -gt 2 ] && new_mac="$3" && \ - [ -z "$new_mac" ] && $err "Empty MAC address specified" ;; - *) $err "Unrecognised inject mode: '$2'" - esac - [ "$new_mac" = "keep" ] && new_mac="" - - check_release "$archive" || $err "'$archive' is not a release archive" - - readcfg && need_files="y" - if [ "$need_files" = "y" ] || [ -n "$new_mac" ]; then - [ "$nukemode" != "nuke" ] && [ "$need_files" = "y" ] && \ - x_ ./mk download "$board" - patch_release_roms - fi - - xtype="patched" && [ "$nukemode" = "nuke" ] && xtype="nuked" - [ "$xchanged" != "y" ] && printf "\n'%s' *NOT* modified.\n" "$archive" - [ "$xchanged" = "y" ] && printf "\n'%s' %s.\n" "$archive" "$xtype"; : -} + eval "$vcmd && do_getvfile=\"y\"" -check_release() -{ - [ -L "$archive" ] && $err "'$archive' is a symlink. $dontflash" - e "$archive" f missing && return 1 - - archivename="`basename "$archive"`" - [ -z "$archivename" ] && $err "Can't determine archive name. $dontflash" - - case "$archivename" in - *_src.tar.xz) - $err "'$archive' is a src archive, silly!" ;; - grub_*|seagrub_*|custom_*|seauboot_*|seabios_withgrub_*) - return 1 ;; - *.tar.xz) _stripped_prefix="${archivename#*_}" - board="${_stripped_prefix%.tar.xz}" ;; - *) $err "'$archive': could not detect board type - $dontflash" - esac; : + if [ "$do_getvfile" = "y" ]; then + if getvfile "$@"; then + return 0 + fi + fi + done && return 1; : } -readcfg() +getvfile() { - if [ "$board" = "serprog_rp2040" ] || [ "$board" = "serprog_stm32" ] \ - || [ "$board" = "serprog_pico" ]; then + if e "config/vendor/$vcfg/pkg.cfg" f missing; then return 1 fi - boarddir="$cbcfgsdir/$board" - eval "`setcfg "$boarddir/target.cfg"`" - chkvars tree && x_ ./mk -d coreboot "$tree" + . "config/vendor/$vcfg/pkg.cfg" || \ + err "Can't read 'config/vendor/$vcfg/pkg.cfg'" "getvfile" "$@" - [ -z "$vcfg" ] && return 1 + bootstrap - vfile="config/vendor/$vcfg/pkg.cfg" - [ -L "$vfile" ] && $err "'$archive', '$board': $vfile is a symlink" - [ -f "$vfile" ] || $err "'$archive', '$board': $vfile doesn't exist" + if [ $# -gt 0 ]; then + # download vendor files + + getfiles + else + # inject vendor files + + fx_ prep x_ find "$tmpromdir" -maxdepth 1 -type f -name "*.rom" + ( check_vendor_hashes ) || \ + err "$archive: Can't verify hashes" "getvfile" "$@"; : + fi - cbdir="src/coreboot/$tree" - cbfstool="elf/cbfstool/$tree/cbfstool" - rmodtool="elf/cbfstool/$tree/rmodtool" - mecleaner="$xbmkpwd/$cbdir/util/me_cleaner/me_cleaner.py" - kbc1126_ec_dump="$xbmkpwd/$cbdir/util/kbc1126/kbc1126_ec_dump" - cbfstool="elf/cbfstool/$tree/cbfstool" - ifdtool="elf/ifdtool/$tree/ifdtool" - [ -n "$IFD_platform" ] && ifdprefix="-p $IFD_platform"; : } -patch_release_roms() +bootstrap() { - has_hashes="n" - tmpromdir="tmp/DO_NOT_FLASH/bin/$board" - - remkdir "${tmpromdir%"/bin/$board"}" - x_ tar -xf "$archive" -C "${tmpromdir%"/bin/$board"}" - - for _hashes in $hashfiles; do - [ "$need_files" = "y" ] || break - e "$tmpromdir/$_hashes" f && has_hashes="y" && \ - hashfile="$_hashes" && break; : - done - - x_ mkdir -p "tmp" && [ -L "tmp/rom.list" ] && \ - $err "'$archive' -> tmp/rom.list is a symlink - $dontflash" - - find "$tmpromdir" -maxdepth 1 -type f -name "*.rom" > "tmp/rom.list" \ - || $err "'$archive' -> Can't make tmp/rom.list - $dontflash" - - if readkconfig; then - while read -r _xrom ; do - process_release_rom "$_xrom" || break - done < "tmp/rom.list" - [ "$nukemode" != "nuke" ] || \ - printf "Make sure you inserted vendor files: %s\n" \ - "$vguide" > "$tmpromdir/README.md" || : - else - printf "Skipping vendorfiles on '%s'\n" "$archive" 1>&2 - need_files="n" - fi + cbdir="src/coreboot/$tree" + kbc1126_ec_dump="$xbmkpwd/$cbdir/util/kbc1126/kbc1126_ec_dump" + cbfstool="elf/coreboot/$tree/cbfstool" + rmodtool="elf/coreboot/$tree/rmodtool" - ( - [ "$need_files" = "y" ] || exit 0 - cd "$tmpromdir" || $err "patch '$archive': can't cd $tmpromdir" - # NOTE: For compatibility with older rom releases, defer to sha1 - if [ "$has_hashes" = "y" ] && [ "$nukemode" != "nuke" ]; then - sha512sum --status -c "$hashfile" || \ - x_ sha1sum --status -c "$hashfile" - x_ rm -f "$hashfile" + mecleaner="$xbmkpwd/$cbdir/util/me_cleaner/me_cleaner.py" + if [ "$XBMKmecleaner" = "y" ]; then + mecleaner="$xbmkpwd/src/me_cleaner/me_cleaner.py" fi - ) || $err "'$archive' -> Can't verify vendor hashes. $dontflash" - [ -z "$new_mac" ] || modify_mac || printf "\nGbE not defined\n" 1>&2 + x_ ./mk -f coreboot "${cbdir##*/}" + x_ ./mk -f me_cleaner - [ "$xchanged" = "y" ] || rm -Rf "$tmpromdel" || : - [ "$xchanged" = "y" ] || return 0 + x_ ./mk -b bios_extract + x_ ./mk -b biosutilities + x_ ./mk -b uefitool + x_ ./mk -b libarchive # for bsdtar and bsdunzip - ( - x_ cd "${tmpromdir%"/bin/$board"}" - mkrom_tarball "bin/$board" - ) || $err "Cannot re-generate '$archive' - $dontflash" + if [ -d "${kbc1126_ec_dump%/*}" ]; then + x_ make -C "$cbdir/util/kbc1126" + fi - mv "${tmpromdir%"/bin/$board"}/bin/${relname}_${board}.tar.xz" \ - "$archive" || $err "'$archive' -> Can't overwrite - $dontflash"; : + if [ -n "$MRC_refcode_cbtree" ]; then + cbfstoolref="elf/coreboot/$MRC_refcode_cbtree/cbfstool" + x_ ./mk -d coreboot "$MRC_refcode_cbtree"; : + fi } -process_release_rom() +prep() { _xrom="$1" _xromname="${1##*/}" _xromnew="${_xrom%/*}/${_xromname#"$vfix"}" - [ "$nukemode" = "nuke" ] && _xromnew="${_xrom%/*}/$vfix${_xrom##*/}" - e "$_xrom" f missing && return 0 - [ -z "${_xromname#"$vfix"}" ] && $err "$_xromname / $vfix: name match" + if [ "$nuke" = "nuke" ]; then + _xromnew="${_xrom%/*}/$vfix${_xrom##*/}" + fi + + if e "$_xrom" f missing; then + return 0 + fi + + if [ -z "${_xromname#"$vfix"}" ]; then + err "$_xromname / $vfix: name match" "prep" "$@" + fi # Remove the prefix and 1-byte pad - if [ "$nukemode" != "nuke" ] && \ - [ "${_xromname#"$vfix"}" != "$_xromname" ]; then - xromsize="$(expr $(stat -c '%s' "$_xrom") - 1)" || $err "!int" - [ $xromsize -lt 524288 ] && $err "too small, $xromsize: $_xrom" + if [ "${_xromname#"$vfix"}" != "$_xromname" ] \ + && [ "$nuke" != "nuke" ]; then - x_ dd if="$_xrom" of="$_xromnew" bs=$xromsize count=1 - rm -f "$_xrom" || $err "Can't rm $_xrom - $dontflash" + unpad_one_byte "$_xrom" + x_ mv "$_xrom" "$_xromnew" _xrom="$_xromnew" fi - [ "$nukemode" = "nuke" ] && mksha512sum "$_xrom" "vendorhashes" + if [ "$nuke" = "nuke" ]; then + ( mksha512 "$_xrom" "vendorhashes" ) || err; : + fi - patch_rom "$_xrom" || return 1 # if break return, can still change MAC - [ "$nukemode" != "nuke" ] && return 0 + if ! add_vfiles "$_xrom"; then + # no need to insert files. we will later + # still process MAC addresses as required - # Rename the file, prefixing a warning saying not to flash - cat "$_xrom" config/data/coreboot/0 > "$_xromnew" || $err "!pad $_xrom" - x_ rm -f "$_xrom" + return 1 + fi + + if [ "$nuke" = "nuke" ]; then + pad_one_byte "$_xrom" + x_ mv "$_xrom" "$_xromnew" + fi } -patch_rom() +mksha512() +{ + build_sbase + + if [ "${1%/*}" != "$1" ]; then + x_ cd "${1%/*}" + fi + + x_ "$sha512sum" ./"${1##*/}" >> "$2" || \ + err "!sha512sum \"$1\" > \"$2\"" "mksha512" "$@" +} + +add_vfiles() { rom="$1" - if [ "$has_hashes" != "y" ] && [ "$nukemode" != "nuke" ]; then + if [ "$has_hashes" != "y" ] && [ "$nuke" != "nuke" ]; then printf "'%s' has no hash file. Skipping.\n" "$archive" 1>&2 + return 1 - elif [ "$has_hashes" = "y" ] && [ "$nukemode" = "nuke" ]; then + elif [ "$has_hashes" = "y" ] && [ "$nuke" = "nuke" ]; then printf "'%s' has a hash file. Skipping nuke.\n" "$archive" 1>&2 + return 1 fi - [ -n "$CONFIG_HAVE_REFCODE_BLOB" ] && inject "fallback/refcode" \ - "$CONFIG_REFCODE_BLOB_FILE" "stage" - [ "$CONFIG_HAVE_MRC" = "y" ] && inject "mrc.bin" "$CONFIG_MRC_FILE" \ - "mrc" "0xfffa0000" - [ "$CONFIG_HAVE_ME_BIN" = "y" ] && inject IFD "$CONFIG_ME_BIN_PATH" me - [ "$CONFIG_KBC1126_FIRMWARE" = "y" ] && inject ecfw1.bin \ - "$CONFIG_KBC1126_FW1" raw "$CONFIG_KBC1126_FW1_OFFSET" && inject \ - ecfw2.bin "$CONFIG_KBC1126_FW2" raw "$CONFIG_KBC1126_FW2_OFFSET" - [ -n "$CONFIG_VGA_BIOS_FILE" ] && [ -n "$CONFIG_VGA_BIOS_ID" ] && \ - inject "pci$CONFIG_VGA_BIOS_ID.rom" "$CONFIG_VGA_BIOS_FILE" optionrom - [ "$CONFIG_INCLUDE_SMSC_SCH5545_EC_FW" = "y" ] && \ - [ -n "$CONFIG_SMSC_SCH5545_EC_FW_FILE" ] && \ - inject sch5545_ecfw.bin "$CONFIG_SMSC_SCH5545_EC_FW_FILE" raw - [ -z "$CONFIG_FSP_USE_REPO" ] && [ -z "$CONFIG_FSP_FULL_FD" ] && \ - [ -n "$CONFIG_FSP_M_FILE" ] && \ - inject "$CONFIG_FSP_M_CBFS" "$CONFIG_FSP_M_FILE" fsp --xip - [ -z "$CONFIG_FSP_USE_REPO" ] && [ -z "$CONFIG_FSP_FULL_FD" ] && \ - [ -n "$CONFIG_FSP_S_FILE" ] && \ - inject "$CONFIG_FSP_S_CBFS" "$CONFIG_FSP_S_FILE" fsp + if [ -n "$CONFIG_HAVE_REFCODE_BLOB" ]; then + vfile "fallback/refcode" "$CONFIG_REFCODE_BLOB_FILE" "stage" + fi + if [ "$CONFIG_HAVE_MRC" = "y" ]; then + vfile "mrc.bin" "$CONFIG_MRC_FILE" "mrc" "0xfffa0000" + fi + if [ "$CONFIG_HAVE_ME_BIN" = "y" ]; then + vfile IFD "$CONFIG_ME_BIN_PATH" me + fi + if [ -n "$CONFIG_KBC1126_FW1" ]; then + vfile ecfw1.bin "$CONFIG_KBC1126_FW1" raw \ + "$CONFIG_KBC1126_FW1_OFFSET" + fi + if [ -n "$CONFIG_KBC1126_FW2" ]; then + vfile ecfw2.bin "$CONFIG_KBC1126_FW2" raw \ + "$CONFIG_KBC1126_FW2_OFFSET" + fi + if [ -n "$CONFIG_VGA_BIOS_FILE" ] && [ -n "$CONFIG_VGA_BIOS_ID" ]; then + vfile "pci$CONFIG_VGA_BIOS_ID.rom" "$CONFIG_VGA_BIOS_FILE" \ + optionrom + fi + if [ "$CONFIG_INCLUDE_SMSC_SCH5545_EC_FW" = "y" ] && \ + [ -n "$CONFIG_SMSC_SCH5545_EC_FW_FILE" ]; then + vfile sch5545_ecfw.bin "$CONFIG_SMSC_SCH5545_EC_FW_FILE" raw + fi + if [ -z "$CONFIG_FSP_USE_REPO" ] && [ -z "$CONFIG_FSP_FULL_FD" ] && \ + [ -n "$CONFIG_FSP_M_FILE" ]; then + vfile "$CONFIG_FSP_M_CBFS" "$CONFIG_FSP_M_FILE" fsp --xip + fi + if [ -z "$CONFIG_FSP_USE_REPO" ] && [ -z "$CONFIG_FSP_FULL_FD" ] && \ + [ -n "$CONFIG_FSP_S_FILE" ]; then + vfile "$CONFIG_FSP_S_CBFS" "$CONFIG_FSP_S_FILE" fsp + fi + + xchanged="y" printf "ROM image successfully patched: %s\n" "$rom" - xchanged="y" } -inject() +vfile() { - [ "$2" = "/dev/null" ] && return 0 + if [ "$2" = "/dev/null" ]; then + return 0 + fi cbfsname="$1" _dest="${2##*../}" - _t="$3" + blobtype="$3" _offset="" - if [ "$_t" = "fsp" ]; then - [ $# -gt 3 ] && _offset="$4" - else - [ $# -gt 3 ] && _offset="-b $4" && [ -z "$4" ] && \ - $err "inject $*, $rom: offset given but empty (undefined)" + if [ "$blobtype" = "fsp" ] && [ $# -gt 3 ]; then + _offset="$4" + elif [ $# -gt 3 ] && _offset="-b $4" && [ -z "$4" ]; then + err "$rom: offset given but empty (undefined)" "vfile" "$@" fi - [ "$nukemode" = "nuke" ] || x_ e "$_dest" f + if [ "$nuke" != "nuke" ]; then + x_ e "$_dest" f + fi if [ "$cbfsname" = "IFD" ]; then - [ "$nukemode" = "nuke" ] || "$ifdtool" $ifdprefix -i \ - $_t:$_dest "$rom" -O "$rom" || \ - $err "failed: inject '$_t' '$_dest' on '$rom'" - [ "$nukemode" != "nuke" ] || "$ifdtool" $ifdprefix --nuke $_t \ - "$rom" -O "$rom" || $err "$rom: !nuke IFD/$_t" - elif [ "$nukemode" = "nuke" ]; then + if [ "$nuke" = "nuke" ]; then + x_ "$ifdtool" $ifdprefix --nuke $blobtype "$rom" \ + -O "$rom" + else + x_ "$ifdtool" $ifdprefix -i $blobtype:$_dest "$rom" \ + -O "$rom" + fi + elif [ "$nuke" = "nuke" ]; then x_ "$cbfstool" "$rom" remove -n "$cbfsname" - elif [ "$_t" = "stage" ]; then # the only stage we handle is refcode - x_ mkdir -p tmp - x_ rm -f "tmp/refcode" - "$rmodtool" -i "$_dest" -o "tmp/refcode" || "!reloc refcode" - "$cbfstool" "$rom" add-stage -f "tmp/refcode" -n "$cbfsname" \ - -t stage || $err "$rom: !add ref" + elif [ "$blobtype" = "stage" ]; then + # the only stage we handle is refcode + + x_ rm -f "$xbtmp/refcode" + x_ "$rmodtool" -i "$_dest" -o "$xbtmp/refcode" + x_ "$cbfstool" "$rom" add-stage -f "$xbtmp/refcode" \ + -n "$cbfsname" -t stage else - "$cbfstool" "$rom" add -f "$_dest" -n "$cbfsname" \ - -t $_t $_offset || $err "$rom !add $_t ($_dest)" + x_ "$cbfstool" "$rom" add -f "$_dest" -n "$cbfsname" \ + -t $blobtype $_offset fi - xchanged="y"; : + + xchanged="y" } -modify_mac() +# must be called from a subshell +check_vendor_hashes() { - [ -n "$CONFIG_GBE_BIN_PATH" ] || return 1 - - x_ mkdir -p tmp && x_ cp "${CONFIG_GBE_BIN_PATH##*../}" tmp/gbe - [ "$new_mac" != "restore" ] && x_ make -C util/nvmutil && \ - x_ "$nvm" tmp/gbe setmac "$new_mac" + build_sbase - find "$tmpromdir" -maxdepth 1 -type f -name "*.rom" > "tmp/rom.list" \ - || $err "'$archive' -> Can't make tmp/rom.list - $dontflash" + x_ cd "$tmpromdir" - while read -r _xrom; do - e "$_xrom" f && xchanged="y" && x_ \ - "$ifdtool" $ifdprefix -i GbE:tmp/gbe "$_xrom" -O "$_xrom" - done < "tmp/rom.list" - - printf "\nGbE NVM written to '%s':\n" "$archive" - x_ "$nvm" tmp/gbe dump | grep -v "bytes read from file" || : + if [ "$has_hashes" != "n" ] && [ "$nuke" != "nuke" ]; then + ( x_ "$sha512sum" -c "$hashfile" ) || \ + x_ sha1sum -c "$hashfile" + fi - [ "$new_mac" = "restore" ] && \ - printf "\nDefault GbE file '%s' written, unmodified.\n" \ - "${CONFIG_GBE_BIN_PATH##*../}"; : + x_ rm -f "$hashfile" } @@ -1,489 +1,71 @@ #!/usr/bin/env sh + # SPDX-License-Identifier: GPL-3.0-or-later + # Copyright (c) 2020-2025 Leah Rowe <leah@libreboot.org> # Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com> -# Copyright (c) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com> -# Copyright (c) 2022-2023 Alper Nebi Yasak <alpernebiyasak@gmail.com> set -u -e -if [ "./${0##*/}" != "${0}" ] || [ ! -f "mk" ] || [ -L "mk" ]; then +ispwd="true" + +if [ "$0" != "./mk" ]; then + ispwd="false" +fi +if [ "$ispwd" = "true" ] && [ -L "mk" ]; then + ispwd="false" +fi +if [ "$ispwd" = "false" ]; then printf "You must run this in the proper work directory.\n" 1>&2 exit 1 fi . "include/lib.sh" +. "include/init.sh" . "include/vendor.sh" . "include/mrc.sh" - -eval "`setvars "" vdir src_dirname srcdir mode xp ser`" +. "include/inject.sh" +. "include/rom.sh" +. "include/release.sh" +. "include/get.sh" main() { - [ $# -lt 1 ] && $err "bad command" - rval=0 - - for g in "command -v git" "git config --global user.name" \ - "git config --global user.email" "git_init"; do - eval "$g 1>/dev/null 2>/dev/null || $err \"Unconfigured: $g\"" - done + cmd="" + if [ $# -gt 0 ]; then + cmd="$1" - case "$1" in - version) printf "%s\nWebsite: %s\n" "$relname" "$projectsite" ;; - release|download|inject) - cmd="vendor_$1" && [ "$1" = "release" ] && cmd="mkrelease" shift 1 - $cmd "$@" ;; - -*) rval=1 ;; - *) $err "bad command" ;; - esac - set -u -e # some commands disable them. turn them on! - return $rval -} - -git_init() -{ - [ -L ".git" ] && return 1 - [ -e ".git" ] && return 0 - eval "`setvars "$(date -Rud @$versiondate)" cdate _nogit`" - - git init || return 1 - git add -A . || return 1 - git commit -m "$projectname $version" --date "$cdate" \ - --author="xbmk <xbmk@example.com>" || return 1 - git tag -a "$version" -m "$projectname $version" || return 1 -} - -mkrelease() -{ - export XBMK_RELEASE="y" - - vdir="release" - while getopts d:m: option; do - [ -z "$OPTARG" ] && $err "empty argument not allowed" - case "$option" in - d) vdir="$OPTARG" ;; - m) mode="$OPTARG" ;; - *) $err "invalid option '-$option'" ;; - esac - done - - vdir="$vdir/$version" - src_dirname="${relname}_src" - srcdir="$vdir/$src_dirname" - - [ -e "$vdir" ] && $err "already exists: \"$vdir\"" - mkdir -p "$vdir" || $err "mkvdir: !mkdir -p \"$vdir\"" - git clone . "$srcdir" || $err "mkdir: !gitclone \"$srcdir\"" - touch "$srcdir/lock" || $err "can't make lock file in $srcdir/" - - build_release - - printf "\n\nDONE! Check release files under %s\n" "$vdir" -} - -build_release() -{ - ( - cd "$srcdir" || $err "$vdir: !cd \"$srcdir\"" - - ./mk -f - x_ rm -Rf tmp - rmgit . - x_ mv src/docs docs - ) || $err "can't create release files" - - git log --graph --pretty=format:'%Cred%h%Creset %s %Creset' \ - --abbrev-commit > "$srcdir/CHANGELOG" || $err "!gitlog $srcdir" - rm -f "$srcdir/lock" || $err "can't remove lock file in $srcdir" - - ( - cd "${srcdir%/*}" || $err "$vdir: mktarball \"$srcdir\"" - mktarball "${srcdir##*/}" "${srcdir##*/}.tar.xz" || $err "$vdir: mksrc" - ) || $err "can't create src tarball" - [ "$mode" = "src" ] && return 0 - - touch "$srcdir/lock" || $err "can't make lock file in $srcdir/" - ( - cd "$srcdir" || $err "$vdir: 2 !cd \"$srcdir\"" - mk -b coreboot pico-serprog stm32-vserprog pcsx-redux - x_ mv bin ../roms - ) || $err "can't build rom images" - - rm -Rf "$srcdir" || $err "!rm -Rf $srcdir" -} - -main "$@" && exit 0 - -# what follows was formerly script/trees, whose main() is now trees() - -. "include/git.sh" - -eval "`setvars "" xarch srcdir premake gnatdir xlang mode makeargs elfdir cmd \ - project target target_dir targets xtree _f release bootstrapargs mkhelper \ - autoconfargs listfile autogenargs btype tree rev tree_depend build_depend \ - defconfig postmake mkhelpercfg dry dest_dir mdir cleanargs gccver gccfull \ - gnatver gnatfull gccdir cmakedir do_make badhash`" - -trees() -{ - flags="f:b:m:u:c:x:s:l:n:d:" - - while getopts $flags option; do - [ -n "$_f" ] && $err "only one flag is permitted" - _f="$1" - - case "$_f" in - -d) dry=":" ;; - -b) : ;; - -u) mode="oldconfig" ;; - -m) mode="menuconfig" ;; - -c) mode="distclean" ;; - -x) mode="crossgcc-clean" ;; - -f) - do_make="n" - dry=":" ;; - -s) mode="savedefconfig" ;; - -l) mode="olddefconfig" ;; - -n) mode="nconfig" ;; - *) $err "invalid option '-$option'" ;; - esac - - if [ -z "${OPTARG+x}" ]; then - shift 1 - break - fi - - project="${OPTARG#src/}" - shift 2 - done - [ -z "$_f" ] && $err "missing flag ($flags)" - if [ -z "$project" ]; then - mk $_f $(ls -1 config/git) - return 1 - fi - - [ -f "config/git/$project/pkg.cfg" ] || \ - $err "config/git/$project/pkg.cfg missing" - - for d in "elf" "config/data" "config" "src"; do - eval "${d#*/}dir=\"$d/$project\"" - done - dest_dir="$elfdir" - - listfile="$datadir/build.list" - [ -f "$listfile" ] || listfile="" # optional on all projects - - mkhelpercfg="$datadir/mkhelper.cfg" - if e "$mkhelpercfg" f missing; then - mkhelpercfg="$xbmktmp/mkhelper.cfg" - x_ touch "$mkhelpercfg" - fi - - targets="$*" - cmd="build_targets $targets" - singletree "$project" && cmd="build_project" - - remkdir "${tmpgit%/*}" -} - -build_project() -{ - configure_project "$configdir" || return 0 - [ ! -f "$listfile" ] || $dry elfcheck || return 0 - - [ "$mode" = "distclean" ] && mode="clean" - run_make_command || return 0 - - [ -n "$mode" ] || $dry copy_elf; : -} - -build_targets() -{ - [ -d "$configdir" ] || $err "directory, $configdir, does not exist" - [ $# -gt 0 ] || targets="$(ls -1 "$configdir")" || $err "!o $configdir" - - for x in $targets; do - unset CROSS_COMPILE - export PATH="$xbmkpath" - [ "$x" = "list" ] && x_ ls -1 "config/$project" && \ - listfile="" && break - - target="$x" - printf "'make %s', '%s', '%s'\n" "$mode" "$project" "$target" - x_ handle_defconfig - - x_ $postmake - done; : -} - -handle_defconfig() -{ - target_dir="$configdir/$target" - - [ -f "CHANGELOG" ] || fetch_project "$project" - configure_project "$target_dir" || return 0 - x_ mkdir -p "$elfdir/$target" - - chkvars tree - srcdir="src/$project/$tree" - - if [ "$mode" = "distclean" ] || [ "$mode" = "crossgcc-clean" ]; then - [ -d "$srcdir" ] || return 0 - fi - [ -z "$mode" ] && $dry check_cross_compiler - - for y in "$target_dir/config"/*; do - [ "$_f" = "-d" ] || [ -f "$y" ] || continue - [ "$_f" = "-d" ] || defconfig="$y" - - [ -n "$mode" ] || check_defconfig || continue - handle_makefile - [ -n "$mode" ] || $dry copy_elf - done; : -} - -configure_project() -{ - eval "`setvars "" cleanargs build_depend autoconfargs xtree postmake \ - tree_depend makeargs btype mkhelper bootstrapargs premake release \ - xarch xlang badhash`" - _tcfg="$1/target.cfg" - [ -f "$_tcfg" ] || btype="auto" - e "$datadir/mkhelper.cfg" f && eval "`setcfg "$datadir/mkhelper.cfg"`" - - while e "$_tcfg" f || [ "$cmd" != "build_project" ]; do - eval "`setvars "" rev tree`" - eval "`setcfg "$_tcfg"`" - printf "Loading %s config: %s\n" "$project" "$_tcfg" - - [ "$_f" = "-d" ] && build_depend="" # dry run - [ "$cmd" = "build_project" ] && break - [ "$do_make" != "n" ] && break - - [ "${_tcfg%/*/target.cfg}" = "${_tcfg%"/$tree/target.cfg"}" ] \ - && break - _tcfg="${_tcfg%/*/target.cfg}/$tree/target.cfg" - done - [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ] && return 1 - [ -z "$btype" ] || [ "${mode%config}" = "$mode" ] || return 1 - [ -z "$mode" ] && $dry build_dependencies - - mdir="$xbmkpwd/config/submodule/$project" - [ -n "$tree" ] && mdir="$mdir/$tree" - [ -f "CHANGELOG" ] || check_project_hashes - - if [ "$do_make" = "n" ]; then - [ -f "CHANGELOG" ] || fetch_${cmd#build_} - return 1 fi - x_ ./mk -f "$project" "$target" -} - -build_dependencies() -{ - for bd in $build_depend; do - bd_p="${bd%%/*}" - bd_t="${bd##*/}" - [ -z "$bd_p" ] && $dry $err "$project/$tree: !bd '$bd'" - [ "${bd##*/}" = "$bd" ] && bd_t="" - [ -z "$bd_p" ] || $dry x_ ./mk -b $bd_p $bd_t; : - done; : -} - -check_project_hashes() -{ - old_pjhash="" && x_ mkdir -p "$XBMK_CACHE/hash" - [ ! -f "$XBMK_CACHE/hash/$project$tree" ] || \ - read -r old_pjhash < "$XBMK_CACHE/hash/$project$tree" - - x_ rm -f "$xbmktmp/project.list" "$xbmktmp/project.hash" \ - "$xbmktmp/project.tmp" - x_ touch "$xbmktmp/project.tmp" "$xbmktmp/project.hash" - - for rmchk in "$datadir" "$configdir/$tree" "$mdir"; do - [ ! -d "$rmchk" ] || find "$rmchk" -type f -not -path \ - "*/.git*/*" >> "$xbmktmp/project.tmp" || $err "!fh $rmchk" - done - sort "$xbmktmp/project.tmp" > "$xbmktmp/project.list" || $err "!pj srt" - - while read -r rmchk; do - [ ! -f "$rmchk" ] || x_ sha512sum "$rmchk" | awk \ - '{print $1}' >> "$xbmktmp/project.hash" || $err "!h $rmchk" - done < "$xbmktmp/project.list" - - pjhash="$(sha512sum "$xbmktmp/project.hash" | awk '{print $1}')" || : - [ "$pjhash" != "$old_pjhash" ] && badhash="y" - [ -f "$XBMK_CACHE/hash/$project$tree" ] || badhash="y" - - printf "%s\n" "$pjhash" > "$XBMK_CACHE/hash/$project$tree" || \ - $err "!mk $XBMK_CACHE/hash/$project$tree" - - [ "$badhash" != "y" ] || x_ rm -Rf "src/$project/$tree" \ - "elf/$project/$tree" "elf/$project/$target"; : -} - -check_cross_compiler() -{ - xgccargs="UPDATED_SUBMODULES=1 CPUS=$XBMK_THREADS" - for _xarch in $xarch; do - cbdir="src/coreboot/$tree" - [ "$project" != "coreboot" ] && cbdir="src/coreboot/default" - [ -n "$xtree" ] && cbdir="src/coreboot/$xtree" - - x_ ./mk -f coreboot "${cbdir#src/coreboot/}" - - export PATH="$xbmkpwd/$cbdir/util/crossgcc/xgcc/bin:$PATH" - export CROSS_COMPILE="${xarch% *}-" - [ -n "$xlang" ] && export BUILD_LANGUAGES="$xlang" - - xfix="${_xarch%-*}" && [ "$xfix" = "x86_64" ] && xfix="x64" - - # match gnat-X to gcc - check_gnu_path gcc gnat || x_ check_gnu_path gnat gcc - - # sometimes buildgcc fails for like no reason. try twice. - make -C "$cbdir" crossgcc-$xfix $xgccargs || \ - x_ make -C "$cbdir" crossgcc-$xfix $xgccargs - - # we only want to mess with hostcc to build xgcc - rm -f "$XBMK_CACHE/gnupath/"* || $err "Can't clear gnupath/"; : - done; : -} - -# fix mismatching gcc/gnat versions on debian trixie/sid. as of december 2024, -# trixie/sid had gnat-13 as gnat and gcc-14 as gcc, but has gnat-14 in apt. in -# some cases, gcc 13+14 and gnat-13 are present; or gnat-14 and gcc-14, but -# gnat in PATH never resolves to gnat-14, because gnat-14 was "experimental" -check_gnu_path() -{ - [ $# -lt 2 ] && $err "check_gnu_path: Too few arguments" - [ "$1" = "$2" ] && $err "check_gnu_path: Both arguments identical" - for _gnuarg in 1 2; do - eval "[ \"\$$_gnuarg\" = \"gcc\" ] && continue" - eval "[ \"\$$_gnuarg\" = \"gnat\" ] && continue" - $err "check_gnu_path: Invalid argument \"$_gnuarg\"" - done - command -v "$1" 1>/dev/null || $err "Host '$1' unavailable" - - eval "`setvars "" gccver gccfull gnatver gnatfull gccdir gnatdir`" - gnu_setver "$1" "$1" || $err "Command '$1' unavailable." - gnu_setver "$2" "$2" || : - - eval "[ -z \"\$$1ver\" ] && $err \"Cannot detect host '$1' version\"" - [ "$gnatfull" = "$gccfull" ] && return 0 - eval "$1dir=\"$(dirname "$(command -v "$1")")\"" - eval "_gnudir=\"\$$1dir\"; _gnuver=\"\$$1ver\"" - for _gnubin in "$_gnudir/$2-"*; do - [ -f "$_gnubin" ] || continue - [ "${_gnubin#"$_gnudir/$2-"}" = "$_gnuver" ] || continue - _gnuver="${_gnubin#"$_gnudir/$2-"}"; break - done - gnu_setver "$2" "$_gnudir/$2-$_gnuver" || return 1 - [ "$gnatfull" = "$gccfull" ] || return 1 - - ( - rm -f "$XBMK_CACHE/gnupath/"* || $err "Cannot clear gnupath/" - cd "$XBMK_CACHE/gnupath" || $err "Can't cd to gnupath/" - for _gnubin in "$_gnudir/$2"*"-$_gnuver"; do - _gnuutil="${_gnubin##*/}" && [ -e "$_gnubin" ] && \ - x_ ln -s "$_gnubin" "${_gnuutil%"-$_gnuver"}" - done - ) || $err "Cannot create $2-$_gnuver link in $_gnudir"; : -} - -gnu_setver() -{ - eval "$2 --version 1>/dev/null 2>/dev/null || return 1" - eval "$1ver=\"`"$2" --version 2>/dev/null | head -n1`\"" - eval "$1ver=\"\${$1ver##* }\"" - eval "$1full=\"\$$1ver\"" - eval "$1ver=\"\${$1ver%%.*}\""; : -} - -check_defconfig() -{ - [ -f "$defconfig" ] || $dry $err "$project/$target: missing defconfig" - dest_dir="$elfdir/$target/${defconfig#"$target_dir/config/"}" - - $dry elfcheck || return 1 # skip build if a previous one exists - $dry x_ mkdir -p "$dest_dir" -} - -elfcheck() -{ - # TODO: very hacky check. do it properly (based on build.list) - for elftest in "$dest_dir"/*; do - [ -e "$elftest" ] && e "$elftest" f && return 1 - done; : -} - -handle_makefile() -{ - $dry check_makefile "$srcdir" && x_ make -C "$srcdir" $cleanargs clean - - [ -f "$defconfig" ] && x_ cp "$defconfig" "$srcdir/.config" - [ -n "$mode" ] || [ -n "$btype" ] || $dry make -C \ - "$srcdir" silentoldconfig || make -C "$srcdir" oldconfig || : - - run_make_command || $err "handle_makefile $srcdir: no makefile!" - - _copy=".config" && [ "$mode" = "savedefconfig" ] && _copy="defconfig" - [ "${mode%config}" = "$mode" ] || \ - $dry x_ cp "$srcdir/$_copy" "$defconfig" - - [ -e "$srcdir/.git" ] && [ "$project" = "u-boot" ] && \ - [ "$mode" = "distclean" ] && \ - $dry x_ git -C "$srcdir" $cleanargs clean -fdx; : -} - -run_make_command() -{ - x_ $premake - - $dry check_cmake "$srcdir" && [ -z "$mode" ] && \ - $dry check_autoconf "$srcdir" - $dry check_makefile "$srcdir" || return 1 + case "$cmd" in + version) + printf "%s\nWebsite: %s\n" "$relname" "$projectsite" + ;; + release|download|inject) + $cmd "$@" + ;; + -*) + return 0 + ;; + *) + err "bad command" main "$@" + ;; + esac - $dry x_ make -C "$srcdir" $mode -j$XBMK_THREADS $makeargs - x_ $mkhelper + # some commands disable them. turn them back on! + set -u -e - [ "$mode" != "clean" ] || \ - $dry make -C "$srcdir" $cleanargs distclean || :; : + return 1 } -check_cmake() -{ - [ -z "$cmakedir" ] || $dry check_makefile "$1" || cmake -B "$1" \ - "$1/$cmakedir" || $dry x_ check_makefile "$1" - [ -z "$cmakedir" ] || $dry x_ check_makefile "$1"; : -} +main "$@" || exit 0 -check_autoconf() -{ - ( - cd "$1" || $err "!cd $1" - [ -f "bootstrap" ] && x_ ./bootstrap $bootstrapargs - [ -f "autogen.sh" ] && x_ ./autogen.sh $autogenargs - [ -f "configure" ] && x_ ./configure $autoconfargs; : - ) || $err "can't bootstrap project: $1"; : -} +. "include/tree.sh" -check_makefile() -{ - [ -f "$1/Makefile" ] || [ -f "$1/makefile" ] || \ - [ -f "$1/GNUmakefile" ] || return 1; : -} +trees "$@" || exit 0 -copy_elf() -{ - [ -f "$listfile" ] && x_ mkdir -p "$dest_dir" && while read -r f; do - [ -f "$srcdir/$f" ] && x_ cp "$srcdir/$f" "$dest_dir" - done < "$listfile" - x_ make clean -C "$srcdir" $cleanargs -} +x_ touch "$mkhelpercfg" -trees "$@" || exit 0 . "$mkhelpercfg" $cmd diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c index 12aabe4d..05459bb7 100644 --- a/util/nvmutil/nvmutil.c +++ b/util/nvmutil/nvmutil.c @@ -40,7 +40,7 @@ size_t partsize, gbe[2]; uint8_t nvmPartChanged[2] = {0, 0}, do_read[2] = {1, 1}; int flags, rfd, fd, part; -const char *strMac = NULL, *strRMac = "??:??:??:??:??:??", *filename = NULL; +const char *strMac = NULL, *strRMac = "xx:xx:xx:xx:xx:xx", *filename = NULL; typedef struct op { char *str; @@ -278,8 +278,11 @@ parseMacString(const char *strMac, uint16_t *mac) err(errno = EINVAL, "Invalid character '%c'", strMac[i + nib]); + /* If random, ensure that local/unicast bits are set */ if ((byte == 0) && (nib == 1)) - if (strMac[i + nib] == '?') /* ?=random */ + if ((strMac[i + nib] == '?') || + (strMac[i + nib] == 'x') || + (strMac[i + nib] == 'X')) /* random */ h = (h & 0xE) | 2; /* local, unicast */ mac[byte >> 1] |= ((uint16_t ) h) @@ -302,7 +305,10 @@ hextonum(char ch) return ch - 'A' + 10; else if ((ch >= 'a') && (ch <= 'f')) return ch - 'a' + 10; - return (ch == '?') ? rhex() : 16; + else if ((ch == '?') || (ch == 'x') || (ch == 'X')) + return rhex(); /* random hex value */ + else + return 16; /* error: invalid character */ } uint8_t diff --git a/util/sbase/.gitignore b/util/sbase/.gitignore new file mode 100644 index 00000000..247ecd36 --- /dev/null +++ b/util/sbase/.gitignore @@ -0,0 +1,103 @@ +*.o +/build +/getconf.h +/libutf.a +/libutil.a +/basename +/cal +/cat +/chgrp +/chmod +/chown +/chroot +/cksum +/cmp +/cols +/comm +/cp +/cron +/cut +/date +/dd +/dirname +/du +/echo +/ed +/env +/expand +/expr +/false +/find +/flock +/fold +/getconf +/grep +/head +/hostname +/join +/kill +/link +/ln +/logger +/logname +/ls +/md5sum +/mkdir +/mkfifo +/mknod +/mktemp +/mv +/nice +/nl +/nohup +/od +/paste +/pathchk +/printenv +/printf +/pwd +/readlink +/renice +/rev +/rm +/rmdir +/sbase-box +/sed +/seq +/setsid +/sha1sum +/sha224sum +/sha256sum +/sha384sum +/sha512sum +/sha512-224sum +/sha512-256sum +/sleep +/sort +/split +/sponge +/strings +/sync +/tail +/tar +/tee +/test +/tftp +/time +/touch +/tr +/true +/tsort +/tty +/uname +/unexpand +/uniq +/unlink +/uudecode +/uuencode +/wc +/which +/whoami +/xargs +/xinstall +/yes diff --git a/util/sbase/LICENSE b/util/sbase/LICENSE new file mode 100644 index 00000000..bbbfa8c5 --- /dev/null +++ b/util/sbase/LICENSE @@ -0,0 +1,63 @@ +MIT License + +© 2011 Connor Lane Smith <cls@lubutu.com> +© 2011-2016 Dimitris Papastamos <sin@2f30.org> +© 2014-2016 Laslo Hunhold <dev@frign.de> + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +Authors/contributors include: + +© 2011 Kamil CholewiÅ„ski <harry666t@gmail.com> +© 2011 Rob Pilling <robpilling@gmail.com> +© 2011 Hiltjo Posthuma <hiltjo@codemadness.org> +© 2011 pancake <pancake@youterm.com> +© 2011 Random832 <random832@fastmail.us> +© 2012 William Haddon <william@haddonthethird.net> +© 2012 Kurt H. Maier <khm@sciops.net> +© 2012 Christoph Lohmann <20h@r-36.net> +© 2012 David Galos <galosd83@students.rowan.edu> +© 2012 Robert Ransom <rransom.8774@gmail.com> +© 2013 Jakob Kramer <jakob.kramer@gmx.de> +© 2013 Anselm R Garbe <anselm@garbe.us> +© 2013 Truls Becken <truls.becken@gmail.com> +© 2013 dsp <dsp@2f30.org> +© 2013 Markus Teich <markus.teich@stusta.mhn.de> +© 2013 Jesse Ogle <jesse.p.ogle@gmail.com> +© 2013 Lorenzo Cogotti <miciamail@hotmail.it> +© 2013 Federico G. Benavento <benavento@gmail.com> +© 2013 Roberto E. Vargas Caballero <k0ga@shike2.com> +© 2013 Christian Hesse <mail@eworm.de> +© 2013 Markus Wichmann <nullplan@gmx.net> +© 2014 Silvan Jegen <s.jegen@gmail.com> +© 2014 Daniel Bainton <dpb@driftaway.org> +© 2014 Tuukka Kataja <stuge@xor.fi> +© 2014 Jeffrey Picard <jeff@jeffreypicard.com> +© 2014 Evan Gates <evan.gates@gmail.com> +© 2014 Michael Forney <mforney@mforney.org> +© 2014 Ari Malinen <ari.malinen@gmail.com> +© 2014 Brandon Mulcahy <brandon@jangler.info> +© 2014 Adria Garriga <rhaps0dy@installgentoo.com> +© 2014-2015 Greg Reagle <greg.reagle@umbc.edu> +© 2015 Tai Chi Minh Ralph Eastwood <tcmreastwood@gmail.com> +© 2015 Quentin Rameau <quinq@quinq.eu.org> +© 2015 Dionysis Grigoropoulos <info@erethon.com> +© 2015 Wolfgang Corcoran-Mathe <wcm@sigwinch.xyz> +© 2016 Mattias Andrée <maandree@kth.se> +© 2016 Eivind Uggedal <eivind@uggedal.com> diff --git a/util/sbase/Makefile b/util/sbase/Makefile new file mode 100644 index 00000000..2d409ff3 --- /dev/null +++ b/util/sbase/Makefile @@ -0,0 +1,256 @@ +.POSIX: +include config.mk + +.SUFFIXES: +.SUFFIXES: .o .c + +CPPFLAGS =\ + -D_DEFAULT_SOURCE \ + -D_NETBSD_SOURCE \ + -D_BSD_SOURCE \ + -D_XOPEN_SOURCE=700 \ + -D_FILE_OFFSET_BITS=64 + +HDR =\ + arg.h\ + compat.h\ + crypt.h\ + fs.h\ + md5.h\ + queue.h\ + sha1.h\ + sha224.h\ + sha256.h\ + sha384.h\ + sha512.h\ + sha512-224.h\ + sha512-256.h\ + text.h\ + utf.h\ + util.h + +LIBUTFOBJ =\ + libutf/fgetrune.o\ + libutf/fputrune.o\ + libutf/isalnumrune.o\ + libutf/isalpharune.o\ + libutf/isblankrune.o\ + libutf/iscntrlrune.o\ + libutf/isdigitrune.o\ + libutf/isgraphrune.o\ + libutf/isprintrune.o\ + libutf/ispunctrune.o\ + libutf/isspacerune.o\ + libutf/istitlerune.o\ + libutf/isxdigitrune.o\ + libutf/lowerrune.o\ + libutf/rune.o\ + libutf/runetype.o\ + libutf/upperrune.o\ + libutf/utf.o\ + libutf/utftorunestr.o + +LIBUTILOBJ =\ + libutil/concat.o\ + libutil/cp.o\ + libutil/crypt.o\ + libutil/confirm.o\ + libutil/ealloc.o\ + libutil/enmasse.o\ + libutil/eprintf.o\ + libutil/eregcomp.o\ + libutil/estrtod.o\ + libutil/fnck.o\ + libutil/fshut.o\ + libutil/getlines.o\ + libutil/human.o\ + libutil/linecmp.o\ + libutil/md5.o\ + libutil/memmem.o\ + libutil/mkdirp.o\ + libutil/mode.o\ + libutil/parseoffset.o\ + libutil/putword.o\ + libutil/reallocarray.o\ + libutil/recurse.o\ + libutil/rm.o\ + libutil/sha1.o\ + libutil/sha224.o\ + libutil/sha256.o\ + libutil/sha384.o\ + libutil/sha512.o\ + libutil/sha512-224.o\ + libutil/sha512-256.o\ + libutil/strcasestr.o\ + libutil/strlcat.o\ + libutil/strlcpy.o\ + libutil/strsep.o\ + libutil/strnsubst.o\ + libutil/strtonum.o\ + libutil/unescape.o\ + libutil/writeall.o + +LIB = libutf.a libutil.a + +BIN =\ + basename\ + cal\ + cat\ + chgrp\ + chmod\ + chown\ + chroot\ + cksum\ + cmp\ + cols\ + comm\ + cp\ + cron\ + cut\ + date\ + dd\ + dirname\ + du\ + echo\ + ed\ + env\ + expand\ + expr\ + false\ + find\ + flock\ + fold\ + getconf\ + grep\ + head\ + hostname\ + join\ + kill\ + link\ + ln\ + logger\ + logname\ + ls\ + md5sum\ + mkdir\ + mkfifo\ + mknod\ + mktemp\ + mv\ + nice\ + nl\ + nohup\ + od\ + paste\ + pathchk\ + printenv\ + printf\ + pwd\ + readlink\ + renice\ + rev\ + rm\ + rmdir\ + sed\ + seq\ + setsid\ + sha1sum\ + sha224sum\ + sha256sum\ + sha384sum\ + sha512sum\ + sha512-224sum\ + sha512-256sum\ + sleep\ + sort\ + split\ + sponge\ + strings\ + sync\ + tail\ + tar\ + tee\ + test\ + tftp\ + time\ + touch\ + tr\ + true\ + tsort\ + tty\ + uname\ + unexpand\ + uniq\ + unlink\ + uudecode\ + uuencode\ + wc\ + which\ + whoami\ + xargs\ + xinstall\ + yes + +OBJ = $(LIBUTFOBJ) $(LIBUTILOBJ) + +all: $(BIN) + +$(BIN): $(LIB) + +$(OBJ) $(BIN): $(HDR) + +.o: + $(CC) $(LDFLAGS) -o $@ $< $(LIB) + +.c.o: + $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $< + +.c: + $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $< $(LIB) + +libutf.a: $(LIBUTFOBJ) + $(AR) $(ARFLAGS) $@ $? + $(RANLIB) $@ + +libutil.a: $(LIBUTILOBJ) + $(AR) $(ARFLAGS) $@ $? + $(RANLIB) $@ + +getconf: getconf.h + +getconf.h: + scripts/getconf.sh > $@ + +proto: $(BIN) + scripts/mkproto $(DESTDIR)$(PREFIX) $(DESTDIR)$(MANPREFIX) proto + +install uninstall: proto + scripts/$@ proto + +sbase-box-install: sbase-box proto + scripts/install proto + $(DESTDIR)$(PREFIX)/bin/sbase-box -i $(DESTDIR)$(PREFIX)/bin/ + +sbase-box-uninstall: sbase-box proto + $(DESTDIR)$(PREFIX)/bin/sbase-box -d $(DESTDIR)$(PREFIX)/bin/ + scripts/uninstall proto + +dist: clean + mkdir -p sbase + cp -R LICENSE Makefile README TODO config.mk *.c *.1 *.h libutf libutil sbase + mv sbase sbase-$(VERSION) + tar -cf sbase-$(VERSION).tar sbase-$(VERSION) + gzip sbase-$(VERSION).tar + rm -rf sbase-$(VERSION) + +sbase-box: $(BIN) + scripts/mkbox + $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ build/*.c $(LIB) + +clean: + rm -f $(BIN) $(OBJ) $(LIB) sbase-box sbase-$(VERSION).tar.gz + rm -f getconf.h + rm -f proto + rm -rf build + +.PHONY: all install uninstall dist sbase-box-install sbase-box-uninstall clean diff --git a/util/sbase/README b/util/sbase/README new file mode 100644 index 00000000..a3390a95 --- /dev/null +++ b/util/sbase/README @@ -0,0 +1,147 @@ +sbase - suckless unix tools +=========================== + +sbase is a collection of unix tools that are inherently portable across +UNIX and UNIX-like systems. + +The complement of sbase is ubase[1] which is Linux-specific and provides +all the non-portable tools. Together they are intended to form a base +system similar to busybox but much smaller and suckless. + +Building +-------- + +To build sbase, simply type make. You may have to fiddle with config.mk +depending on your system. + +You can also build sbase-box, which generates a single binary containing +all the required tools. You can then symlink the individual tools to +sbase-box or run: make sbase-box-install + +To run the tools for sbase-box directly use: sbase-box cmd [args] + +Ideally you will want to statically link sbase. If you are on Linux we +recommend using musl-libc[2]. + +Portability +----------- + +sbase has been compiled on a variety of different operating systems, +including Linux, *BSD, OSX, Haiku, Solaris, SCO OpenServer and others. + +Various combinations of operating systems and architectures have also +been built. + +You can build sbase with gcc, clang, tcc, nwcc and pcc. + +Status +------ + +The following tools are implemented: + +'#' -> UTF-8 support, '=' -> Implicit UTF-8 support, '*' -> Finished, +'|' -> Audited, 'o' -> POSIX 2013 compliant, 'x' -> Non-POSIX, +'0' -> NUL handling, '()' -> Petty flag + + UTILITY MISSING + ------- ------- +0=*|o basename . +0=*|o cal . +0=*|o cat . +0=*|o chgrp . +0=*|o chmod . +0=*|o chown . +0=*|x chroot . +0=*|o cksum . +0=*|o cmp . +0#*|x cols . +0=*|o comm . +0=*|o cp . +0=*|x cron . +0#*|o cut . +0=*|o date . +0=*|o dd . +0=*|o dirname . +0=*|o du . +0=*|o echo . + o ed . +0=*|o env . +0#*|o expand . +0#*|o expr . +0=*|o false . +0= find . +0=* x flock . +0#*|o fold . +0=*|o getconf (-v) + =*|o grep . +0=*|o head . +0=*|x hostname . +0=*|x install . +0=* o join . +0=*|o kill . +0=*|o link . +0=*|o ln . +0=*|o logger . +0=*|o logname . +0#* o ls (-C, -k, -m, -p, -s, -x) +0=*|x md5sum . +0=*|o mkdir . +0=*|o mkfifo . +0=*|x mknod . +0=*|x mktemp . +0=*|o mv (-i) +0=*|o nice . +0#*|o nl . +0=*|o nohup . +0=*|o od . + #*|o paste . +0#* o pathchk . +0=*|x printenv . +0#*|o printf . +0=*|o pwd . +0=*|x readlink . +0=*|o renice . +0#* x rev . +0=*|o rm . +0=*|o rmdir . + # sed . +0=*|x seq . +0=*|x setsid . +0=*|x sha1sum . +0=* x sha224sum . +0=*|x sha256sum . +0=* x sha384sum . +0=*|x sha512sum . +0=* x sha512-224sum . +0=* x sha512-256sum . +0=*|o sleep . +0#*|o sort . +0=*|o split . +0=*|x sponge . +0#*|o strings . +0=*|x sync . +0=*|o tail . +0=*|x tar . +0=*|o tee . +0=*|o test . +0=*|x tftp . +0=*|o time . +0=*|o touch . +0#*|o tr . +0=*|o true . +0=* o tsort . +0=*|o tty . +0=*|o uname . +0#*|o unexpand . +0=*|o uniq . +0=*|o unlink . +0=*|o uudecode . +0=*|o uuencode . +0#*|o wc . +0=*|x which . +0=*|x whoami . +0=*|o xargs . +0=*|x yes . + +[1] http://git.suckless.org/ubase/ +[2] http://www.musl-libc.org/ diff --git a/util/sbase/TODO b/util/sbase/TODO new file mode 100644 index 00000000..38c9f868 --- /dev/null +++ b/util/sbase/TODO @@ -0,0 +1,92 @@ +The following list of commands is taken from the toybox roadmap[0] and +has been stripped down accordingly. Commands that belong to ubase[1] +are not listed here as well as commands that fall outside the scope of +sbase such as vi and sh are also not listed here. + +at +awk +bc +diff +patch +stty + +If you are looking for some work to do on sbase, another option is to +pick a utility from the list in the README which has missing flags or +features noted. + +What also needs to be implemented is the capability of the tools to +handle data with NUL-bytes in it. + +The return values of mdcheckline() in crypt.c need to be fixed (0 -> success, +1 -> error). + +[0] http://landley.net/toybox/roadmap.html +[1] http://git.suckless.org/ubase/ + +Bugs +==== + +ed +-- +* cat <<EOF | ed + i + LLL + . + s/$/\\ + +* cat <<EOF | ed + 0a + int radix = 16; + int Pflag; + int Aflag; + int vflag; + int gflag; + int uflag; + int arflag; + + . + ?radix?;/^$/-s/^/static / +* cat <<EOF | ed + 0a + Line + . + s# *## +* cat <<EOF | ed + 0a + line + . + 1g/^$/p + +* cat <<EOF | ed + 0a + line1 + line2 + line3 + . + g/^$/d + ,p + +* Editing huge files doesn't work well. + + +printf +------ +* Flags for string conversion-specifier (%s) are not supported. +* Escape sequences that expand to '%' are treated as beginning of + conversion specification. +* An trailing '%' at the end of a format string causes a read past + the end of the string. + +tr +-- +* When a character class is present, all other characters in the + string are ignored. + +sbase-box +--------- +* List of commands does not contain `install` (only `xinstall`). + + +xargs +----- +* Add -L. diff --git a/util/sbase/arg.h b/util/sbase/arg.h new file mode 100644 index 00000000..0b23c53a --- /dev/null +++ b/util/sbase/arg.h @@ -0,0 +1,65 @@ +/* + * Copy me if you can. + * by 20h + */ + +#ifndef ARG_H__ +#define ARG_H__ + +extern char *argv0; + +/* use main(int argc, char *argv[]) */ +#define ARGBEGIN for (argv0 = *argv, argv++, argc--;\ + argv[0] && argv[0][0] == '-'\ + && argv[0][1];\ + argc--, argv++) {\ + char argc_;\ + char **argv_;\ + int brk_;\ + if (argv[0][1] == '-' && argv[0][2] == '\0') {\ + argv++;\ + argc--;\ + break;\ + }\ + for (brk_ = 0, argv[0]++, argv_ = argv;\ + argv[0][0] && !brk_;\ + argv[0]++) {\ + if (argv_ != argv)\ + break;\ + argc_ = argv[0][0];\ + switch (argc_) + +/* Handles obsolete -NUM syntax */ +#define ARGNUM case '0':\ + case '1':\ + case '2':\ + case '3':\ + case '4':\ + case '5':\ + case '6':\ + case '7':\ + case '8':\ + case '9' + +#define ARGEND }\ + } + +#define ARGC() argc_ + +#define ARGNUMF() (brk_ = 1, estrtonum(argv[0], 0, INT_MAX)) + +#define EARGF(x) ((argv[0][1] == '\0' && argv[1] == NULL)?\ + ((x), abort(), (char *)0) :\ + (brk_ = 1, (argv[0][1] != '\0')?\ + (&argv[0][1]) :\ + (argc--, argv++, argv[0]))) + +#define ARGF() ((argv[0][1] == '\0' && argv[1] == NULL)?\ + (char *)0 :\ + (brk_ = 1, (argv[0][1] != '\0')?\ + (&argv[0][1]) :\ + (argc--, argv++, argv[0]))) + +#define LNGARG() &argv[0][0] + +#endif diff --git a/util/sbase/basename.1 b/util/sbase/basename.1 new file mode 100644 index 00000000..2717c580 --- /dev/null +++ b/util/sbase/basename.1 @@ -0,0 +1,22 @@ +.Dd October 8, 2015 +.Dt BASENAME 1 +.Os sbase +.Sh NAME +.Nm basename +.Nd strip leading directory components of a path +.Sh SYNOPSIS +.Nm +.Ar path +.Op Ar suffix +.Sh DESCRIPTION +.Nm +writes +.Ar path +without leading directory components and +.Ar suffix +to stdout. +.Sh SEE ALSO +.Xr dirname 1 , +.Xr basename 3 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/basename.c b/util/sbase/basename.c new file mode 100644 index 00000000..94a2848f --- /dev/null +++ b/util/sbase/basename.c @@ -0,0 +1,37 @@ +/* See LICENSE file for copyright and license details. */ +#include <libgen.h> +#include <stdio.h> +#include <string.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s path [suffix]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + ssize_t off; + char *p; + + ARGBEGIN { + default: + usage(); + } ARGEND + + if (argc != 1 && argc != 2) + usage(); + + p = basename(argv[0]); + if (argc == 2) { + off = strlen(p) - strlen(argv[1]); + if (off > 0 && !strcmp(p + off, argv[1])) + p[off] = '\0'; + } + puts(p); + + return fshut(stdout, "<stdout>"); +} diff --git a/util/sbase/cal.1 b/util/sbase/cal.1 new file mode 100644 index 00000000..2918ea98 --- /dev/null +++ b/util/sbase/cal.1 @@ -0,0 +1,68 @@ +.Dd October 8, 2015 +.Dt CAL 1 +.Os sbase +.Sh NAME +.Nm cal +.Nd show calendar +.Sh SYNOPSIS +.Nm +.Op Fl 1 | Fl 3 | Fl y | Fl n Ar num +.Op Fl s | Fl m | Fl f Ar num +.Op Fl c Ar num +.Oo Oo Ar month Oc Ar year Oc +.Sh DESCRIPTION +.Nm +writes a calendar of +.Ar month +and +.Ar year +or the current month to stdout. +If +.Ar year +is given without +.Ar month , +.Nm +writes a 3-column calendar of the whole +year to stdout. +The date formatting is according to +.Xr localtime 3 . +.Pp +The Julian calendar is used until Sep 2, 1752. +The Gregorian calendar is used starting the next day on Sep 14, 1752. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl 1 +Print current month. +This is the default. +.It Fl 3 +Print previous, current and next month. +.It Fl c Ar num +Print +.Ar num +calendars in a row. +The default is 3. +.It Fl f Ar num +Set +.Ar num +(0 is Sunday, 6 is Saturday) as first day of week. +.It Fl m +Set Monday as first day of week. +.It Fl n Ar num +Output +.Ar num +months starting from and including the current month. +.It Fl s +Set Sunday as first day of week. +.It Fl y +Print the entire +.Ar year +or current year. +.El +.Sh SEE ALSO +.Xr localtime 3 +.Sh STANDARDS +POSIX.1-2013. +.Pp +The flags +.Op Fl 13cfmnsy +are an extension to that specification. diff --git a/util/sbase/cal.c b/util/sbase/cal.c new file mode 100644 index 00000000..a8c91f19 --- /dev/null +++ b/util/sbase/cal.c @@ -0,0 +1,226 @@ +/* See LICENSE file for copyright and license details. */ +#include <limits.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <unistd.h> + +#include "util.h" + +enum { JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC }; +enum caltype { JULIAN, GREGORIAN }; +enum { TRANS_YEAR = 1752, TRANS_MONTH = SEP, TRANS_DAY = 2 }; + +static struct tm *ltime; + +static int +isleap(size_t year, enum caltype cal) +{ + if (cal == GREGORIAN) { + if (year % 400 == 0) + return 1; + if (year % 100 == 0) + return 0; + return (year % 4 == 0); + } + else { /* cal == Julian */ + return (year % 4 == 0); + } +} + +static int +monthlength(size_t year, int month, enum caltype cal) +{ + int mdays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + + return (month == FEB && isleap(year, cal)) ? 29 : mdays[month]; +} + +/* From http://www.tondering.dk/claus/cal/chrweek.php#calcdow */ +static int +dayofweek(size_t year, int month, int dom, enum caltype cal) +{ + size_t y; + int m, a; + + a = (13 - month) / 12; + y = year - a; + m = month + 12 * a - 1; + + if (cal == GREGORIAN) + return (dom + y + y / 4 - y / 100 + y / 400 + (31 * m) / 12) % 7; + else /* cal == Julian */ + return (5 + dom + y + y / 4 + (31 * m) / 12) % 7; +} + +static void +printgrid(size_t year, int month, int fday, int line) +{ + enum caltype cal; + int offset, dom, d = 0, trans; /* are we in the transition from Julian to Gregorian? */ + int today = 0; + + cal = (year < TRANS_YEAR || (year == TRANS_YEAR && month <= TRANS_MONTH)) ? JULIAN : GREGORIAN; + trans = (year == TRANS_YEAR && month == TRANS_MONTH); + offset = dayofweek(year, month, 1, cal) - fday; + + if (offset < 0) + offset += 7; + if (line == 1) { + for (; d < offset; ++d) + printf(" "); + dom = 1; + } else { + dom = 8 - offset + (line - 2) * 7; + if (trans && !(line == 2 && fday == 3)) + dom += 11; + } + if (ltime && year == ltime->tm_year + 1900 && month == ltime->tm_mon) + today = ltime->tm_mday; + for (; d < 7 && dom <= monthlength(year, month, cal); ++d, ++dom) { + if (dom == today) + printf("\x1b[7m%2d\x1b[0m ", dom); /* highlight today's date */ + else + printf("%2d ", dom); + if (trans && dom == TRANS_DAY) + dom += 11; + } + for (; d < 7; ++d) + printf(" "); +} + +static void +drawcal(size_t year, int month, size_t ncols, size_t nmons, int fday) +{ + char *smon[] = { "January", "February", "March", "April", + "May", "June", "July", "August", + "September", "October", "November", "December" }; + char *days[] = { "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", }; + size_t m, n, col, cur_year, cur_month, dow; + int line, pad; + char month_year[sizeof("Su Mo Tu We Th Fr Sa")]; + + for (m = 0; m < nmons; ) { + n = m; + for (col = 0; m < nmons && col < ncols; ++col, ++m) { + cur_year = year + m / 12; + cur_month = month + m % 12; + if (cur_month > 11) { + cur_month -= 12; + cur_year += 1; + } + snprintf(month_year, sizeof(month_year), "%s %zu", smon[cur_month], cur_year); + pad = sizeof(month_year) - 1 - strlen(month_year); + printf("%*s%s%*s ", pad / 2 + pad % 2, "", month_year, pad / 2, ""); + } + putchar('\n'); + for (col = 0, m = n; m < nmons && col < ncols; ++col, ++m) { + for (dow = fday; dow < (fday + 7); ++dow) + printf("%s ", days[dow % 7]); + printf(" "); + } + putchar('\n'); + for (line = 1; line <= 6; ++line) { + for (col = 0, m = n; m < nmons && col < ncols; ++col, ++m) { + cur_year = year + m / 12; + cur_month = month + m % 12; + if (cur_month > 11) { + cur_month -= 12; + cur_year += 1; + } + printgrid(cur_year, cur_month, fday, line); + printf(" "); + } + putchar('\n'); + } + } +} + +static void +usage(void) +{ + eprintf("usage: %s [-1 | -3 | -y | -n num] " + "[-s | -m | -f num] [-c num] [[month] year]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + time_t now; + size_t year, ncols, nmons; + int fday, month; + + now = time(NULL); + ltime = localtime(&now); + year = ltime->tm_year + 1900; + month = ltime->tm_mon + 1; + fday = 0; + + if (!isatty(STDOUT_FILENO)) + ltime = NULL; /* don't highlight today's date */ + + ncols = 3; + nmons = 0; + + ARGBEGIN { + case '1': + nmons = 1; + break; + case '3': + nmons = 3; + if (--month == 0) { + month = 12; + year--; + } + break; + case 'c': + ncols = estrtonum(EARGF(usage()), 0, MIN(SIZE_MAX, LLONG_MAX)); + break; + case 'f': + fday = estrtonum(EARGF(usage()), 0, 6); + break; + case 'm': /* Monday */ + fday = 1; + break; + case 'n': + nmons = estrtonum(EARGF(usage()), 1, MIN(SIZE_MAX, LLONG_MAX)); + break; + case 's': /* Sunday */ + fday = 0; + break; + case 'y': + month = 1; + nmons = 12; + break; + default: + usage(); + } ARGEND + + if (nmons == 0) { + if (argc == 1) { + month = 1; + nmons = 12; + } else { + nmons = 1; + } + } + + switch (argc) { + case 2: + month = estrtonum(argv[0], 1, 12); + argv++; + case 1: /* fallthrough */ + year = estrtonum(argv[0], 0, INT_MAX); + break; + case 0: + break; + default: + usage(); + } + + drawcal(year, month - 1, ncols, nmons, fday); + + return fshut(stdout, "<stdout>"); +} diff --git a/util/sbase/cat.1 b/util/sbase/cat.1 new file mode 100644 index 00000000..e6172298 --- /dev/null +++ b/util/sbase/cat.1 @@ -0,0 +1,27 @@ +.Dd October 8, 2015 +.Dt CAT 1 +.Os sbase +.Sh NAME +.Nm cat +.Nd concatenate files +.Sh SYNOPSIS +.Nm +.Op Fl u +.Op Ar file ... +.Sh DESCRIPTION +.Nm +reads each +.Ar file +in sequence and writes it to stdout. +If no +.Ar file +is given +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl u +Unbuffered output. +.El +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/cat.c b/util/sbase/cat.c new file mode 100644 index 00000000..211e8d11 --- /dev/null +++ b/util/sbase/cat.c @@ -0,0 +1,52 @@ +/* See LICENSE file for copyright and license details. */ +#include <fcntl.h> +#include <string.h> +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-u] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int fd, ret = 0; + + ARGBEGIN { + case 'u': + break; + default: + usage(); + } ARGEND + + if (!argc) { + if (concat(0, "<stdin>", 1, "<stdout>") < 0) + ret = 1; + } else { + for (; *argv; argc--, argv++) { + if (!strcmp(*argv, "-")) { + *argv = "<stdin>"; + fd = 0; + } else if ((fd = open(*argv, O_RDONLY)) < 0) { + weprintf("open %s:", *argv); + ret = 1; + continue; + } + switch (concat(fd, *argv, 1, "<stdout>")) { + case -1: + ret = 1; + break; + case -2: + return 1; /* exit on write error */ + } + if (fd != 0) + close(fd); + } + } + + return ret; +} diff --git a/util/sbase/chgrp.1 b/util/sbase/chgrp.1 new file mode 100644 index 00000000..ee44a54c --- /dev/null +++ b/util/sbase/chgrp.1 @@ -0,0 +1,47 @@ +.Dd October 8, 2015 +.Dt CHGRP 1 +.Os sbase +.Sh NAME +.Nm chgrp +.Nd change file group ownership +.Sh SYNOPSIS +.Nm +.Op Fl h +.Oo +.Fl R +.Op Fl H | L | P +.Oc +.Ar group +.Ar file ... +.Sh DESCRIPTION +.Nm +sets the group id of each +.Ar file +to the gid of +.Ar group . +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl h +Preserve +.Ar file +if it is a symbolic link. +.It Fl R +Change file group ownerships recursively. +.It Fl H +Dereference +.Ar file +if it is a symbolic link. +.It Fl L +Dereference all symbolic links. +.It Fl P +Preserve symbolic links. +This is the default. +.El +.Sh SEE ALSO +.Xr chmod 1 , +.Xr chown 1 , +.Xr chmod 2 , +.Xr chown 2 , +.Xr getgrnam 3 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/chgrp.c b/util/sbase/chgrp.c new file mode 100644 index 00000000..4042a0dd --- /dev/null +++ b/util/sbase/chgrp.c @@ -0,0 +1,75 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include <errno.h> +#include <fcntl.h> +#include <grp.h> +#include <unistd.h> + +#include "fs.h" +#include "util.h" + +static int hflag = 0; +static gid_t gid = -1; +static int ret = 0; + +static void +chgrp(int dirfd, const char *name, struct stat *st, void *data, struct recursor *r) +{ + int flags = 0; + + if ((r->maxdepth == 0 && r->follow == 'P') || (r->follow == 'H' && r->depth) || (hflag && !(r->depth))) + flags |= AT_SYMLINK_NOFOLLOW; + if (fchownat(dirfd, name, -1, gid, flags) < 0) { + weprintf("chown %s:", r->path); + ret = 1; + } else if (S_ISDIR(st->st_mode)) { + recurse(dirfd, name, NULL, r); + } +} + +static void +usage(void) +{ + eprintf("usage: %s [-h] [-R [-H | -L | -P]] group file ...\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + struct group *gr; + struct recursor r = { .fn = chgrp, .maxdepth = 1, .follow = 'P' }; + + ARGBEGIN { + case 'h': + hflag = 1; + break; + case 'R': + r.maxdepth = 0; + break; + case 'H': + case 'L': + case 'P': + r.follow = ARGC(); + break; + default: + usage(); + } ARGEND + + if (argc < 2) + usage(); + + errno = 0; + if ((gr = getgrnam(argv[0]))) { + gid = gr->gr_gid; + } else { + if (errno) + eprintf("getgrnam %s:", argv[0]); + gid = estrtonum(argv[0], 0, UINT_MAX); + } + + for (argc--, argv++; *argv; argc--, argv++) + recurse(AT_FDCWD, *argv, NULL, &r); + + return ret || recurse_status; +} diff --git a/util/sbase/chmod.1 b/util/sbase/chmod.1 new file mode 100644 index 00000000..f579b3fa --- /dev/null +++ b/util/sbase/chmod.1 @@ -0,0 +1,74 @@ +.Dd December 21, 2019 +.Dt CHMOD 1 +.Os sbase +.Sh NAME +.Nm chmod +.Nd change file modes +.Sh SYNOPSIS +.Nm +.Op Fl R +.Ar mode +.Ar file ... +.Sh DESCRIPTION +.Nm +changes the file mode of each +.Ar file +to +.Ar mode . +.Pp +If +.Ar mode +is +.Em octal +"[sog]e" +.Bl -tag -width Ds +.It s +.Xr sticky 1 => s += 1 +.Pp +.Xr setgid 2 => s += 2 +.Pp +.Xr setuid 4 => s += 4 +.It o|g|e +owner | group | everyone +.Pp +.Xr execute 1 => o|g|e += 1 +.Pp +.Xr write 2 => o|g|e += 2 +.Pp +.Xr read 4 => o|g|e += 4 +.El +.Pp +Leading zeroes may be omitted. +.Pp +If +.Ar mode +is +.Em symbolic +"[ugoa]*[+-=][rwxXst]*" +.Bl -tag -width Ds +.It u|g|o|a +owner | group | other (non-group) | everyone +.It +|-|= +add | remove | set +.It r|w|x|s|t +read | write | execute | setuid and setgid | sticky +.It X +execute, if directory or at least one execute bit is already set +.El +.Pp +Symbolic links are followed if they are passed as operands, and ignored +if they are encountered during directory traversal. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl R +Change modes recursively. +.El +.Sh SEE ALSO +.Xr chgrp 1 , +.Xr umask 1 +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Op Fl HLP +flags are an extension to that specification. diff --git a/util/sbase/chmod.c b/util/sbase/chmod.c new file mode 100644 index 00000000..c79488bb --- /dev/null +++ b/util/sbase/chmod.c @@ -0,0 +1,77 @@ +/* See LICENSE file for copyright and license details. */ +#include <fcntl.h> +#include <sys/stat.h> + +#include "fs.h" +#include "util.h" + +static char *modestr = ""; +static mode_t mask = 0; +static int ret = 0; + +static void +chmodr(int dirfd, const char *name, struct stat *st, void *data, struct recursor *r) +{ + mode_t m; + + m = parsemode(modestr, st->st_mode, mask); + if (!S_ISLNK(st->st_mode) && fchmodat(dirfd, name, m, 0) < 0) { + weprintf("chmod %s:", r->path); + ret = 1; + } else if (S_ISDIR(st->st_mode)) { + recurse(dirfd, name, NULL, r); + } +} + +static void +usage(void) +{ + eprintf("usage: %s [-R] mode file ...\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + struct recursor r = { .fn = chmodr, .maxdepth = 1, .follow = 'H', .flags = DIRFIRST }; + size_t i; + + argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0; + + for (; *argv && (*argv)[0] == '-'; argc--, argv++) { + if (!(*argv)[1]) + usage(); + for (i = 1; (*argv)[i]; i++) { + switch ((*argv)[i]) { + case 'R': + r.maxdepth = 0; + break; + case 'r': case 'w': case 'x': case 'X': case 's': case 't': + /* -[rwxXst] are valid modes, so we're done */ + if (i == 1) + goto done; + /* fallthrough */ + case '-': + /* -- terminator */ + if (i == 1 && !(*argv)[i + 1]) { + argv++; + argc--; + goto done; + } + /* fallthrough */ + default: + usage(); + } + } + } +done: + mask = getumask(); + modestr = *argv; + + if (argc < 2) + usage(); + + for (--argc, ++argv; *argv; argc--, argv++) + recurse(AT_FDCWD, *argv, NULL, &r); + + return ret || recurse_status; +} diff --git a/util/sbase/chown.1 b/util/sbase/chown.1 new file mode 100644 index 00000000..8afdfcab --- /dev/null +++ b/util/sbase/chown.1 @@ -0,0 +1,57 @@ +.Dd October 8, 2015 +.Dt CHOWN 1 +.Os sbase +.Sh NAME +.Nm chown +.Nd change file ownership +.Sh SYNOPSIS +.Nm +.Op Fl h +.Oo +.Fl R +.Op Fl H | L | P +.Oc +.Ar owner Ns Op Pf : Op Ar group +.Op Ar file ... +.Nm +.Op Fl h +.Oo +.Fl R +.Op Fl H | L | P +.Oc +.Pf : Ar group +.Op Ar file ... +.Sh DESCRIPTION +.Nm +sets the user and/or group id of each +.Ar file +to the uid of +.Ar owner +and/or the gid of +.Ar group +respectively. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl h +Preserve +.Ar file +if it is a symbolic link. +.It Fl R +Change file ownerships recursively. +.It Fl H +Dereference +.Ar file +if it is a symbolic link. +.It Fl L +Dereference all symbolic links. +.It Fl P +Preserve symbolic links. +This is the default. +.El +.Sh SEE ALSO +.Xr chmod 1 , +.Xr chown 2 , +.Xr getgrnam 3 , +.Xr getpwnam 3 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/chown.c b/util/sbase/chown.c new file mode 100644 index 00000000..71628eb6 --- /dev/null +++ b/util/sbase/chown.c @@ -0,0 +1,104 @@ +/* See LICENSE file for copyright and license details. */ +#include <errno.h> +#include <fcntl.h> +#include <grp.h> +#include <limits.h> +#include <pwd.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "fs.h" +#include "util.h" + +static int hflag = 0; +static uid_t uid = -1; +static gid_t gid = -1; +static int ret = 0; + +static void +chownpwgr(int dirfd, const char *name, struct stat *st, void *data, struct recursor *r) +{ + int flags = 0; + + if ((r->maxdepth == 0 && r->follow == 'P') || (r->follow == 'H' && r->depth) || (hflag && !(r->depth))) + flags |= AT_SYMLINK_NOFOLLOW; + + if (fchownat(dirfd, name, uid, gid, flags) < 0) { + weprintf("chown %s:", r->path); + ret = 1; + } else if (S_ISDIR(st->st_mode)) { + recurse(dirfd, name, NULL, r); + } +} + +static void +usage(void) +{ + eprintf("usage: %s [-h] [-R [-H | -L | -P]] owner[:[group]] file ...\n" + " %s [-h] [-R [-H | -L | -P]] :group file ...\n", + argv0, argv0); +} + +int +main(int argc, char *argv[]) +{ + struct group *gr; + struct passwd *pw; + struct recursor r = { .fn = chownpwgr, .maxdepth = 1, .follow = 'P' }; + char *owner, *group; + + ARGBEGIN { + case 'h': + hflag = 1; + break; + case 'r': + case 'R': + r.maxdepth = 0; + break; + case 'H': + case 'L': + case 'P': + r.follow = ARGC(); + break; + default: + usage(); + } ARGEND + + if (argc < 2) + usage(); + + owner = argv[0]; + if ((group = strchr(owner, ':'))) + *group++ = '\0'; + + if (owner && *owner) { + errno = 0; + pw = getpwnam(owner); + if (pw) { + uid = pw->pw_uid; + } else { + if (errno) + eprintf("getpwnam %s:", owner); + uid = estrtonum(owner, 0, UINT_MAX); + } + } + if (group && *group) { + errno = 0; + gr = getgrnam(group); + if (gr) { + gid = gr->gr_gid; + } else { + if (errno) + eprintf("getgrnam %s:", group); + gid = estrtonum(group, 0, UINT_MAX); + } + } + if (uid == (uid_t)-1 && gid == (gid_t)-1) + usage(); + + for (argc--, argv++; *argv; argc--, argv++) + recurse(AT_FDCWD, *argv, NULL, &r); + + return ret || recurse_status; +} diff --git a/util/sbase/chroot.1 b/util/sbase/chroot.1 new file mode 100644 index 00000000..ff49fe91 --- /dev/null +++ b/util/sbase/chroot.1 @@ -0,0 +1,25 @@ +.Dd October 8, 2015 +.Dt CHROOT 1 +.Os sbase +.Sh NAME +.Nm chroot +.Nd run a command or shell with a different root directory +.Sh SYNOPSIS +.Nm +.Ar dir +.Op Ar cmd Op Ar arg ... +.Sh DESCRIPTION +.Nm +runs +.Ar cmd +after changing the root directory to +.Ar dir +with the +.Xr chroot 2 +system call and after changing the working directory to the new root. +If +.Ar cmd +is not specified, an interactive shell is started in the new root. +.Sh SEE ALSO +.Xr chdir 2 , +.Xr chroot 2 diff --git a/util/sbase/chroot.c b/util/sbase/chroot.c new file mode 100644 index 00000000..45f2dc7a --- /dev/null +++ b/util/sbase/chroot.c @@ -0,0 +1,49 @@ +/* See LICENSE file for copyright and license details. */ +#include <errno.h> +#include <stdlib.h> +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s dir [cmd [arg ...]]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + char *shell[] = { "/bin/sh", "-i", NULL }, *aux, *cmd; + int savederrno; + + ARGBEGIN { + default: + usage(); + } ARGEND + + if (!argc) + usage(); + + if ((aux = getenv("SHELL"))) + shell[0] = aux; + + if (chroot(argv[0]) < 0) + eprintf("chroot %s:", argv[0]); + + if (chdir("/") < 0) + eprintf("chdir:"); + + if (argc == 1) { + cmd = *shell; + execvp(cmd, shell); + } else { + cmd = argv[1]; + execvp(cmd, argv + 1); + } + + savederrno = errno; + weprintf("execvp %s:", cmd); + + _exit(126 + (savederrno == ENOENT)); +} diff --git a/util/sbase/cksum.1 b/util/sbase/cksum.1 new file mode 100644 index 00000000..6e2657a4 --- /dev/null +++ b/util/sbase/cksum.1 @@ -0,0 +1,24 @@ +.Dd October 8, 2015 +.Dt CKSUM 1 +.Os sbase +.Sh NAME +.Nm cksum +.Nd compute file checksum +.Sh SYNOPSIS +.Nm +.Op Ar file ... +.Sh DESCRIPTION +.Nm +calculates a cyclic redundancy check (CRC) of +.Ar file +according to +.St -iso8802-3 +and writes it, the file size in bytes and path to stdout. +.Pp +If no +.Ar file +is given, +.Nm +reads from stdin. +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/cksum.c b/util/sbase/cksum.c new file mode 100644 index 00000000..50107b2b --- /dev/null +++ b/util/sbase/cksum.c @@ -0,0 +1,132 @@ +/* See LICENSE file for copyright and license details. */ +#include <fcntl.h> +#include <inttypes.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> + +#include "util.h" + +static int ret = 0; +static const unsigned long crctab[] = { 0x00000000, +0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, +0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, +0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, +0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac, +0x5bd4b01b, 0x569796c2, 0x52568b75, 0x6a1936c8, 0x6ed82b7f, +0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a, +0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, +0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, +0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, +0xa4ad16ea, 0xa06c0b5d, 0xd4326d90, 0xd0f37027, 0xddb056fe, +0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95, +0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4, +0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0, +0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, +0x2ac12072, 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, +0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, 0x7897ab07, +0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c, +0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, +0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, +0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, +0xbb60adfc, 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, +0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d, +0x94ea7b2a, 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e, +0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, 0xc6bcf05f, +0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34, +0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, +0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, +0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, 0x5c007b8a, +0x58c1663d, 0x558240e4, 0x51435d53, 0x251d3b9e, 0x21dc2629, +0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c, +0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, +0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, +0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, +0xeba91bbc, 0xef68060b, 0xd727bbb6, 0xd3e6a601, 0xdea580d8, +0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3, +0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2, +0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71, +0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, +0x857130c3, 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, +0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, 0x7b827d21, +0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a, +0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, 0x18197087, +0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, +0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, +0x2056cd3a, 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, +0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, +0xdbee767c, 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18, +0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, 0x89b8fd09, +0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662, +0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, +0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4 +}; + +static void +cksum(int fd, const char *s) +{ + ssize_t n; + size_t len = 0, i; + uint32_t ck = 0; + unsigned char buf[BUFSIZ]; + + while ((n = read(fd, buf, sizeof(buf))) > 0) { + for (i = 0; i < n; i++) + ck = (ck << 8) ^ crctab[(ck >> 24) ^ buf[i]]; + len += n; + } + if (n < 0) { + weprintf("read %s:", s ? s : "<stdin>"); + ret = 1; + return; + } + + for (i = len; i; i >>= 8) + ck = (ck << 8) ^ crctab[(ck >> 24) ^ (i & 0xFF)]; + + printf("%"PRIu32" %zu", ~ck, len); + if (s) { + putchar(' '); + fputs(s, stdout); + } + putchar('\n'); +} + +static void +usage(void) +{ + eprintf("usage: %s [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int fd; + + ARGBEGIN { + default: + usage(); + } ARGEND + + if (!argc) { + cksum(0, NULL); + } else { + for (; *argv; argc--, argv++) { + if (!strcmp(*argv, "-")) { + *argv = "<stdin>"; + fd = 0; + } else if ((fd = open(*argv, O_RDONLY)) < 0) { + weprintf("open %s:", *argv); + ret = 1; + continue; + } + cksum(fd, *argv); + if (fd != 0) + close(fd); + } + } + + ret |= fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/cmp.1 b/util/sbase/cmp.1 new file mode 100644 index 00000000..750d11a8 --- /dev/null +++ b/util/sbase/cmp.1 @@ -0,0 +1,49 @@ +.Dd October 8, 2015 +.Dt CMP 1 +.Os sbase +.Sh NAME +.Nm cmp +.Nd compare two files +.Sh SYNOPSIS +.Nm +.Op Fl l | Fl s +.Ar file1 file2 +.Sh DESCRIPTION +.Nm +compares +.Ar file1 +and +.Ar file2 +byte by byte. +If they differ, +.Nm +writes the first differing byte- and line-number to stdout. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl l +Print byte-number and bytes (in octal) for each difference. +.It Fl s +Print nothing and only return status. +.El +.Sh EXIT STATUS +.Bl -tag -width Ds +.It 0 +.Ar file1 +and +.Ar file2 +are identical. +.It 1 +.Ar file1 +and +.Ar file2 +are different. +.It > 1 +An error occurred. +.El +.Sh SEE ALSO +.Xr comm 1 , +.Xr diff 1 +.Sh STANDARDS +POSIX.1-2013. +.Pp +The "char" in the default result format has been replaced with "byte". diff --git a/util/sbase/cmp.c b/util/sbase/cmp.c new file mode 100644 index 00000000..83ab149e --- /dev/null +++ b/util/sbase/cmp.c @@ -0,0 +1,82 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "util.h" + +static void +usage(void) +{ + enprintf(2, "usage: %s [-l | -s] file1 file2\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + FILE *fp[2]; + size_t line = 1, n; + int ret = 0, lflag = 0, sflag = 0, same = 1, b[2]; + + ARGBEGIN { + case 'l': + lflag = 1; + break; + case 's': + sflag = 1; + break; + default: + usage(); + } ARGEND + + if (argc != 2 || (lflag && sflag)) + usage(); + + for (n = 0; n < 2; n++) { + if (!strcmp(argv[n], "-")) { + argv[n] = "<stdin>"; + fp[n] = stdin; + } else { + if (!(fp[n] = fopen(argv[n], "r"))) { + if (!sflag) + weprintf("fopen %s:", argv[n]); + return 2; + } + } + } + + for (n = 1; ; n++) { + b[0] = getc(fp[0]); + b[1] = getc(fp[1]); + + if (b[0] == b[1]) { + if (b[0] == EOF) + break; + else if (b[0] == '\n') + line++; + continue; + } else if (b[0] == EOF || b[1] == EOF) { + if (!sflag) + weprintf("EOF on %s\n", argv[(b[0] != EOF)]); + same = 0; + break; + } else if (!lflag) { + if (!sflag) + printf("%s %s differ: byte %zu, line %zu\n", + argv[0], argv[1], n, line); + same = 0; + break; + } else { + printf("%zu %o %o\n", n, b[0], b[1]); + same = 0; + } + } + + if (!ret) + ret = !same; + if (fshut(fp[0], argv[0]) | (fp[0] != fp[1] && fshut(fp[1], argv[1])) | + fshut(stdout, "<stdout>")) + ret = 2; + + return ret; +} diff --git a/util/sbase/cols.1 b/util/sbase/cols.1 new file mode 100644 index 00000000..67c2e8ea --- /dev/null +++ b/util/sbase/cols.1 @@ -0,0 +1,56 @@ +.Dd October 8, 2015 +.Dt COLS 1 +.Os sbase +.Sh NAME +.Nm cols +.Nd columnize output +.Sh SYNOPSIS +.Nm +.Op Fl c Ar num +.Op Ar file ... +.Sh DESCRIPTION +.Nm +reads each +.Ar file +in sequence and writes them to stdout, in as many vertical +columns as will fit in +.Ar num +character columns. +If no +.Ar file +is given, +.Nm +reads from stdin. +.Pp +By default +.Nm cols +tries to figure out the width of the output device. +If that fails, it defaults to 65 chars. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl c Ar num +Set maximum number of character columns to +.Ar num , +unless input lines exceed this limit. +.El +.Sh ENVIRONMENT +.Bl -tag -width Ds +.It COLUMNS +The width of the output device. +.El +.Sh HISTORY +.Nm +is similar to +.Xr mc 1 +in Plan 9. It was renamed to +.Nm +to avoid the name collision with the popular file manager +Midnight Commander. +.Sh CAVEATS +This implementation of +.Nm +assumes that each UTF-8 code point occupies one character cell, +and thus mishandles TAB characters (among others). +.Pp +.Nm +currently mangles files which contain embedded NULs. diff --git a/util/sbase/cols.c b/util/sbase/cols.c new file mode 100644 index 00000000..428cd79d --- /dev/null +++ b/util/sbase/cols.c @@ -0,0 +1,98 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/ioctl.h> + +#include <limits.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "text.h" +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-c num] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + FILE *fp; + struct winsize w; + struct linebuf b = EMPTY_LINEBUF; + size_t chars = 65, maxlen = 0, i, j, k, len, cols, rows; + int cflag = 0, ret = 0; + char *p; + + ARGBEGIN { + case 'c': + cflag = 1; + chars = estrtonum(EARGF(usage()), 1, MIN(LLONG_MAX, SIZE_MAX)); + break; + default: + usage(); + } ARGEND + + if (!cflag) { + if ((p = getenv("COLUMNS"))) + chars = estrtonum(p, 1, MIN(LLONG_MAX, SIZE_MAX)); + else if (!ioctl(STDOUT_FILENO, TIOCGWINSZ, &w) && w.ws_col > 0) + chars = w.ws_col; + } + + if (!argc) { + getlines(stdin, &b); + } else { + for (; *argv; argc--, argv++) { + if (!strcmp(*argv, "-")) { + *argv = "<stdin>"; + fp = stdin; + } else if (!(fp = fopen(*argv, "r"))) { + weprintf("fopen %s:", *argv); + ret = 1; + continue; + } + getlines(fp, &b); + if (fp != stdin && fshut(fp, *argv)) + ret = 1; + } + } + + for (i = 0; i < b.nlines; i++) { + for (j = 0, len = 0; j < b.lines[i].len; j++) { + if (UTF8_POINT(b.lines[i].data[j])) + len++; + } + if (len && b.lines[i].data[b.lines[i].len - 1] == '\n') { + b.lines[i].data[--(b.lines[i].len)] = '\0'; + len--; + } + if (len > maxlen) + maxlen = len; + } + + for (cols = 1; (cols + 1) * maxlen + cols <= chars; cols++); + rows = b.nlines / cols + (b.nlines % cols > 0); + + for (i = 0; i < rows; i++) { + for (j = 0; j < cols && i + j * rows < b.nlines; j++) { + for (k = 0, len = 0; k < b.lines[i + j * rows].len; k++) { + if (UTF8_POINT(b.lines[i + j * rows].data[k])) + len++; + } + fwrite(b.lines[i + j * rows].data, 1, + b.lines[i + j * rows].len, stdout); + if (j < cols - 1) + for (k = len; k < maxlen + 1; k++) + putchar(' '); + } + putchar('\n'); + } + + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/comm.1 b/util/sbase/comm.1 new file mode 100644 index 00000000..5df70c2c --- /dev/null +++ b/util/sbase/comm.1 @@ -0,0 +1,40 @@ +.Dd October 8, 2015 +.Dt COMM 1 +.Os sbase +.Sh NAME +.Nm comm +.Nd select or reject lines common to two files +.Sh SYNOPSIS +.Nm +.Op Fl 123 +.Ar file1 +.Ar file2 +.Sh DESCRIPTION +.Nm +reads +.Ar file1 +and +.Ar file2 , +which should both be sorted lexically, and writes three text columns +to stdout: +.Bl -tag -width Ds +.It 1 +Lines only in +.Ar file1 . +.It 2 +Lines only in +.Ar file2 . +.It 3 +Common lines. +.El +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl 1 | Fl 2 | Fl 3 +Suppress column 1 | 2 | 3 +.El +.Sh SEE ALSO +.Xr cmp 1 , +.Xr sort 1 , +.Xr uniq 1 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/comm.c b/util/sbase/comm.c new file mode 100644 index 00000000..fbd50d9b --- /dev/null +++ b/util/sbase/comm.c @@ -0,0 +1,97 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "text.h" +#include "util.h" + +static int show = 0x07; + +static void +printline(int pos, struct line *line) +{ + int i; + + if (!(show & (0x1 << pos))) + return; + + for (i = 0; i < pos; i++) { + if (show & (0x1 << i)) + putchar('\t'); + } + fwrite(line->data, 1, line->len, stdout); +} + +static void +usage(void) +{ + eprintf("usage: %s [-123] file1 file2\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + FILE *fp[2]; + static struct line line[2]; + size_t linecap[2] = { 0, 0 }; + ssize_t len; + int ret = 0, i, diff = 0, seenline = 0; + + ARGBEGIN { + case '1': + case '2': + case '3': + show &= 0x07 ^ (1 << (ARGC() - '1')); + break; + default: + usage(); + } ARGEND + + if (argc != 2) + usage(); + + for (i = 0; i < 2; i++) { + if (!strcmp(argv[i], "-")) { + argv[i] = "<stdin>"; + fp[i] = stdin; + } else if (!(fp[i] = fopen(argv[i], "r"))) { + eprintf("fopen %s:", argv[i]); + } + } + + for (;;) { + for (i = 0; i < 2; i++) { + if (diff && i == (diff < 0)) + continue; + if ((len = getline(&(line[i].data), &linecap[i], + fp[i])) > 0) { + line[i].len = len; + seenline = 1; + continue; + } + if (ferror(fp[i])) + eprintf("getline %s:", argv[i]); + if ((diff || seenline) && line[!i].data[0]) + printline(!i, &line[!i]); + while ((len = getline(&(line[!i].data), &linecap[!i], + fp[!i])) > 0) { + line[!i].len = len; + printline(!i, &line[!i]); + } + if (ferror(fp[!i])) + eprintf("getline %s:", argv[!i]); + goto end; + } + diff = linecmp(&line[0], &line[1]); + LIMIT(diff, -1, 1); + seenline = 0; + printline((2 - diff) % 3, &line[MAX(0, diff)]); + } +end: + ret |= fshut(fp[0], argv[0]); + ret |= (fp[0] != fp[1]) && fshut(fp[1], argv[1]); + ret |= fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/compat.h b/util/sbase/compat.h new file mode 100644 index 00000000..e2154a62 --- /dev/null +++ b/util/sbase/compat.h @@ -0,0 +1,6 @@ +/* See LICENSE file for copyright and license details. */ +#include <limits.h> + +#ifndef HOST_NAME_MAX +#define HOST_NAME_MAX _POSIX_HOST_NAME_MAX +#endif diff --git a/util/sbase/config.mk b/util/sbase/config.mk new file mode 100644 index 00000000..69dda343 --- /dev/null +++ b/util/sbase/config.mk @@ -0,0 +1,15 @@ +# sbase version +VERSION = 0.1 + +# paths +PREFIX = /usr/local +MANPREFIX = $(PREFIX)/share/man + +# tools +#CC = +#AR = +RANLIB = ranlib + +# -lrt might be needed on some systems +# CFLAGS = +# LDFLAGS = diff --git a/util/sbase/cp.1 b/util/sbase/cp.1 new file mode 100644 index 00000000..74027eaa --- /dev/null +++ b/util/sbase/cp.1 @@ -0,0 +1,71 @@ +.Dd April 22, 2025 +.Dt CP 1 +.Os sbase +.Sh NAME +.Nm cp +.Nd copy files and directories +.Sh SYNOPSIS +.Nm +.Op Fl afipv +.Oo +.Fl R +.Op Fl H | L | P +.Oc +.Ar source ... +.Ar dest +.Sh DESCRIPTION +.Nm +copies +.Ar source +to +.Ar dest . +If more than one +.Ar source +is given +.Ar dest +has to be a directory. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl a +Preserve block devices, character devices, sockets and FIFOs. +Implies +.Fl p , +.Fl P +and +.Fl R . +.It Fl f +If an existing +.Ar dest +cannot be opened, remove it and try again. +.It Fl i +Interactive prompt before overwrite. +.It Fl p +Preserve mode, timestamp and permissions. +.It Fl v +Write "'source' -> 'dest'" for each +.Ar source +to stdout. +.It Fl H +Dereference +.Ar source +if it is a symbolic link. +.It Fl L +Dereference all symbolic links. +This is the default without +.Fl R . +.It Fl P +Preserve symbolic links. +This is the default with +.Fl R . +.It Fl R +Traverse directories recursively. +If this flag is not specified, directories are not copied. +.El +.Sh SEE ALSO +.Xr mv 1 +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Op Fl av +flags are an extension to that specification. diff --git a/util/sbase/cp.c b/util/sbase/cp.c new file mode 100644 index 00000000..af0fa610 --- /dev/null +++ b/util/sbase/cp.c @@ -0,0 +1,63 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include "fs.h" +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-afipv] [-R [-H | -L | -P]] source ... dest\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + struct stat st; + + ARGBEGIN { + case 'i': + cp_iflag = 1; + break; + case 'a': + cp_follow = 'P'; + cp_aflag = cp_pflag = cp_rflag = 1; + break; + case 'f': + cp_fflag = 1; + break; + case 'p': + cp_pflag = 1; + break; + case 'r': + case 'R': + cp_rflag = 1; + break; + case 'v': + cp_vflag = 1; + break; + case 'H': + case 'L': + case 'P': + cp_follow = ARGC(); + break; + default: + usage(); + } ARGEND + + if (argc < 2) + usage(); + + if (!cp_follow) + cp_follow = cp_rflag ? 'P' : 'L'; + + if (argc > 2) { + if (stat(argv[argc - 1], &st) < 0) + eprintf("stat %s:", argv[argc - 1]); + if (!S_ISDIR(st.st_mode)) + eprintf("%s: not a directory\n", argv[argc - 1]); + } + enmasse(argc, argv, cp); + + return fshut(stdout, "<stdout>") || cp_status; +} diff --git a/util/sbase/cron.1 b/util/sbase/cron.1 new file mode 100644 index 00000000..1cb90a44 --- /dev/null +++ b/util/sbase/cron.1 @@ -0,0 +1,23 @@ +.Dd October 8, 2015 +.Dt CRON 1 +.Os sbase +.Sh NAME +.Nm cron +.Nd clock daemon +.Sh SYNOPSIS +.Nm +.Op Fl f Ar file +.Op Fl n +.Sh DESCRIPTION +.Nm +schedules commands to be run at specified dates and times. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl f Ar file +Use the specified +.Ar file +instead of the default +.Pa /etc/crontab . +.It Fl n +Do not daemonize. +.El diff --git a/util/sbase/cron.c b/util/sbase/cron.c new file mode 100644 index 00000000..77304ccf --- /dev/null +++ b/util/sbase/cron.c @@ -0,0 +1,566 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/types.h> +#include <sys/wait.h> + +#include <errno.h> +#include <limits.h> +#include <signal.h> +#include <stdarg.h> +#include <stdlib.h> +#include <stdio.h> +#include <ctype.h> +#include <string.h> +#include <syslog.h> +#include <time.h> +#include <unistd.h> + +#include "queue.h" +#include "util.h" + +struct field { + enum { + ERROR, + WILDCARD, + NUMBER, + RANGE, + REPEAT, + LIST + } type; + long *val; + int len; +}; + +struct ctabentry { + struct field min; + struct field hour; + struct field mday; + struct field mon; + struct field wday; + char *cmd; + TAILQ_ENTRY(ctabentry) entry; +}; + +struct jobentry { + char *cmd; + pid_t pid; + TAILQ_ENTRY(jobentry) entry; +}; + +static sig_atomic_t chldreap; +static sig_atomic_t reload; +static sig_atomic_t quit; +static TAILQ_HEAD(, ctabentry) ctabhead = TAILQ_HEAD_INITIALIZER(ctabhead); +static TAILQ_HEAD(, jobentry) jobhead = TAILQ_HEAD_INITIALIZER(jobhead); +static char *config = "/etc/crontab"; +static char *pidfile = "/var/run/crond.pid"; +static int nflag; + +static void +loginfo(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + if (nflag == 0) + vsyslog(LOG_INFO, fmt, ap); + else + vfprintf(stdout, fmt, ap); + fflush(stdout); + va_end(ap); +} + +static void +logwarn(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + if (nflag == 0) + vsyslog(LOG_WARNING, fmt, ap); + else + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +static void +logerr(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + if (nflag == 0) + vsyslog(LOG_ERR, fmt, ap); + else + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +static void +runjob(char *cmd) +{ + struct jobentry *je; + time_t t; + pid_t pid; + + t = time(NULL); + + /* If command is already running, skip it */ + TAILQ_FOREACH(je, &jobhead, entry) { + if (strcmp(je->cmd, cmd) == 0) { + loginfo("already running %s pid: %d at %s", + je->cmd, je->pid, ctime(&t)); + return; + } + } + + switch ((pid = fork())) { + case -1: + logerr("error: failed to fork job: %s time: %s", + cmd, ctime(&t)); + return; + case 0: + setsid(); + loginfo("run: %s pid: %d at %s", + cmd, getpid(), ctime(&t)); + execl("/bin/sh", "/bin/sh", "-c", cmd, (char *)NULL); + logerr("error: failed to execute job: %s time: %s", + cmd, ctime(&t)); + _exit(1); + default: + je = emalloc(sizeof(*je)); + je->cmd = estrdup(cmd); + je->pid = pid; + TAILQ_INSERT_TAIL(&jobhead, je, entry); + } +} + +static void +waitjob(void) +{ + struct jobentry *je, *tmp; + int status; + time_t t; + pid_t pid; + + t = time(NULL); + + while ((pid = waitpid(-1, &status, WNOHANG | WUNTRACED)) > 0) { + je = NULL; + TAILQ_FOREACH(tmp, &jobhead, entry) { + if (tmp->pid == pid) { + je = tmp; + break; + } + } + if (je) { + TAILQ_REMOVE(&jobhead, je, entry); + free(je->cmd); + free(je); + } + if (WIFEXITED(status) == 1) + loginfo("complete: pid: %d returned: %d time: %s", + pid, WEXITSTATUS(status), ctime(&t)); + else if (WIFSIGNALED(status) == 1) + loginfo("complete: pid: %d terminated by signal: %s time: %s", + pid, strsignal(WTERMSIG(status)), ctime(&t)); + else if (WIFSTOPPED(status) == 1) + loginfo("complete: pid: %d stopped by signal: %s time: %s", + pid, strsignal(WSTOPSIG(status)), ctime(&t)); + } +} + +static int +isleap(int year) +{ + if (year % 400 == 0) + return 1; + if (year % 100 == 0) + return 0; + return (year % 4 == 0); +} + +static int +daysinmon(int mon, int year) +{ + int days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + if (year < 1900) + year += 1900; + if (isleap(year)) + days[1] = 29; + return days[mon]; +} + +static int +matchentry(struct ctabentry *cte, struct tm *tm) +{ + struct { + struct field *f; + int tm; + int len; + } matchtbl[] = { + { .f = &cte->min, .tm = tm->tm_min, .len = 60 }, + { .f = &cte->hour, .tm = tm->tm_hour, .len = 24 }, + { .f = &cte->mday, .tm = tm->tm_mday, .len = daysinmon(tm->tm_mon, tm->tm_year) }, + { .f = &cte->mon, .tm = tm->tm_mon, .len = 12 }, + { .f = &cte->wday, .tm = tm->tm_wday, .len = 7 }, + }; + size_t i; + int j; + + for (i = 0; i < LEN(matchtbl); i++) { + switch (matchtbl[i].f->type) { + case WILDCARD: + continue; + case NUMBER: + if (matchtbl[i].f->val[0] == matchtbl[i].tm) + continue; + break; + case RANGE: + if (matchtbl[i].f->val[0] <= matchtbl[i].tm) + if (matchtbl[i].f->val[1] >= matchtbl[i].tm) + continue; + break; + case REPEAT: + if (matchtbl[i].tm > 0) { + if (matchtbl[i].tm % matchtbl[i].f->val[0] == 0) + continue; + } else { + if (matchtbl[i].len % matchtbl[i].f->val[0] == 0) + continue; + } + break; + case LIST: + for (j = 0; j < matchtbl[i].f->len; j++) + if (matchtbl[i].f->val[j] == matchtbl[i].tm) + break; + if (j < matchtbl[i].f->len) + continue; + break; + default: + break; + } + break; + } + if (i != LEN(matchtbl)) + return 0; + return 1; +} + +static int +parsefield(const char *field, long low, long high, struct field *f) +{ + int i; + char *e1, *e2; + const char *p; + + p = field; + while (isdigit(*p)) + p++; + + f->type = ERROR; + + switch (*p) { + case '*': + if (strcmp(field, "*") == 0) { + f->val = NULL; + f->len = 0; + f->type = WILDCARD; + } else if (strncmp(field, "*/", 2) == 0) { + f->val = emalloc(sizeof(*f->val)); + f->len = 1; + + errno = 0; + f->val[0] = strtol(field + 2, &e1, 10); + if (e1[0] != '\0' || errno != 0 || f->val[0] == 0) + break; + + f->type = REPEAT; + } + break; + case '\0': + f->val = emalloc(sizeof(*f->val)); + f->len = 1; + + errno = 0; + f->val[0] = strtol(field, &e1, 10); + if (e1[0] != '\0' || errno != 0) + break; + + f->type = NUMBER; + break; + case '-': + f->val = emalloc(2 * sizeof(*f->val)); + f->len = 2; + + errno = 0; + f->val[0] = strtol(field, &e1, 10); + if (e1[0] != '-' || errno != 0) + break; + + errno = 0; + f->val[1] = strtol(e1 + 1, &e2, 10); + if (e2[0] != '\0' || errno != 0) + break; + + f->type = RANGE; + break; + case ',': + for (i = 1; isdigit(*p) || *p == ','; p++) + if (*p == ',') + i++; + f->val = emalloc(i * sizeof(*f->val)); + f->len = i; + + errno = 0; + f->val[0] = strtol(field, &e1, 10); + if (f->val[0] < low || f->val[0] > high) + break; + + for (i = 1; *e1 == ',' && errno == 0; i++) { + errno = 0; + f->val[i] = strtol(e1 + 1, &e2, 10); + e1 = e2; + } + if (e1[0] != '\0' || errno != 0) + break; + + f->type = LIST; + break; + default: + return -1; + } + + for (i = 0; i < f->len; i++) + if (f->val[i] < low || f->val[i] > high) + f->type = ERROR; + + if (f->type == ERROR) { + free(f->val); + return -1; + } + + return 0; +} + +static void +freecte(struct ctabentry *cte, int nfields) +{ + switch (nfields) { + case 6: + free(cte->cmd); + case 5: + free(cte->wday.val); + case 4: + free(cte->mon.val); + case 3: + free(cte->mday.val); + case 2: + free(cte->hour.val); + case 1: + free(cte->min.val); + } + free(cte); +} + +static void +unloadentries(void) +{ + struct ctabentry *cte, *tmp; + + for (cte = TAILQ_FIRST(&ctabhead); cte; cte = tmp) { + tmp = TAILQ_NEXT(cte, entry); + TAILQ_REMOVE(&ctabhead, cte, entry); + freecte(cte, 6); + } +} + +static int +loadentries(void) +{ + struct ctabentry *cte; + FILE *fp; + char *line = NULL, *p, *col; + int r = 0, y; + size_t size = 0; + ssize_t len; + struct fieldlimits { + char *name; + long min; + long max; + struct field *f; + } flim[] = { + { "min", 0, 59, NULL }, + { "hour", 0, 23, NULL }, + { "mday", 1, 31, NULL }, + { "mon", 1, 12, NULL }, + { "wday", 0, 6, NULL } + }; + size_t x; + + if ((fp = fopen(config, "r")) == NULL) { + logerr("error: can't open %s: %s\n", config, strerror(errno)); + return -1; + } + + for (y = 0; (len = getline(&line, &size, fp)) != -1; y++) { + p = line; + if (line[0] == '#' || line[0] == '\n' || line[0] == '\0') + continue; + + cte = emalloc(sizeof(*cte)); + flim[0].f = &cte->min; + flim[1].f = &cte->hour; + flim[2].f = &cte->mday; + flim[3].f = &cte->mon; + flim[4].f = &cte->wday; + + for (x = 0; x < LEN(flim); x++) { + do + col = strsep(&p, "\t\n "); + while (col && col[0] == '\0'); + + if (!col || parsefield(col, flim[x].min, flim[x].max, flim[x].f) < 0) { + logerr("error: failed to parse `%s' field on line %d\n", + flim[x].name, y + 1); + freecte(cte, x); + r = -1; + break; + } + } + + if (r == -1) + break; + + col = strsep(&p, "\n"); + if (col) + while (col[0] == '\t' || col[0] == ' ') + col++; + if (!col || col[0] == '\0') { + logerr("error: missing `cmd' field on line %d\n", + y + 1); + freecte(cte, 5); + r = -1; + break; + } + cte->cmd = estrdup(col); + + TAILQ_INSERT_TAIL(&ctabhead, cte, entry); + } + + if (r < 0) + unloadentries(); + + free(line); + fclose(fp); + + return r; +} + +static void +reloadentries(void) +{ + unloadentries(); + if (loadentries() < 0) + logwarn("warning: discarding old crontab entries\n"); +} + +static void +sighandler(int sig) +{ + switch (sig) { + case SIGCHLD: + chldreap = 1; + break; + case SIGHUP: + reload = 1; + break; + case SIGTERM: + quit = 1; + break; + } +} + +static void +usage(void) +{ + eprintf("usage: %s [-f file] [-n]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + FILE *fp; + struct ctabentry *cte; + time_t t; + struct tm *tm; + struct sigaction sa; + + ARGBEGIN { + case 'n': + nflag = 1; + break; + case 'f': + config = EARGF(usage()); + break; + default: + usage(); + } ARGEND + + if (argc > 0) + usage(); + + if (nflag == 0) { + openlog(argv[0], LOG_CONS | LOG_PID, LOG_CRON); + if (daemon(1, 0) < 0) { + logerr("error: failed to daemonize %s\n", strerror(errno)); + return 1; + } + if ((fp = fopen(pidfile, "w"))) { + fprintf(fp, "%d\n", getpid()); + fclose(fp); + } + } + + sa.sa_handler = sighandler; + sigfillset(&sa.sa_mask); + sa.sa_flags = SA_RESTART; + sigaction(SIGCHLD, &sa, NULL); + sigaction(SIGHUP, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); + + loadentries(); + + while (1) { + t = time(NULL); + sleep(60 - t % 60); + + if (quit == 1) { + if (nflag == 0) + unlink(pidfile); + unloadentries(); + /* Don't wait or kill forked processes, just exit */ + break; + } + + if (reload == 1 || chldreap == 1) { + if (reload == 1) { + reloadentries(); + reload = 0; + } + if (chldreap == 1) { + waitjob(); + chldreap = 0; + } + continue; + } + + TAILQ_FOREACH(cte, &ctabhead, entry) { + t = time(NULL); + tm = localtime(&t); + if (matchentry(cte, tm) == 1) + runjob(cte->cmd); + } + } + + if (nflag == 0) + closelog(); + + return 0; +} diff --git a/util/sbase/crypt.h b/util/sbase/crypt.h new file mode 100644 index 00000000..2fd2932e --- /dev/null +++ b/util/sbase/crypt.h @@ -0,0 +1,12 @@ +/* See LICENSE file for copyright and license details. */ +struct crypt_ops { + void (*init)(void *); + void (*update)(void *, const void *, unsigned long); + void (*sum)(void *, uint8_t *); + void *s; +}; + +int cryptcheck(int, char **, struct crypt_ops *, uint8_t *, size_t); +int cryptmain(int, char **, struct crypt_ops *, uint8_t *, size_t); +int cryptsum(struct crypt_ops *, int, const char *, uint8_t *); +void mdprint(const uint8_t *, const char *, size_t); diff --git a/util/sbase/cut.1 b/util/sbase/cut.1 new file mode 100644 index 00000000..7a5174e6 --- /dev/null +++ b/util/sbase/cut.1 @@ -0,0 +1,69 @@ +.Dd October 8, 2015 +.Dt CUT 1 +.Os sbase +.Sh NAME +.Nm cut +.Nd extract columns of data +.Sh SYNOPSIS +.Nm +.Fl b Ar list +.Op Fl n +.Op Ar file ... +.Nm +.Fl c Ar list +.Op Ar file ... +.Nm +.Fl f Ar list +.Op Fl d Ar delim +.Op Fl s +.Op Ar file ... +.Sh DESCRIPTION +.Nm +out bytes, characters or delimited fields from each line of +.Ar file +and write to stdout. +.Pp +If no +.Ar file +is given or +.Ar file +is '-', +.Nm +reads from stdin. +.Pp +.Ar list +is a comma or space separated list of numbers and ranges starting +from 1. +Ranges have the form 'N-M'. If N or M is missing, beginning or end +of line is assumed. +Numbers and ranges may be repeated, overlapping and in any order. +.Pp +Selected input is written in the same order it is read +and is written exactly once. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl b Ar list | Fl c Ar list +.Ar list +specifies byte | character positions. +.It Fl d Ar delim +Use +.Ar delim +as field delimiter, which can be an arbitrary string. +Default is '\et'. +.It Fl f Ar list +.Ar list +specifies field numbers. +Lines not containing field delimiters are passed through, unless +.Fl s +is specified. +.It Fl n +Do not split multibyte characters. +A character is written when its last byte is selected. +.It Fl s +Suppress lines not containing field delimiters. +.El +.Sh STANDARDS +POSIX.1-2013. +.Pp +The possibility of separating numbers and ranges with a space and specifying +multibyte delimiters of arbitrary length is an extension to that specification. diff --git a/util/sbase/cut.c b/util/sbase/cut.c new file mode 100644 index 00000000..a50bdcb5 --- /dev/null +++ b/util/sbase/cut.c @@ -0,0 +1,215 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "text.h" +#include "utf.h" +#include "util.h" + +typedef struct Range { + size_t min, max; + struct Range *next; +} Range; + +static Range *list = NULL; +static char mode = 0; +static char *delim = "\t"; +static size_t delimlen = 1; +static int nflag = 0; +static int sflag = 0; + +static void +insert(Range *r) +{ + Range *l, *p, *t; + + for (p = NULL, l = list; l; p = l, l = l->next) { + if (r->max && r->max + 1 < l->min) { + r->next = l; + break; + } else if (!l->max || r->min < l->max + 2) { + l->min = MIN(r->min, l->min); + for (p = l, t = l->next; t; p = t, t = t->next) + if (r->max && r->max + 1 < t->min) + break; + l->max = (p->max && r->max) ? MAX(p->max, r->max) : 0; + l->next = t; + return; + } + } + if (p) + p->next = r; + else + list = r; +} + +static void +parselist(char *str) +{ + char *s; + size_t n = 1; + Range *r; + + if (!*str) + eprintf("empty list\n"); + for (s = str; *s; s++) { + if (*s == ' ') + *s = ','; + if (*s == ',') + n++; + } + r = ereallocarray(NULL, n, sizeof(*r)); + for (s = str; n; n--, s++) { + r->min = (*s == '-') ? 1 : strtoul(s, &s, 10); + r->max = (*s == '-') ? strtoul(s + 1, &s, 10) : r->min; + r->next = NULL; + if (!r->min || (r->max && r->max < r->min) || (*s && *s != ',')) + eprintf("bad list value\n"); + insert(r++); + } +} + +static size_t +seek(struct line *s, size_t pos, size_t *prev, size_t count) +{ + size_t n = pos - *prev, i, j; + + if (mode == 'b') { + if (n >= s->len) + return s->len; + if (nflag) + while (n && !UTF8_POINT(s->data[n])) + n--; + *prev += n; + return n; + } else if (mode == 'c') { + for (n++, i = 0; i < s->len; i++) + if (UTF8_POINT(s->data[i]) && !--n) + break; + } else { + for (i = (count < delimlen + 1) ? 0 : delimlen; n && i < s->len; ) { + if ((s->len - i) >= delimlen && + !memcmp(s->data + i, delim, delimlen)) { + if (!--n && count) + break; + i += delimlen; + continue; + } + for (j = 1; j + i <= s->len && !fullrune(s->data + i, j); j++); + i += j; + } + } + *prev = pos; + + return i; +} + +static void +cut(FILE *fp, const char *fname) +{ + Range *r; + struct line s; + static struct line line; + static size_t size; + size_t i, n, p; + ssize_t len; + + while ((len = getline(&line.data, &size, fp)) > 0) { + line.len = len; + if (line.data[line.len - 1] == '\n') + line.data[--line.len] = '\0'; + if (mode == 'f' && !memmem(line.data, line.len, delim, delimlen)) { + if (!sflag) { + fwrite(line.data, 1, line.len, stdout); + fputc('\n', stdout); + } + continue; + } + for (i = 0, p = 1, s = line, r = list; r; r = r->next) { + n = seek(&s, r->min, &p, i); + s.data += n; + s.len -= n; + i += (mode == 'f') ? delimlen : 1; + if (!s.len) + break; + if (!r->max) { + fwrite(s.data, 1, s.len, stdout); + break; + } + n = seek(&s, r->max + 1, &p, i); + i += (mode == 'f') ? delimlen : 1; + if (fwrite(s.data, 1, n, stdout) != n) + eprintf("fwrite <stdout>:"); + s.data += n; + s.len -= n; + } + putchar('\n'); + } + if (ferror(fp)) + eprintf("getline %s:", fname); +} + +static void +usage(void) +{ + eprintf("usage: %s -b list [-n] [file ...]\n" + " %s -c list [file ...]\n" + " %s -f list [-d delim] [-s] [file ...]\n", + argv0, argv0, argv0); +} + +int +main(int argc, char *argv[]) +{ + FILE *fp; + int ret = 0; + + ARGBEGIN { + case 'b': + case 'c': + case 'f': + mode = ARGC(); + parselist(EARGF(usage())); + break; + case 'd': + delim = EARGF(usage()); + if (!*delim) + eprintf("empty delimiter\n"); + delimlen = unescape(delim); + break; + case 'n': + nflag = 1; + break; + case 's': + sflag = 1; + break; + default: + usage(); + } ARGEND + + if (!mode) + usage(); + + if (!argc) + cut(stdin, "<stdin>"); + else { + for (; *argv; argc--, argv++) { + if (!strcmp(*argv, "-")) { + *argv = "<stdin>"; + fp = stdin; + } else if (!(fp = fopen(*argv, "r"))) { + weprintf("fopen %s:", *argv); + ret = 1; + continue; + } + cut(fp, *argv); + if (fp != stdin && fshut(fp, *argv)) + ret = 1; + } + } + + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/date.1 b/util/sbase/date.1 new file mode 100644 index 00000000..fb9fb31b --- /dev/null +++ b/util/sbase/date.1 @@ -0,0 +1,81 @@ +.Dd October 8, 2015 +.Dt DATE 1 +.Os sbase +.Sh NAME +.Nm date +.Nd print or set date and time +.Sh SYNOPSIS +.Nm +.Op Fl d Ar time +.Op Fl u +.Oo +.Cm + Ns Ar format | +.Sm off +.Ar mmddHHMM Oo Oo Ar CC Oc Ar yy Oc +.Sm on +.Oc +.Sh DESCRIPTION +.Nm +prints the date and time according to +.Xr locale 7 +or +.Ar format +using +.Xr strftime 3 +or sets the date. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl d Ar time +Print +.Ar time +given as the number of seconds since the +Unix epoch 1970-01-01T00:00:00Z. +.It Fl u +Print or set UTC time instead of local time. +.El +.Pp +An operand with a leading plus +.Pq Cm + +sign signals a user-defined format string using +.Xr strftime 3 +conversion specifications. +.Pp +An operand without a leading plus sign is interpreted as a value +for setting the system's current date and time. +The canonical representation for setting the date and time is: +.Pp +.Bl -tag -width Ds -compact -offset indent +.It Ar mm +The month of the year, from 01 to 12. +.It Ar dd +The day of the month, from 01 to 31. +.It Ar HH +The hour of the day, from 00 to 23. +.It Ar MM +The minute of the hour, from 00 to 59. +.It Ar CC +The first two digits of the year (the century). +.It Ar yy +The second two digits of the year. +If +.Ar yy +is specified, but +.Ar CC +is not, a value for +.Ar yy +between 69 and 99 results in a +.Ar CC +value of 19. +Otherwise, a +.Ar CC +value of 20 is used. +.El +.Pp +The century and year are optional. +The default is the current year. +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Op Fl d +flag is an extension to that specification. diff --git a/util/sbase/date.c b/util/sbase/date.c new file mode 100644 index 00000000..109f3710 --- /dev/null +++ b/util/sbase/date.c @@ -0,0 +1,103 @@ +/* See LICENSE file for copyright and license details. */ +#include <ctype.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-u] [-d time] [+format | mmddHHMM[[CC]yy]]\n", argv0); +} + +static int +datefield(const char *s, size_t i) +{ + if (!isdigit(s[i]) || !isdigit(s[i+1])) + eprintf("invalid date format: %s\n", s); + + return (s[i] - '0') * 10 + (s[i+1] - '0'); +} + +static void +setdate(const char *s, struct tm *now) +{ + struct tm date; + struct timespec ts; + + switch (strlen(s)) { + case 8: + date.tm_year = now->tm_year; + break; + case 10: + date.tm_year = datefield(s, 8); + if (date.tm_year < 69) + date.tm_year += 100; + break; + case 12: + date.tm_year = ((datefield(s, 8) - 19) * 100) + datefield(s, 10); + break; + default: + eprintf("invalid date format: %s\n", s); + break; + } + + date.tm_mon = datefield(s, 0) - 1; + date.tm_mday = datefield(s, 2); + date.tm_hour = datefield(s, 4); + date.tm_min = datefield(s, 6); + date.tm_sec = 0; + date.tm_isdst = -1; + + ts.tv_sec = mktime(&date); + if (ts.tv_sec == -1) + eprintf("mktime:"); + ts.tv_nsec = 0; + + if (clock_settime(CLOCK_REALTIME, &ts) == -1) + eprintf("clock_settime:"); +} + +int +main(int argc, char *argv[]) +{ + struct tm *now; + time_t t; + char buf[BUFSIZ], *fmt = "%a %b %e %H:%M:%S %Z %Y"; + + t = time(NULL); + if (t == -1) + eprintf("time:"); + + ARGBEGIN { + case 'd': + t = estrtonum(EARGF(usage()), 0, LLONG_MAX); + break; + case 'u': + if (setenv("TZ", "UTC0", 1) < 0) + eprintf("setenv:"); + break; + default: + usage(); + } ARGEND + + if (!(now = localtime(&t))) + eprintf("localtime:"); + if (argc) { + if (argc != 1) + usage(); + if (argv[0][0] != '+') { + setdate(argv[0], now); + return 0; + } + fmt = &argv[0][1]; + } + + strftime(buf, sizeof(buf), fmt, now); + puts(buf); + + return fshut(stdout, "<stdout>"); +} diff --git a/util/sbase/dd.1 b/util/sbase/dd.1 new file mode 100644 index 00000000..39c5c228 --- /dev/null +++ b/util/sbase/dd.1 @@ -0,0 +1,91 @@ +.Dd April 28, 2020 +.Dt DD 1 +.Os sbase +.Sh NAME +.Nm dd +.Nd convert and copy a file +.Sh SYNOPSIS +.Nm +.Op Ar operand Ns ... +.Sh DESCRIPTION +.Nm +copies its input to its output, possibly after conversion, using +the specified block sizes, +.Pp +The following operands are available: +.Bl -tag -width ibs=expr +.It Cm if= Ns Ar file +Read from the file named by +.Ar file +instead of standard input. +.It Cm of= Ns Ar file +Write to the file named by +.Ar file +instead of standard output. +.It Cm ibs= Ns Ar expr +Set the input block size to +.Ar expr +(defaults to 512). +.It Cm obs= Ns Ar expr +Set the output block size to +.Ar expr +(defaults to 512). +.It Cm bs= Ns Ar expr +Set the input and output block sizes to +.Ar expr . +Additionally, if no conversion other than +.Cm noerror , +.Cm notrunc , +or +.Cm sync +is specified, input blocks are copied as single output blocks, even +when the input block is short. +.It Cm skip= Ns Ar n +Skip +.Ar n +input blocks before starting to copy. +.It Cm seek= Ns Ar n +Skip +.Ar n +output blocks before starting to copy. +.It Cm count= Ns Ar n +Copy at most +.Ar n +input blocks. +.It Cm conv= Ns Ar value Ns Op , Ns Ar value Ns ... +Apply the conversions specified by +.Ar value . +.Bl -tag -width Ds +.It Cm lcase +Map uppercase characters to the corresponding lowercase character +using +.Fn tolower . +.It Cm ucase +Map lowercase characters to the corresponding uppercase character +using +.Fn toupper . +.It Cm swab +Swap each pair of bytes in the input block. +If there is an odd number of bytes in a block, the last one is +unmodified. +.It Cm noerror +In case of an error reading from the input, do not fail. +Instead, print a diagnostic message and a summary of the current +status. +.It Cm notrunc +Do not truncate the output file. +.It Cm sync +In case of a partial input block, pad with null bytes to form a +complete block. +.El +.El +.Sh STANDARDS +The +.Nm +utility is compliant with the +.St -p1003.1-2008 +specification, except that it does not implement the +.Cm block +and +.Cm unblock +conversions. diff --git a/util/sbase/dd.c b/util/sbase/dd.c new file mode 100644 index 00000000..36eb4094 --- /dev/null +++ b/util/sbase/dd.c @@ -0,0 +1,237 @@ +/* See LICENSE file for copyright and license details. */ +#include <ctype.h> +#include <fcntl.h> +#include <inttypes.h> +#include <stdint.h> +#include <string.h> +#include <unistd.h> + +#include "util.h" + +static off_t ifull, ofull, ipart, opart; + +static void +usage(void) +{ + eprintf("usage: %s [operand...]\n", argv0); +} + +static size_t +parsesize(char *expr) +{ + char *s = expr; + size_t n = 1; + + for (;;) { + n *= strtoumax(s, &s, 10); + switch (*s) { + case 'k': n <<= 10; s++; break; + case 'b': n <<= 9; s++; break; + } + if (*s != 'x' || !s[1]) + break; + s++; + } + if (*s || n == 0) + eprintf("invalid block size expression '%s'\n", expr); + + return n; +} + +static void +bswap(unsigned char *buf, size_t len) +{ + int c; + + for (len &= ~1; len > 0; buf += 2, len -= 2) { + c = buf[0]; + buf[0] = buf[1]; + buf[1] = c; + } +} + +static void +lcase(unsigned char *buf, size_t len) +{ + for (; len > 0; buf++, len--) + buf[0] = tolower(buf[0]); +} + +static void +ucase(unsigned char *buf, size_t len) +{ + for (; len > 0; buf++, len--) + buf[0] = toupper(buf[0]); +} + +static void +summary(void) +{ + fprintf(stderr, "%"PRIdMAX"+%"PRIdMAX" records in\n", (intmax_t)ifull, (intmax_t)ipart); + fprintf(stderr, "%"PRIdMAX"+%"PRIdMAX" records out\n", (intmax_t)ofull, (intmax_t)opart); +} + +int +main(int argc, char *argv[]) +{ + enum { + LCASE = 1 << 0, + UCASE = 1 << 1, + SWAB = 1 << 2, + NOERROR = 1 << 3, + NOTRUNC = 1 << 4, + SYNC = 1 << 5, + } conv = 0; + char *arg, *val, *end; + const char *iname = "-", *oname = "-"; + int ifd = 0, ofd = 1, eof = 0; + size_t len, bs = 0, ibs = 512, obs = 512, ipos = 0, opos = 0; + off_t skip = 0, seek = 0, count = -1; + ssize_t ret; + unsigned char *buf; + + argv0 = argc ? (argc--, *argv++) : "dd"; + for (; argc > 0; argc--, argv++) { + arg = *argv; + val = strchr(arg, '='); + if (!val) + usage(); + *val++ = '\0'; + if (strcmp(arg, "if") == 0) { + iname = val; + } else if (strcmp(arg, "of") == 0) { + oname = val; + } else if (strcmp(arg, "ibs") == 0) { + ibs = parsesize(val); + } else if (strcmp(arg, "obs") == 0) { + obs = parsesize(val); + } else if (strcmp(arg, "bs") == 0) { + bs = parsesize(val); + } else if (strcmp(arg, "skip") == 0) { + skip = estrtonum(val, 0, LLONG_MAX); + } else if (strcmp(arg, "seek") == 0) { + seek = estrtonum(val, 0, LLONG_MAX); + } else if (strcmp(arg, "count") == 0) { + count = estrtonum(val, 0, LLONG_MAX); + } else if (strcmp(arg, "conv") == 0) { + do { + end = strchr(val, ','); + if (end) + *end++ = '\0'; + if (strcmp(val, "lcase") == 0) + conv |= LCASE; + else if (strcmp(val, "ucase") == 0) + conv |= UCASE; + else if (strcmp(val, "swab") == 0) + conv |= SWAB; + else if (strcmp(val, "noerror") == 0) + conv |= NOERROR; + else if (strcmp(val, "notrunc") == 0) + conv |= NOTRUNC; + else if (strcmp(val, "sync") == 0) + conv |= SYNC; + else + eprintf("unknown conv flag '%s'\n", val); + val = end; + } while (val); + } else { + weprintf("unknown operand '%s'\n", arg); + usage(); + } + } + + if (bs) + ibs = obs = bs; + if (strcmp(iname, "-") != 0) { + ifd = open(iname, O_RDONLY); + if (ifd < 0) + eprintf("open %s:", iname); + } + if (strcmp(oname, "-") != 0) { + ofd = open(oname, O_WRONLY | O_CREAT | (conv & NOTRUNC || seek ? 0 : O_TRUNC), 0666); + if (ofd < 0) + eprintf("open %s:", oname); + } + + len = MAX(ibs, obs) + ibs; + buf = emalloc(len); + if (skip && lseek(ifd, skip * ibs, SEEK_SET) < 0) { + while (skip--) { + ret = read(ifd, buf, ibs); + if (ret < 0) + eprintf("read:"); + if (ret == 0) { + eof = 1; + break; + } + } + } + if (seek) { + if (!(conv & NOTRUNC) && ftruncate(ofd, seek * ibs) != 0) + eprintf("ftruncate:"); + if (lseek(ofd, seek * ibs, SEEK_SET) < 0) + eprintf("lseek:"); + /* XXX: handle non-seekable files */ + } + while (!eof) { + while (ipos - opos < obs) { + if (ifull + ipart == count) { + eof = 1; + break; + } + ret = read(ifd, buf + ipos, ibs); + if (ret == 0) { + eof = 1; + break; + } + if (ret < 0) { + weprintf("read:"); + if (!(conv & NOERROR)) + return 1; + summary(); + if (!(conv & SYNC)) + continue; + ret = 0; + } + if (ret < ibs) { + ipart++; + if (conv & SYNC) { + memset(buf + ipos + ret, 0, ibs - ret); + ret = ibs; + } + } else { + ifull++; + } + if (conv & SWAB) + bswap(buf + ipos, ret); + if (conv & LCASE) + lcase(buf + ipos, ret); + if (conv & UCASE) + ucase(buf + ipos, ret); + ipos += ret; + if (bs && !(conv & (SWAB | LCASE | UCASE))) + break; + } + if (ipos == opos) + break; + do { + ret = write(ofd, buf + opos, MIN(obs, ipos - opos)); + if (ret < 0) + eprintf("write:"); + if (ret == 0) + eprintf("write returned 0\n"); + if (ret < obs) + opart++; + else + ofull++; + opos += ret; + } while (ipos - opos >= (eof ? 1 : obs)); + if (opos < ipos) + memmove(buf, buf + opos, ipos - opos); + ipos -= opos; + opos = 0; + } + summary(); + + return 0; +} diff --git a/util/sbase/dirname.1 b/util/sbase/dirname.1 new file mode 100644 index 00000000..742c9912 --- /dev/null +++ b/util/sbase/dirname.1 @@ -0,0 +1,19 @@ +.Dd October 8, 2015 +.Dt DIRNAME 1 +.Os sbase +.Sh NAME +.Nm dirname +.Nd strip final path component +.Sh SYNOPSIS +.Nm +.Ar path +.Sh DESCRIPTION +.Nm +writes +.Ar path +with its final path component removed to stdout. +.Sh SEE ALSO +.Xr basename 1 , +.Xr dirname 3 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/dirname.c b/util/sbase/dirname.c new file mode 100644 index 00000000..45e1a7e2 --- /dev/null +++ b/util/sbase/dirname.c @@ -0,0 +1,27 @@ +/* See LICENSE file for copyright and license details. */ +#include <libgen.h> +#include <stdio.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s path\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + ARGBEGIN { + default: + usage(); + } ARGEND + + if (argc != 1) + usage(); + + puts(dirname(argv[0])); + + return fshut(stdout, "<stdout>"); +} diff --git a/util/sbase/du.1 b/util/sbase/du.1 new file mode 100644 index 00000000..ef49052e --- /dev/null +++ b/util/sbase/du.1 @@ -0,0 +1,57 @@ +.Dd October 8, 2015 +.Dt DU 1 +.Os sbase +.Sh NAME +.Nm du +.Nd display disk usage statistics +.Sh SYNOPSIS +.Nm +.Op Fl a | s +.Op Fl d Ar depth +.Op Fl h +.Op Fl k +.Op Fl H | L | P +.Op Fl x +.Op Ar file ... +.Sh DESCRIPTION +.Nm +displays the file system block usage for each +.Ar file +argument and for each directory in the file hierarchy rooted in directory +argument. +If no +.Ar file +is specified, the block usage of the hierarchy rooted in the current directory +is displayed. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl a +Display an entry for each file in the file hierarchy. +.It Fl s +Display only the grand total for the specified files. +.It Fl d Ar depth +Maximum directory depth to print files and directories. +.It Fl h +Enable human-readable output. +.It Fl k +By default all sizes are reported in 512-byte block counts. +The +.Fl k +option causes the numbers to be reported in kilobyte counts. +.It Fl H +Only dereference symbolic links that are passed as command line arguments when +recursively traversing directories. +.It Fl L +Always dereference symbolic links while recursively traversing directories. +.It Fl P +Don't dereference symbolic links. +This is the default. +.It Fl x +Do not traverse file systems mount points. +.El +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Op Fl dhP +flags are an extension to that specification. diff --git a/util/sbase/du.c b/util/sbase/du.c new file mode 100644 index 00000000..782b09a2 --- /dev/null +++ b/util/sbase/du.c @@ -0,0 +1,167 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> +#include <sys/types.h> + +#include <errno.h> +#include <fcntl.h> +#include <limits.h> +#include <search.h> +#include <stdint.h> +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include "fs.h" +#include "util.h" + +static size_t maxdepth = SIZE_MAX; +static size_t blksize = 512; + +static int aflag = 0; +static int sflag = 0; +static int hflag = 0; + +struct file { + dev_t devno; + ino_t inode; +}; + +static void +printpath(off_t n, const char *path) +{ + if (hflag) + printf("%s\t%s\n", humansize(n * blksize), path); + else + printf("%jd\t%s\n", (intmax_t)n, path); +} + +static off_t +nblks(blkcnt_t blocks) +{ + return (512 * blocks + blksize - 1) / blksize; +} + +static int +cmp(const void *p1, const void *p2) +{ + const struct file *f1 = p1, *f2 = p2; + + if (f1->devno > f2->devno) + return -1; + if (f1->devno < f2->devno) + return 1; + + /* f1->devno == f2->devno */ + if (f1->inode < f2->inode) + return -1; + if (f1->inode > f2->inode) + return 1; + + return 0; +} + +static int +duplicated(dev_t dev, ino_t ino) +{ + static void *tree; + struct file **fpp, *fp, file = {dev, ino}; + + if ((fpp = tsearch(&file, &tree, cmp)) == NULL) + eprintf("%s:", argv0); + + if (*fpp != &file) + return 1; + + /* new file added */ + fp = emalloc(sizeof(*fp)); + *fp = file; + *fpp = fp; + + return 0; +} + +static void +du(int dirfd, const char *path, struct stat *st, void *data, struct recursor *r) +{ + off_t *total = data, subtotal; + + subtotal = nblks(st->st_blocks); + if (S_ISDIR(st->st_mode)) { + recurse(dirfd, path, &subtotal, r); + } else if (r->follow != 'P' || st->st_nlink > 1) { + if (duplicated(st->st_dev, st->st_ino)) + goto print; + } + + *total += subtotal; + +print: + if (!r->depth) + printpath(*total, r->path); + else if (!sflag && r->depth <= maxdepth && (S_ISDIR(st->st_mode) || aflag)) + printpath(subtotal, r->path); +} + +static void +usage(void) +{ + eprintf("usage: %s [-a | -s] [-d depth] [-h] [-k] [-H | -L | -P] [-x] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + struct recursor r = { .fn = du, .follow = 'P' }; + off_t n = 0; + int kflag = 0, dflag = 0; + char *bsize; + + ARGBEGIN { + case 'a': + aflag = 1; + break; + case 'd': + dflag = 1; + maxdepth = estrtonum(EARGF(usage()), 0, MIN(LLONG_MAX, SIZE_MAX)); + break; + case 'h': + hflag = 1; + break; + case 'k': + kflag = 1; + break; + case 's': + sflag = 1; + break; + case 'x': + r.flags |= SAMEDEV; + break; + case 'H': + case 'L': + case 'P': + r.follow = ARGC(); + break; + default: + usage(); + } ARGEND + + if ((aflag && sflag) || (dflag && sflag)) + usage(); + + bsize = getenv("BLOCKSIZE"); + if (bsize) + blksize = estrtonum(bsize, 1, MIN(LLONG_MAX, SIZE_MAX)); + if (kflag) + blksize = 1024; + + if (!argc) { + recurse(AT_FDCWD, ".", &n, &r); + } else { + for (; *argv; argc--, argv++) { + n = 0; + recurse(AT_FDCWD, *argv, &n, &r); + } + } + + return fshut(stdout, "<stdout>") || recurse_status; +} diff --git a/util/sbase/echo.1 b/util/sbase/echo.1 new file mode 100644 index 00000000..04ba8b9b --- /dev/null +++ b/util/sbase/echo.1 @@ -0,0 +1,27 @@ +.Dd October 8, 2015 +.Dt ECHO 1 +.Os sbase +.Sh NAME +.Nm echo +.Nd print arguments +.Sh SYNOPSIS +.Nm +.Op Fl n +.Op Ar string ... +.Sh DESCRIPTION +.Nm +writes each +.Ar string +to stdout, separated by spaces and terminated by +a newline. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl n +Do not print the terminating newline. +.El +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Op Fl n +flag is an extension to that specification. diff --git a/util/sbase/echo.c b/util/sbase/echo.c new file mode 100644 index 00000000..a5526311 --- /dev/null +++ b/util/sbase/echo.c @@ -0,0 +1,24 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <string.h> +#include "util.h" + +int +main(int argc, char *argv[]) +{ + int nflag = 0; + + argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0; + + if (*argv && !strcmp(*argv, "-n")) { + nflag = 1; + argc--, argv++; + } + + for (; *argv; argc--, argv++) + putword(stdout, *argv); + if (!nflag) + putchar('\n'); + + return fshut(stdout, "<stdout>"); +} diff --git a/util/sbase/ed.1 b/util/sbase/ed.1 new file mode 100644 index 00000000..14e88346 --- /dev/null +++ b/util/sbase/ed.1 @@ -0,0 +1,238 @@ +.Dd December 27, 2016 +.Dt ED 1 +.Os sbase +.Sh NAME +.Nm ed +.Nd text editor +.Sh SYNOPSIS +.Nm +.Op Fl s +.Op Fl p Ar string +.Op Ar file +.Sh DESCRIPTION +.Nm +is the standard text editor. +It performs line-oriented operations on a buffer; The buffer's contents are +manipulated in command mode and text is written to the buffer in input mode. +Command mode is the default. +To exit input mode enter a dot ('.') on a line of its own. +.Pp +If +.Nm +is invoked with a file as an argument, it will simulate an edit command and read +the file's contents into a buffer. +Changes to this buffer are local to +.Nm +until a write command is given. +.Pp +.Nm +uses the basic regular expression syntax and allows any character but space and +newline to be used as a delimiter in regular expressions. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl s +Suppress diagnostic messages +.It Fl p Ar string +Use +.Ar string +as a prompt when in command mode +.El +.Sh EXTENDED DESCRIPTION +.Ss Addresses +Commands operate on addresses. +Addresses are used to refer to lines within the buffer. +Address ranges may have spaces before and after the separator. +Unless otherwise specified, 0 is an invalid address. +The following symbols are valid addresses: +.Bl -tag -width Ds +.It n +The nth line. +.It . +The current line, or "dot". +.It $ +The last line. +.It + +The next line. +.It +n +The nth next line. +.It ^ or - +The previous line. +.It ^n or -n +The nth previous line. +.It x,y +The range of lines from x to y. +The default value of x is 1, and the default value of y is $. +.It x;y +As above, except that the current line is set to x. +Omitting x in this case uses the current line as the default value. +.It /re/ +The next line matching re. +.It ?re? +The last line matching re. +.It 'c +The line marked by c. See k below. +.El +.Ss Commands +.Nm +expects to see one command per line, with the following exception: commands may +be suffixed with either a list, number, or print command. +These suffixed commands are run after the command they're suffixed to has +executed. +.Pp +The following is the list of commands that +.Nm +knows about. +The parentheses contain the default addresses that a command uses. +.Bl -tag -width Ds +.It (.)a +Append text after the addressed line. +The dot is set to the last line entered. +If no text was entered, the dot is set to the addressed line. +An address of 0 appends to the start of the buffer. +.It (.,.)c +Delete the addressed lines and then accept input to replace them. +The dot is set to the last line entered. +If no text was entered, the dot is set to the line before the deleted lines. +.It (.,.)d +Delete the addressed lines. +If there is a line after the deleted range, the dot is set to it. +Otherwise, the dot is set to the line before the deleted range. +.It e Ar file +Delete the contents of the buffer and load in +.Ar file +for editing, printing the bytes read to standard output. +If no filename is given, +.Nm +uses the currently remembered filename. +The remembered filename is set to +.Ar file +for later use. +.It E Ar file +As above, but without warning if the current buffer has unsaved changes. +.It f Ar file +Set the currently remembered filename to +.Ar file +, or print the currently remembered filename if +.Ar file +is omitted. +.It (1,$)g/re/command +Apply command to lines matching re. +The dot is set to the matching line before command is executed. +When each matching line has been operated on, the dot is set to the last line +operated on. +If no lines match then the dot remains unchanged. +The command used may not be g, G, v, or V. +.It (1,$)G/re/ +Interactively edit the range of line addresses that match re. +The dot is set to the matching line and printed before a command is input. +When each matching line has been operated on, the dot is set to the last line +operated on. +If no lines match then the dot remains unchanged. +The command used may not be a, c, i, g, G, v, or V. +.It h +Print the reason for the most recent error. +.It H +Toggle error explanations. +If on, the above behaviour is produced on all subsequent errors. +.It (.)i +Insert text into the buffer before the addressed line. +The dot is set to the last line entered. +If no text was entered, the dot is set to the addressed line +.It (.,.+1)j +Join two lines together. +If only one address is given, nothing happens. +The dot is set to the newly joined line. +.It (.)kc +Mark the line with the lower case character c. The dot is unchanged. +.It (.,.)l +Unambiguously print the addressed lines. +The dot is set to the last line written. +.It (.,.)m(.) +Move lines in the buffer to the line address on the right hand side. +An address of 0 on the right hand side moves to the start of the buffer. +The dot is set to the last line moved. +.It (.,.)n +Print the addressed lines and their numbers. +The dot is set to the last line printed. +.It (.,.)p +Print the addressed lines. +The dot is set to the last line printed. +.It P +Toggle the prompt. +Defaults to off, but is switched on if the -p flag is used. +.It q +Quit +.Nm +, warning if there are unsaved changes. +.It Q +As above, but without warning if the current buffer has unsaved changes. +.It ($)r Ar file +Read in +.Ar file +and append it to the current buffer, printing the bytes read to standard output. +The currently remembered filename isn't changed unless it's empty. +An address of 0 reads the file into the start of the buffer. +.It (.,.)s/re/replacement/flags +Substitute re for replacement in lines matching re. +An & within replacement is replaced with the whole string matched by re. +Backrefs can be used with the form \\n, where n is a positive non-zero integer. +When % is the only character in replacement, it is substituted for the +replacement string from the last substitute command. +If a newline is part of replacement then the matched string is split into two +lines; this cannot be done as part of a g or v command. +If flags contains an integer n, then the nth match is replaced. +If flags contains g, all matches are replaced. +The dot is set to the last line matched. +.It (.,.)t(.) +As m, but copying instead of moving. +The dot is set to the last line added. +.It u +Undo the last change. +The dot is set to whatever it was before the undone command was performed. +.It (1.$)v/re/command +As with g, but operating on lines that don't match re. +.It (1.$)V/re/ +As with G, but operating on lines that don't match re. +.It (1,$)w Ar file +Write the addressed lines to +.Ar file +, overwriting its previous contents if the file exists, and print the number of +bytes written. +If no filename is given the currently remembered filename will be used instead. +The dot is unchanged. +.It (1,$)W Ar file +As above, but instead of overwriting the contents of +.Ar file +the addressed lines are appended to +.Ar file +instead. +.It (.+1) +Print the addressed line. +Sets the dot to that line. +.It ($)= +Print the line number of the addressed line. +The dot is unchanged. +.It & +Repeat the last command. +.It ! Ar command +Execute +.Ar command +using sh. +If the first character of +.Ar command +is '!' then it is replaced with the text of the previous command. +An unescaped % is replaced with the currently remembered filename. +! does not process escape characters. +When +.Ar command +returns a '!' is printed. +The dot is unchanged. +.El +.Sh SEE ALSO +.Xr sed 1 , +.Xr regexp 3 +.Sh STANDARDS +POSIX.1-2013. +Except where noted here: +g and v operate on single commands rather than lists delimited with '\e'. +e, E, r, w, and W commands cannot accept shell escapes. diff --git a/util/sbase/ed.c b/util/sbase/ed.c new file mode 100644 index 00000000..bec9b2da --- /dev/null +++ b/util/sbase/ed.c @@ -0,0 +1,1650 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> +#include <fcntl.h> +#include <regex.h> +#include <unistd.h> + +#include <ctype.h> +#include <limits.h> +#include <setjmp.h> +#include <signal.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "util.h" + +#define REGEXSIZE 100 +#define LINESIZE 80 +#define NUMLINES 32 +#define CACHESIZ 4096 +#define AFTER 0 +#define BEFORE 1 + +typedef struct { + char *str; + size_t cap; + size_t siz; +} String; + +struct hline { + off_t seek; + char global; + int next, prev; +}; + +struct undo { + int curln, lastln; + size_t nr, cap; + struct link { + int to1, from1; + int to2, from2; + } *vec; +}; + +static char *prompt = "*"; +static regex_t *pattern; +static regmatch_t matchs[10]; +static String lastre; + +static int optverbose, optprompt, exstatus, optdiag = 1; +static int marks['z' - 'a']; +static int nlines, line1, line2; +static int curln, lastln, ocurln, olastln; +static jmp_buf savesp; +static char *lasterr; +static size_t idxsize, lastidx; +static struct hline *zero; +static String text; +static char savfname[FILENAME_MAX]; +static char tmpname[FILENAME_MAX]; +static int scratch; +static int pflag, modflag, uflag, gflag; +static size_t csize; +static String cmdline; +static char *ocmdline; +static int inputidx; +static char *rhs; +static char *lastmatch; +static struct undo udata; +static int newcmd; +static int eol, bol; + +static sig_atomic_t intr, hup; + +static void undo(void); + +static void +error(char *msg) +{ + exstatus = 1; + lasterr = msg; + puts("?"); + + if (optverbose) + puts(msg); + if (!newcmd) + undo(); + + curln = ocurln; + longjmp(savesp, 1); +} + +static int +nextln(int line) +{ + ++line; + return (line > lastln) ? 0 : line; +} + +static int +prevln(int line) +{ + --line; + return (line < 0) ? lastln : line; +} + +static String * +copystring(String *s, char *from) +{ + size_t len; + char *t; + + if ((t = strdup(from)) == NULL) + error("out of memory"); + len = strlen(t); + + free(s->str); + s->str = t; + s->siz = len; + s->cap = len; + + return s; +} + +static String * +string(String *s) +{ + free(s->str); + s->str = NULL; + s->siz = 0; + s->cap = 0; + + return s; +} + +static char * +addchar(char c, String *s) +{ + size_t cap = s->cap, siz = s->siz; + char *t = s->str; + + if (siz >= cap && + (cap > SIZE_MAX - LINESIZE || + (t = realloc(t, cap += LINESIZE)) == NULL)) + error("out of memory"); + t[siz++] = c; + s->siz = siz; + s->cap = cap; + s->str = t; + return t; +} + +static void chksignals(void); + +static int +input(void) +{ + int ch; + + chksignals(); + + ch = cmdline.str[inputidx]; + if (ch != '\0') + inputidx++; + return ch; +} + +static int +back(int c) +{ + if (c == '\0') + return c; + return cmdline.str[--inputidx] = c; +} + +static int +makeline(char *s, int *off) +{ + struct hline *lp; + size_t len; + char *begin = s; + int c; + + if (lastidx >= idxsize) { + lp = NULL; + if (idxsize <= SIZE_MAX - NUMLINES) + lp = reallocarray(zero, idxsize + NUMLINES, sizeof(*lp)); + if (!lp) + error("out of memory"); + idxsize += NUMLINES; + zero = lp; + } + lp = zero + lastidx; + lp->global = 0; + + if (!s) { + lp->seek = -1; + len = 0; + } else { + while ((c = *s++) && c != '\n') + ; + len = s - begin; + if ((lp->seek = lseek(scratch, 0, SEEK_END)) < 0 || + write(scratch, begin, len) < 0) { + error("input/output error"); + } + } + if (off) + *off = len; + ++lastidx; + return lp - zero; +} + +static int +getindex(int line) +{ + struct hline *lp; + int n; + + if (line == -1) + line = 0; + for (n = 0, lp = zero; n != line; n++) + lp = zero + lp->next; + + return lp - zero; +} + +static char * +gettxt(int line) +{ + static char buf[CACHESIZ]; + static off_t lasto; + struct hline *lp; + off_t off, block; + ssize_t n; + char *p; + + lp = zero + getindex(line); + text.siz = 0; + off = lp->seek; + + if (off == (off_t) -1) + return addchar('\0', &text); + +repeat: + if (!csize || off < lasto || off - lasto >= csize) { + block = off & ~(CACHESIZ-1); + if (lseek(scratch, block, SEEK_SET) < 0 || + (n = read(scratch, buf, CACHESIZ)) < 0) { + error("input/output error"); + } + csize = n; + lasto = block; + } + for (p = buf + off - lasto; p < buf + csize && *p != '\n'; ++p) { + ++off; + addchar(*p, &text); + } + if (csize && p == buf + csize) + goto repeat; + + addchar('\n', &text); + addchar('\0', &text); + return text.str; +} + +static void +setglobal(int i, int v) +{ + zero[getindex(i)].global = v; +} + +static void +clearundo(void) +{ + free(udata.vec); + udata.vec = NULL; + newcmd = udata.nr = udata.cap = 0; + modflag = 0; +} + +static void +newundo(int from1, int from2) +{ + struct link *p; + + if (newcmd) { + clearundo(); + udata.curln = ocurln; + udata.lastln = olastln; + } + if (udata.nr >= udata.cap) { + size_t siz = (udata.cap + 10) * sizeof(struct link); + if ((p = realloc(udata.vec, siz)) == NULL) + error("out of memory"); + udata.vec = p; + udata.cap = udata.cap + 10; + } + p = &udata.vec[udata.nr++]; + p->from1 = from1; + p->to1 = zero[from1].next; + p->from2 = from2; + p->to2 = zero[from2].prev; +} + +/* + * relink: to1 <- from1 + * from2 -> to2 + */ +static void +relink(int to1, int from1, int from2, int to2) +{ + newundo(from1, from2); + zero[from1].next = to1; + zero[from2].prev = to2; + modflag = 1; +} + +static void +undo(void) +{ + struct link *p; + + if (udata.nr == 0) + return; + for (p = &udata.vec[udata.nr-1]; udata.nr > 0; --p) { + --udata.nr; + zero[p->from1].next = p->to1; + zero[p->from2].prev = p->to2; + } + free(udata.vec); + udata.vec = NULL; + udata.cap = 0; + curln = udata.curln; + lastln = udata.lastln; +} + +static void +inject(char *s, int where) +{ + int off, k, begin, end; + + if (where == BEFORE) { + begin = getindex(curln-1); + end = getindex(nextln(curln-1)); + } else { + begin = getindex(curln); + end = getindex(nextln(curln)); + } + while (*s) { + k = makeline(s, &off); + s += off; + relink(k, begin, k, begin); + relink(end, k, end, k); + ++lastln; + ++curln; + begin = k; + } +} + +static void +clearbuf(void) +{ + if (scratch) + close(scratch); + remove(tmpname); + free(zero); + zero = NULL; + scratch = csize = idxsize = lastidx = curln = lastln = 0; + modflag = lastln = curln = 0; +} + +static void +setscratch(void) +{ + int r, k; + char *dir; + + clearbuf(); + clearundo(); + if ((dir = getenv("TMPDIR")) == NULL) + dir = "/tmp"; + r = snprintf(tmpname, sizeof(tmpname), "%s/%s", + dir, "ed.XXXXXX"); + if (r < 0 || (size_t)r >= sizeof(tmpname)) + error("scratch filename too long"); + if ((scratch = mkstemp(tmpname)) < 0) + error("failed to create scratch file"); + if ((k = makeline(NULL, NULL))) + error("input/output error in scratch file"); + relink(k, k, k, k); + clearundo(); +} + +static void +compile(int delim) +{ + int n, ret, c,bracket; + static char buf[BUFSIZ]; + + if (!isgraph(delim)) + error("invalid pattern delimiter"); + + eol = bol = bracket = lastre.siz = 0; + for (n = 0;; ++n) { + c = input(); + if (c == delim && !bracket || c == '\0') { + break; + } else if (c == '^') { + bol = 1; + } else if (c == '$') { + eol = 1; + } else if (c == '\\') { + addchar(c, &lastre); + c = input(); + } else if (c == '[') { + bracket = 1; + } else if (c == ']') { + bracket = 0; + } + addchar(c, &lastre); + } + if (n == 0) { + if (!pattern) + error("no previous pattern"); + return; + } + addchar('\0', &lastre); + + if (pattern) + regfree(pattern); + if (!pattern && (!(pattern = malloc(sizeof(*pattern))))) + error("out of memory"); + if ((ret = regcomp(pattern, lastre.str, REG_NEWLINE))) { + regerror(ret, pattern, buf, sizeof(buf)); + error(buf); + } +} + +static int +match(int num) +{ + lastmatch = gettxt(num); + return !regexec(pattern, lastmatch, 10, matchs, 0); +} + +static int +rematch(int num) +{ + regoff_t off = matchs[0].rm_eo; + + if (!regexec(pattern, lastmatch + off, 10, matchs, 0)) { + lastmatch += off; + return 1; + } + + return 0; +} + +static int +search(int way) +{ + int i; + + i = curln; + do { + chksignals(); + + i = (way == '?') ? prevln(i) : nextln(i); + if (i > 0 && match(i)) + return i; + } while (i != curln); + + error("invalid address"); + return -1; /* not reached */ +} + +static void +skipblank(void) +{ + char c; + + while ((c = input()) == ' ' || c == '\t') + ; + back(c); +} + +static void +ensureblank(void) +{ + char c; + + switch ((c = input())) { + case ' ': + case '\t': + skipblank(); + case '\0': + back(c); + break; + default: + error("unknown command"); + } +} + +static int +getnum(void) +{ + int ln, n, c; + + for (ln = 0; isdigit(c = input()); ln += n) { + if (ln > INT_MAX/10) + goto invalid; + n = c - '0'; + ln *= 10; + if (INT_MAX - ln < n) + goto invalid; + } + back(c); + return ln; + +invalid: + error("invalid address"); + return -1; /* not reached */ +} + +static int +linenum(int *line) +{ + int ln, c; + + skipblank(); + + switch (c = input()) { + case '.': + ln = curln; + break; + case '\'': + skipblank(); + if (!islower(c = input())) + error("invalid mark character"); + if (!(ln = marks[c - 'a'])) + error("invalid address"); + break; + case '$': + ln = lastln; + break; + case '?': + case '/': + compile(c); + ln = search(c); + break; + case '^': + case '-': + case '+': + ln = curln; + back(c); + break; + default: + back(c); + if (isdigit(c)) + ln = getnum(); + else + return 0; + break; + } + *line = ln; + return 1; +} + +static int +address(int *line) +{ + int ln, sign, c, num; + + if (!linenum(&ln)) + return 0; + + for (;;) { + skipblank(); + if ((c = input()) != '+' && c != '-' && c != '^') + break; + sign = c == '+' ? 1 : -1; + num = isdigit(back(input())) ? getnum() : 1; + num *= sign; + if (INT_MAX - ln < num) + goto invalid; + ln += num; + } + back(c); + + if (ln < 0 || ln > lastln) + error("invalid address"); + *line = ln; + return 1; + +invalid: + error("invalid address"); + return -1; /* not reached */ +} + +static void +getlst(void) +{ + int ln, c; + + if ((c = input()) == ',') { + line1 = 1; + line2 = lastln; + nlines = lastln; + return; + } else if (c == ';') { + line1 = curln; + line2 = lastln; + nlines = lastln - curln + 1; + return; + } + back(c); + line2 = curln; + for (nlines = 0; address(&ln); ) { + line1 = line2; + line2 = ln; + ++nlines; + + skipblank(); + if ((c = input()) != ',' && c != ';') { + back(c); + break; + } + if (c == ';') + curln = line2; + } + if (nlines > 2) + nlines = 2; + else if (nlines <= 1) + line1 = line2; +} + +static void +deflines(int def1, int def2) +{ + if (!nlines) { + line1 = def1; + line2 = def2; + } + if (line1 > line2 || line1 < 0 || line2 > lastln) + error("invalid address"); +} + +static void +quit(void) +{ + clearbuf(); + exit(exstatus); +} + +static void +setinput(char *s) +{ + copystring(&cmdline, s); + inputidx = 0; +} + +static void +getinput(void) +{ + int ch; + + string(&cmdline); + + while ((ch = getchar()) != '\n' && ch != EOF) { + if (ch == '\\') { + if ((ch = getchar()) == EOF) + break; + if (ch != '\n') { + ungetc(ch, stdin); + ch = '\\'; + } + } + addchar(ch, &cmdline); + } + + addchar('\0', &cmdline); + inputidx = 0; + + if (ch == EOF) { + chksignals(); + if (ferror(stdin)) { + exstatus = 1; + fputs("ed: error reading input\n", stderr); + } + quit(); + } +} + +static int +moreinput(void) +{ + if (!uflag) + return cmdline.str[inputidx] != '\0'; + + getinput(); + return 1; +} + +static void dowrite(const char *, int); + +static void +dump(void) +{ + char *home; + + if (modflag) + return; + + line1 = nextln(0); + line2 = lastln; + + if (!setjmp(savesp)) { + dowrite("ed.hup", 1); + return; + } + + home = getenv("HOME"); + if (!home || chdir(home) < 0) + return; + + if (!setjmp(savesp)) + dowrite("ed.hup", 1); +} + +static void +chksignals(void) +{ + if (hup) { + exstatus = 1; + dump(); + quit(); + } + + if (intr) { + intr = 0; + newcmd = 1; + clearerr(stdin); + error("Interrupt"); + } +} + +static void +dowrite(const char *fname, int trunc) +{ + size_t bytecount = 0; + int i, r, line; + FILE *aux; + static int sh; + static FILE *fp; + + if (fp) { + sh ? pclose(fp) : fclose(fp); + fp = NULL; + } + + if(fname[0] == '!') { + sh = 1; + fname++; + if((fp = popen(fname, "w")) == NULL) + error("bad exec"); + } else { + sh = 0; + if ((fp = fopen(fname, "w")) == NULL) + error("cannot open input file"); + } + + line = curln; + for (i = line1; i <= line2; ++i) { + chksignals(); + + gettxt(i); + bytecount += text.siz - 1; + fwrite(text.str, 1, text.siz - 1, fp); + } + + curln = line2; + + aux = fp; + fp = NULL; + r = sh ? pclose(aux) : fclose(aux); + if (r) + error("input/output error"); + strcpy(savfname, fname); + modflag = 0; + curln = line; + if (optdiag) + printf("%zu\n", bytecount); +} + +static void +doread(const char *fname) +{ + size_t cnt; + ssize_t n; + char *p; + FILE *aux; + static size_t len; + static char *s; + static FILE *fp; + + if (fp) + fclose(fp); + if ((fp = fopen(fname, "r")) == NULL) + error("cannot open input file"); + + curln = line2; + for (cnt = 0; (n = getline(&s, &len, fp)) > 0; cnt += (size_t)n) { + chksignals(); + if (s[n-1] != '\n') { + if (len == SIZE_MAX || !(p = realloc(s, ++len))) + error("out of memory"); + s = p; + s[n-1] = '\n'; + s[n] = '\0'; + } + inject(s, AFTER); + } + if (optdiag) + printf("%zu\n", cnt); + + aux = fp; + fp = NULL; + if (fclose(aux)) + error("input/output error"); +} + +static void +doprint(void) +{ + int i, c; + char *s, *str; + + if (line1 <= 0 || line2 > lastln) + error("incorrect address"); + for (i = line1; i <= line2; ++i) { + chksignals(); + if (pflag == 'n') + printf("%d\t", i); + for (s = gettxt(i); (c = *s) != '\n'; ++s) { + if (pflag != 'l') + goto print_char; + switch (c) { + case '$': + str = "\\$"; + goto print_str; + case '\t': + str = "\\t"; + goto print_str; + case '\b': + str = "\\b"; + goto print_str; + case '\\': + str = "\\\\"; + goto print_str; + default: + if (!isprint(c)) { + printf("\\x%x", 0xFF & c); + break; + } + print_char: + putchar(c); + break; + print_str: + fputs(str, stdout); + break; + } + } + if (pflag == 'l') + fputs("$", stdout); + putc('\n', stdout); + } + curln = i - 1; +} + +static void +dohelp(void) +{ + if (lasterr) + puts(lasterr); +} + +static void +chkprint(int flag) +{ + int c; + + if (flag) { + if ((c = input()) == 'p' || c == 'l' || c == 'n') + pflag = c; + else + back(c); + } + if ((c = input()) != '\0' && c != '\n') + error("invalid command suffix"); +} + +static char * +getfname(int comm) +{ + int c; + char *bp; + static char fname[FILENAME_MAX]; + + skipblank(); + for (bp = fname; bp < &fname[FILENAME_MAX]; *bp++ = c) { + if ((c = input()) == '\0') + break; + } + if (bp == fname) { + if (savfname[0] == '\0') + error("no current filename"); + return savfname; + } else if (bp == &fname[FILENAME_MAX]) { + error("file name too long"); + } else { + *bp = '\0'; + if (savfname[0] == '\0' || comm == 'e' || comm == 'f') + strcpy(savfname, fname); + return fname; + } + + return NULL; /* not reached */ +} + +static void +append(int num) +{ + int ch; + static String line; + + curln = num; + while (moreinput()) { + string(&line); + while ((ch = input()) != '\n' && ch != '\0') + addchar(ch, &line); + addchar('\n', &line); + addchar('\0', &line); + + if (!strcmp(line.str, ".\n") || !strcmp(line.str, ".")) + break; + inject(line.str, AFTER); + } +} + +static void +delete(int from, int to) +{ + int lto, lfrom; + + if (!from) + error("incorrect address"); + + lfrom = getindex(prevln(from)); + lto = getindex(nextln(to)); + lastln -= to - from + 1; + curln = (from > lastln) ? lastln : from;; + relink(lto, lfrom, lto, lfrom); +} + +static void +move(int where) +{ + int before, after, lto, lfrom; + + if (!line1 || (where >= line1 && where <= line2)) + error("incorrect address"); + + before = getindex(prevln(line1)); + after = getindex(nextln(line2)); + lfrom = getindex(line1); + lto = getindex(line2); + relink(after, before, after, before); + + if (where < line1) { + curln = where + line1 - line2 + 1; + } else { + curln = where; + where -= line1 - line2 + 1; + } + before = getindex(where); + after = getindex(nextln(where)); + relink(lfrom, before, lfrom, before); + relink(after, lto, after, lto); +} + +static void +join(void) +{ + int i; + char *t, c; + static String s; + + string(&s); + for (i = line1;; i = nextln(i)) { + chksignals(); + for (t = gettxt(i); (c = *t) != '\n'; ++t) + addchar(*t, &s); + if (i == line2) + break; + } + + addchar('\n', &s); + addchar('\0', &s); + delete(line1, line2); + inject(s.str, BEFORE); + free(s.str); +} + +static void +scroll(int num) +{ + int max, ln, cnt; + + if (!line1 || line1 == lastln) + error("incorrect address"); + + ln = line1; + max = line1 + num; + if (max > lastln) + max = lastln; + for (cnt = line1; cnt < max; cnt++) { + chksignals(); + fputs(gettxt(ln), stdout); + ln = nextln(ln); + } + curln = ln; +} + +static void +copy(int where) +{ + + if (!line1) + error("incorrect address"); + curln = where; + + while (line1 <= line2) { + chksignals(); + inject(gettxt(line1), AFTER); + if (line2 >= curln) + line2 = nextln(line2); + line1 = nextln(line1); + if (line1 >= curln) + line1 = nextln(line1); + } +} + +static void +execsh(void) +{ + static String cmd; + char *p; + int c, repl = 0; + + skipblank(); + if ((c = input()) != '!') { + back(c); + string(&cmd); + } else if (cmd.siz) { + --cmd.siz; + repl = 1; + } else { + error("no previous command"); + } + + while ((c = input()) != '\0') { + switch (c) { + case '%': + if (savfname[0] == '\0') + error("no current filename"); + repl = 1; + for (p = savfname; *p; ++p) + addchar(*p, &cmd); + break; + case '\\': + c = input(); + if (c != '%') { + back(c); + c = '\\'; + } + default: + addchar(c, &cmd); + } + } + addchar('\0', &cmd); + + if (repl) + puts(cmd.str); + system(cmd.str); + if (optdiag) + puts("!"); +} + +static void +getrhs(int delim) +{ + int c; + static String s; + + string(&s); + while ((c = input()) != '\0' && c != delim) + addchar(c, &s); + addchar('\0', &s); + if (c == '\0') { + pflag = 'p'; + back(c); + } + + if (!strcmp("%", s.str)) { + if (!rhs) + error("no previous substitution"); + free(s.str); + } else { + free(rhs); + rhs = s.str; + } + s.str = NULL; +} + +static int +getnth(void) +{ + int c; + + if ((c = input()) == 'g') { + return -1; + } else if (isdigit(c)) { + if (c == '0') + return -1; + return c - '0'; + } else { + back(c); + return 1; + } +} + +static void +addpre(String *s) +{ + char *p; + + for (p = lastmatch; p < lastmatch + matchs[0].rm_so; ++p) + addchar(*p, s); +} + +static void +addpost(String *s) +{ + char c, *p; + + for (p = lastmatch + matchs[0].rm_eo; (c = *p); ++p) + addchar(c, s); + addchar('\0', s); +} + +static int +addsub(String *s, int nth, int nmatch) +{ + char *end, *q, *p, c; + int sub; + + if (nth != nmatch && nth != -1) { + q = lastmatch + matchs[0].rm_so; + end = lastmatch + matchs[0].rm_eo; + while (q < end) + addchar(*q++, s); + return 0; + } + + for (p = rhs; (c = *p); ++p) { + switch (c) { + case '&': + sub = 0; + goto copy_match; + case '\\': + if ((c = *++p) == '\0') + return 1; + if (!isdigit(c)) + goto copy_char; + sub = c - '0'; + copy_match: + q = lastmatch + matchs[sub].rm_so; + end = lastmatch + matchs[sub].rm_eo; + while (q < end) + addchar(*q++, s); + break; + default: + copy_char: + addchar(c, s); + break; + } + } + return 1; +} + +static void +subline(int num, int nth) +{ + int i, m, changed; + static String s; + + string(&s); + i = changed = 0; + for (m = match(num); m; m = rematch(num)) { + chksignals(); + addpre(&s); + changed |= addsub(&s, nth, ++i); + if (eol || bol) + break; + } + if (!changed) + return; + addpost(&s); + delete(num, num); + curln = prevln(num); + inject(s.str, AFTER); +} + +static void +subst(int nth) +{ + int i, line, next; + + line = line1; + for (i = 0; i < line2 - line1 + 1; i++) { + chksignals(); + + next = getindex(nextln(line)); + subline(line, nth); + + /* + * The substitution command can add lines, so + * we have to skip lines until we find the + * index that we saved before the substitution + */ + do + line = nextln(line); + while (getindex(line) != next); + } +} + +static void +docmd(void) +{ + int cmd, c, line3, num, trunc; + +repeat: + skipblank(); + cmd = input(); + trunc = pflag = 0; + switch (cmd) { + case '&': + skipblank(); + chkprint(0); + if (!ocmdline) + error("no previous command"); + setinput(ocmdline); + getlst(); + goto repeat; + case '!': + execsh(); + break; + case '\0': + num = gflag ? curln : curln+1; + deflines(num, num); + line1 = line2; + pflag = 'p'; + goto print; + case 'l': + case 'n': + case 'p': + back(cmd); + chkprint(1); + deflines(curln, curln); + goto print; + case 'g': + case 'G': + case 'v': + case 'V': + error("cannot nest global commands"); + case 'H': + if (nlines > 0) + goto unexpected; + chkprint(0); + optverbose ^= 1; + break; + case 'h': + if (nlines > 0) + goto unexpected; + chkprint(0); + dohelp(); + break; + case 'w': + trunc = 1; + case 'W': + ensureblank(); + deflines(nextln(0), lastln); + dowrite(getfname(cmd), trunc); + break; + case 'r': + ensureblank(); + if (nlines > 1) + goto bad_address; + deflines(lastln, lastln); + doread(getfname(cmd)); + break; + case 'd': + chkprint(1); + deflines(curln, curln); + delete(line1, line2); + break; + case '=': + if (nlines > 1) + goto bad_address; + chkprint(1); + deflines(lastln, lastln); + printf("%d\n", line1); + break; + case 'u': + if (nlines > 0) + goto bad_address; + chkprint(1); + if (udata.nr == 0) + error("nothing to undo"); + undo(); + break; + case 's': + deflines(curln, curln); + c = input(); + compile(c); + getrhs(c); + num = getnth(); + chkprint(1); + subst(num); + break; + case 'i': + if (nlines > 1) + goto bad_address; + chkprint(1); + deflines(curln, curln); + if (!line1) + line1++; + append(prevln(line1)); + break; + case 'a': + if (nlines > 1) + goto bad_address; + chkprint(1); + deflines(curln, curln); + append(line1); + break; + case 'm': + deflines(curln, curln); + if (!address(&line3)) + line3 = curln; + chkprint(1); + move(line3); + break; + case 't': + deflines(curln, curln); + if (!address(&line3)) + line3 = curln; + chkprint(1); + copy(line3); + break; + case 'c': + chkprint(1); + deflines(curln, curln); + delete(line1, line2); + append(prevln(line1)); + break; + case 'j': + chkprint(1); + deflines(curln, curln+1); + if (line1 != line2 && curln != 0) + join(); + break; + case 'z': + if (nlines > 1) + goto bad_address; + if (isdigit(back(input()))) + num = getnum(); + else + num = 24; + chkprint(1); + scroll(num); + break; + case 'k': + if (nlines > 1) + goto bad_address; + if (!islower(c = input())) + error("invalid mark character"); + chkprint(1); + deflines(curln, curln); + marks[c - 'a'] = line1; + break; + case 'P': + if (nlines > 0) + goto unexpected; + chkprint(1); + optprompt ^= 1; + break; + case 'Q': + modflag = 0; + case 'q': + if (nlines > 0) + goto unexpected; + if (modflag) + goto modified; + quit(); + break; + case 'f': + ensureblank(); + if (nlines > 0) + goto unexpected; + if (back(input()) != '\0') + getfname(cmd); + else + puts(savfname); + chkprint(0); + break; + case 'E': + modflag = 0; + case 'e': + ensureblank(); + if (nlines > 0) + goto unexpected; + if (modflag) + goto modified; + getfname(cmd); + setscratch(); + deflines(curln, curln); + doread(savfname); + clearundo(); + break; + default: + error("unknown command"); + bad_address: + error("invalid address"); + modified: + modflag = 0; + error("warning: file modified"); + unexpected: + error("unexpected address"); + } + + if (!pflag) + return; + line1 = line2 = curln; + +print: + doprint(); +} + +static int +chkglobal(void) +{ + int delim, c, dir, i, v; + + uflag = 1; + gflag = 0; + skipblank(); + + switch (c = input()) { + case 'g': + uflag = 0; + case 'G': + dir = 1; + break; + case 'v': + uflag = 0; + case 'V': + dir = 0; + break; + default: + back(c); + return 0; + } + gflag = 1; + deflines(nextln(0), lastln); + delim = input(); + compile(delim); + + for (i = 1; i <= lastln; ++i) { + chksignals(); + if (i >= line1 && i <= line2) + v = match(i) == dir; + else + v = 0; + setglobal(i, v); + } + + return 1; +} + +static void +savecmd(void) +{ + int ch; + + skipblank(); + ch = input(); + if (ch != '&') { + ocmdline = strdup(cmdline.str); + if (ocmdline == NULL) + error("out of memory"); + } + back(ch); +} + +static void +doglobal(void) +{ + int cnt, ln, k, idx; + + skipblank(); + gflag = 1; + if (uflag) + chkprint(0); + + ln = line1; + for (cnt = 0; cnt < lastln; ) { + chksignals(); + k = getindex(ln); + if (zero[k].global) { + zero[k].global = 0; + curln = ln; + nlines = 0; + + if (!uflag) { + idx = inputidx; + getlst(); + docmd(); + inputidx = idx; + continue; + } + + line1 = line2 = ln; + pflag = 0; + doprint(); + + for (;;) { + getinput(); + if (strcmp(cmdline.str, "") == 0) + break; + savecmd(); + getlst(); + docmd(); + } + + } else { + cnt++; + ln = nextln(ln); + } + } +} + +static void +usage(void) +{ + eprintf("usage: %s [-s] [-p] [file]\n", argv0); +} + +static void +sigintr(int n) +{ + intr = 1; +} + +static void +sighup(int dummy) +{ + hup = 1; +} + +static void +edit(void) +{ + for (;;) { + newcmd = 1; + ocurln = curln; + olastln = lastln; + if (optprompt) { + fputs(prompt, stdout); + fflush(stdout); + } + + getinput(); + getlst(); + chkglobal() ? doglobal() : docmd(); + } +} + +static void +init(char *fname) +{ + size_t len; + + setscratch(); + if (!fname) + return; + if ((len = strlen(fname)) >= FILENAME_MAX || len == 0) + error("incorrect filename"); + memcpy(savfname, fname, len); + doread(fname); + clearundo(); +} + +int +main(int argc, char *argv[]) +{ + ARGBEGIN { + case 'p': + prompt = EARGF(usage()); + optprompt = 1; + break; + case 's': + optdiag = 0; + break; + default: + usage(); + } ARGEND + + if (argc > 1) + usage(); + + if (!setjmp(savesp)) { + sigaction(SIGINT, + &(struct sigaction) {.sa_handler = sigintr}, + NULL); + sigaction(SIGHUP, + &(struct sigaction) {.sa_handler = sighup}, + NULL); + sigaction(SIGQUIT, + &(struct sigaction) {.sa_handler = SIG_IGN}, + NULL); + init(*argv); + } + edit(); + + /* not reached */ + return 0; +} diff --git a/util/sbase/env.1 b/util/sbase/env.1 new file mode 100644 index 00000000..f25f54b1 --- /dev/null +++ b/util/sbase/env.1 @@ -0,0 +1,47 @@ +.Dd October 8, 2015 +.Dt ENV 1 +.Os sbase +.Sh NAME +.Nm env +.Nd modify the environment, then print it or run a command +.Sh SYNOPSIS +.Nm +.Op Fl i +.Oo Fl u Ar var Oc ... +.Oo Ar var Ns = Ns Ar value Oc ... +.Oo Ar cmd Oo arg ... Oc Oc +.Sh DESCRIPTION +.Nm +unsets each +.Ar var , +then adds or sets each +.Ar ( var , value ) +tuple in the environment. +.Pp +If +.Ar cmd +is given, it is executed in this new environment; +otherwise, the modified environment is printed to stdout. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl i +Completely ignore the existing environment and execute +.Ar cmd +only with each +.Ar ( var , value ) +tuple specified. +.It Fl u Ar var +Unset +.Ar var +in the environment. +.El +.Sh SEE ALSO +.Xr printenv 1 , +.Xr putenv 3 , +.Xr environ 7 +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Op Fl u +flag is an extension to that specification. diff --git a/util/sbase/env.c b/util/sbase/env.c new file mode 100644 index 00000000..5d7e8a55 --- /dev/null +++ b/util/sbase/env.c @@ -0,0 +1,49 @@ +/* See LICENSE file for copyright and license details. */ +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "util.h" + +extern char **environ; + +static void +usage(void) +{ + eprintf("usage: %s [-i] [-u var] ... [var=value] ... [cmd [arg ...]]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int savederrno; + + ARGBEGIN { + case 'i': + *environ = NULL; + break; + case 'u': + if (unsetenv(EARGF(usage())) < 0) + eprintf("unsetenv:"); + break; + default: + usage(); + } ARGEND + + for (; *argv && strchr(*argv, '='); argc--, argv++) + putenv(*argv); + + if (*argv) { + execvp(*argv, argv); + savederrno = errno; + weprintf("execvp %s:", *argv); + _exit(126 + (savederrno == ENOENT)); + } + + for (; *environ; environ++) + puts(*environ); + + return fshut(stdout, "<stdout>"); +} diff --git a/util/sbase/expand.1 b/util/sbase/expand.1 new file mode 100644 index 00000000..9cf20fb4 --- /dev/null +++ b/util/sbase/expand.1 @@ -0,0 +1,47 @@ +.Dd October 8, 2015 +.Dt EXPAND 1 +.Os sbase +.Sh NAME +.Nm expand +.Nd expand tabs to spaces +.Sh SYNOPSIS +.Nm +.Op Fl i +.Op Fl t Ar tablist +.Op Ar file ... +.Sh DESCRIPTION +.Nm +converts tabs to spaces in each +.Ar file +as specified in +.Ar tablist . +If no file is given, +.Nm +reads from stdin. +.Pp +Backspace characters are preserved and decrement the column count +for tab calculations. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl i +Only expand tabs at the beginning of lines, i.e. expand each +line until a character different from '\et' and ' ' is reached. +.It Fl t Ar tablist +Specify tab size or tabstops. +.Ar tablist +is a list of one (in the former case) or multiple (in the latter case) +strictly positive integers separated by ' ' or ','. +.Pp +The default +.Ar tablist +is "8". +.El +.Sh SEE ALSO +.Xr fold 1 , +.Xr unexpand 1 +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Op Fl i +flag is an extension to that specification. diff --git a/util/sbase/expand.c b/util/sbase/expand.c new file mode 100644 index 00000000..f534134f --- /dev/null +++ b/util/sbase/expand.c @@ -0,0 +1,131 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdint.h> +#include <stdlib.h> +#include <string.h> + +#include "utf.h" +#include "util.h" + +static int iflag = 0; +static size_t *tablist = NULL; +static size_t tablistlen = 0; + +static size_t +parselist(const char *s) +{ + size_t i; + char *p, *tmp; + + tmp = estrdup(s); + for (i = 0; (p = strsep(&tmp, " ,")); i++) { + if (*p == '\0') + eprintf("empty field in tablist\n"); + tablist = ereallocarray(tablist, i + 1, sizeof(*tablist)); + tablist[i] = estrtonum(p, 1, MIN(LLONG_MAX, SIZE_MAX)); + if (i > 0 && tablist[i - 1] >= tablist[i]) + eprintf("tablist must be ascending\n"); + } + tablist = ereallocarray(tablist, i + 1, sizeof(*tablist)); + /* tab length = 1 for the overflowing case later in the matcher */ + tablist[i] = 1; + + return i; +} + +static int +expand(const char *file, FILE *fp) +{ + size_t bol = 1, col = 0, i; + Rune r; + + while (efgetrune(&r, fp, file)) { + switch (r) { + case '\t': + if (tablistlen == 1) + i = 0; + else for (i = 0; i < tablistlen; i++) + if (col < tablist[i]) + break; + if (bol || !iflag) { + do { + col++; + putchar(' '); + } while (col % tablist[i]); + } else { + putchar('\t'); + col = tablist[i]; + } + break; + case '\b': + bol = 0; + if (col) + col--; + putchar('\b'); + break; + case '\n': + bol = 1; + col = 0; + putchar('\n'); + break; + default: + col++; + if (r != ' ') + bol = 0; + efputrune(&r, stdout, "<stdout>"); + break; + } + } + + return 0; +} + +static void +usage(void) +{ + eprintf("usage: %s [-i] [-t tablist] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + FILE *fp; + int ret = 0; + char *tl = "8"; + + ARGBEGIN { + case 'i': + iflag = 1; + break; + case 't': + tl = EARGF(usage()); + if (!*tl) + eprintf("tablist cannot be empty\n"); + break; + default: + usage(); + } ARGEND + + tablistlen = parselist(tl); + + if (!argc) { + expand("<stdin>", stdin); + } else { + for (; *argv; argc--, argv++) { + if (!strcmp(*argv, "-")) { + *argv = "<stdin>"; + fp = stdin; + } else if (!(fp = fopen(*argv, "r"))) { + weprintf("fopen %s:", *argv); + ret = 1; + continue; + } + expand(*argv, fp); + if (fp != stdin && fshut(fp, *argv)) + ret = 1; + } + } + + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/expr.1 b/util/sbase/expr.1 new file mode 100644 index 00000000..4710fc40 --- /dev/null +++ b/util/sbase/expr.1 @@ -0,0 +1,101 @@ +.Dd October 8, 2015 +.Dt EXPR 1 +.Os sbase +.Sh NAME +.Nm expr +.Nd evaluate expression +.Sh SYNOPSIS +.Nm +.Ar expression +.Sh DESCRIPTION +.Nm +evaluates +.Ar expression +and writes the result to stdout. +.Pp +There are two elemental expressions, +.Sy integer +and +.Sy string . +Let +.Sy expr +be a non-elemental expression and +.Sy expr1 , +.Sy expr2 +arbitrary expressions. +Then +.Sy expr +has the recursive form +.Sy expr = [(] expr1 operand expr2 [)] . +.Pp +With +.Sy operand +being in order of increasing precedence: +.Bl -tag -width Ds +.It | +Evaluate to +.Sy expr1 +if it is neither an empty string nor 0; otherwise evaluate to +.Sy expr2 . +.It & +Evaluate to +.Sy expr1 +if +.Sy expr1 +and +.Sy expr2 +are neither empty strings nor 0; otherwise evaluate to 0. +.It = > >= < <= != +If +.Sy expr1 +and +.Sy expr2 +are integers, evaluate to 1 if the relation is true and 0 if it is false. +If +.Sy expr1 +and +.Sy expr2 +are strings, apply the relation to the return value of +.Xr strcmp 3 . +.It + - +If +.Sy expr1 +and +.Sy expr2 +are integers, evaluate to their sum or subtraction. +.It * / % +If +.Sy expr1 +and +.Sy expr2 +are integers, evaluate to their multiplication, division or remainder. +.It : +Evaluate to the number of characters matched in +.Sy expr1 +against +.Sy expr2 . expr2 +is anchored with an implicit '^'. +.Pp +You can't directly match the empty string, since zero matched characters +resolve equally to a failed match. +To work around this limitation, use "expr X'' : 'X$' instead of "expr '' +: '$'" +.El +.Sh EXIT STATUS +.Bl -tag -width Ds +.It 0 +.Ar expression +is neither an empty string nor 0. +.It 1 +.Ar expression +is an empty string or 0. +.It 2 +.Ar expression +is invalid. +.It > 2 +An error occurred. +.El +.Sh SEE ALSO +.Xr test 1 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/expr.c b/util/sbase/expr.c new file mode 100644 index 00000000..044c6c1a --- /dev/null +++ b/util/sbase/expr.c @@ -0,0 +1,244 @@ +/* See LICENSE file for copyright and license details. */ +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "utf.h" +#include "util.h" + +/* tokens, one-character operators represent themselves */ +enum { + VAL = CHAR_MAX + 1, GE, LE, NE +}; + +struct val { + char *str; + long long num; +}; + +static void +tonum(struct val *v) +{ + const char *errstr; + long long d; + + /* check if val is the result of an earlier calculation */ + if (!v->str) + return; + + d = strtonum(v->str, LLONG_MIN, LLONG_MAX, &errstr); + if (errstr) + enprintf(2, "error: expected integer, got %s\n", v->str); + v->num = d; +} + +static void +ezero(struct val *v) +{ + if (v->num != 0) + return; + enprintf(2, "division by zero\n"); +} + +static int +valcmp(struct val *a, struct val *b) +{ + int ret; + const char *err1, *err2; + long long d1, d2; + + d1 = strtonum(a->str, LLONG_MIN, LLONG_MAX, &err1); + d2 = strtonum(b->str, LLONG_MIN, LLONG_MAX, &err2); + + if (!err1 && !err2) { + ret = (d1 > d2) - (d1 < d2); + } else { + ret = strcmp(a->str, b->str); + } + + return ret; +} + +static void +match(struct val *vstr, struct val *vregx, struct val *ret) +{ + regex_t re; + regmatch_t matches[2]; + size_t anchlen; + char *s, *p, *anchreg; + char *str = vstr->str, *regx = vregx->str; + + /* anchored regex */ + anchlen = strlen(regx) + 1 + 1; + anchreg = emalloc(anchlen); + estrlcpy(anchreg, "^", anchlen); + estrlcat(anchreg, regx, anchlen); + enregcomp(3, &re, anchreg, 0); + free(anchreg); + + if (regexec(&re, str, 2, matches, 0)) { + regfree(&re); + ret->str = re.re_nsub ? "" : NULL; + return; + } else if (re.re_nsub) { + regfree(&re); + + s = str + matches[1].rm_so; + p = str + matches[1].rm_eo; + *p = '\0'; + ret->str = enstrdup(3, s); + return; + } else { + regfree(&re); + str += matches[0].rm_so; + ret->num = utfnlen(str, matches[0].rm_eo - matches[0].rm_so); + return; + } +} + +static void +doop(int *ophead, int *opp, struct val *valhead, struct val *valp) +{ + struct val ret = { .str = NULL, .num = 0 }, *a, *b; + int op; + + /* an operation "a op b" needs an operator and two values */ + if (opp[-1] == '(') + enprintf(2, "syntax error: extra (\n"); + if (valp - valhead < 2) + enprintf(2, "syntax error: missing expression or extra operator\n"); + + a = valp - 2; + b = valp - 1; + op = opp[-1]; + + switch (op) { + case '|': + if ( a->str && *a->str) ret.str = a->str; + else if (!a->str && a->num) ret.num = a->num; + else if ( b->str && *b->str) ret.str = b->str; + else ret.num = b->num; + break; + case '&': + if (((a->str && *a->str) || a->num) && + ((b->str && *b->str) || b->num)) { + ret.str = a->str; + ret.num = a->num; + } + break; + + case '=': ret.num = (valcmp(a, b) == 0); break; + case '>': ret.num = (valcmp(a, b) > 0); break; + case GE : ret.num = (valcmp(a, b) >= 0); break; + case '<': ret.num = (valcmp(a, b) < 0); break; + case LE : ret.num = (valcmp(a, b) <= 0); break; + case NE : ret.num = (valcmp(a, b) != 0); break; + + case '+': tonum(a); tonum(b); ret.num = a->num + b->num; break; + case '-': tonum(a); tonum(b); ret.num = a->num - b->num; break; + case '*': tonum(a); tonum(b); ret.num = a->num * b->num; break; + case '/': tonum(a); tonum(b); ezero(b); ret.num = a->num / b->num; break; + case '%': tonum(a); tonum(b); ezero(b); ret.num = a->num % b->num; break; + + case ':': match(a, b, &ret); break; + } + + valp[-2] = ret; +} + +static int +lex(char *s, struct val *v) +{ + int type = VAL; + char *ops = "|&=><+-*/%():"; + + if (s[0] && strchr(ops, s[0]) && !s[1]) { + /* one-char operand */ + type = s[0]; + } else if (s[0] && strchr("><!", s[0]) && s[1] == '=' && !s[2]) { + /* two-char operand */ + type = (s[0] == '>') ? GE : (s[0] == '<') ? LE : NE; + } + + return type; +} + +static int +parse(char *expr[], int numexpr) +{ + struct val *valhead, *valp, v = { .str = NULL, .num = 0 }; + int *ophead, *opp, type, lasttype = 0; + char prec[] = { + [ 0 ] = 0, [VAL] = 0, ['('] = 0, [')'] = 0, + ['|'] = 1, + ['&'] = 2, + ['='] = 3, ['>'] = 3, [GE] = 3, ['<'] = 3, [LE] = 3, [NE] = 3, + ['+'] = 4, ['-'] = 4, + ['*'] = 5, ['/'] = 5, ['%'] = 5, + [':'] = 6, + }; + + valp = valhead = enreallocarray(3, NULL, numexpr, sizeof(*valp)); + opp = ophead = enreallocarray(3, NULL, numexpr, sizeof(*opp)); + for (; *expr; expr++) { + switch ((type = lex(*expr, &v))) { + case VAL: + /* treatment of *expr is not known until + * doop(); treat as a string for now */ + valp->str = *expr; + valp++; + break; + case '(': + *opp++ = type; + break; + case ')': + if (lasttype == '(') + enprintf(2, "syntax error: empty ( )\n"); + while (opp > ophead && opp[-1] != '(') + doop(ophead, opp--, valhead, valp--); + if (opp == ophead) + enprintf(2, "syntax error: extra )\n"); + opp--; + break; + default: /* operator */ + if (prec[lasttype]) + enprintf(2, "syntax error: extra operator\n"); + while (opp > ophead && prec[opp[-1]] >= prec[type]) + doop(ophead, opp--, valhead, valp--); + *opp++ = type; + break; + } + lasttype = type; + v.str = NULL; + v.num = 0; + } + while (opp > ophead) + doop(ophead, opp--, valhead, valp--); + if (valp == valhead) + enprintf(2, "syntax error: missing expression\n"); + if (--valp > valhead) + enprintf(2, "syntax error: extra expression\n"); + + if (valp->str) + puts(valp->str); + else + printf("%lld\n", valp->num); + + return (valp->str && *valp->str) || valp->num; +} + +int +main(int argc, char *argv[]) +{ + int ret; + + argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0; + + ret = !parse(argv, argc); + + if (fshut(stdout, "<stdout>")) + ret = 3; + + return ret; +} diff --git a/util/sbase/false.1 b/util/sbase/false.1 new file mode 100644 index 00000000..e6adf570 --- /dev/null +++ b/util/sbase/false.1 @@ -0,0 +1,13 @@ +.Dd October 8, 2015 +.Dt FALSE 1 +.Os sbase +.Sh NAME +.Nm false +.Nd return failure +.Sh SYNOPSIS +.Nm +.Sh DESCRIPTION +.Nm +returns a status code indicating failure. +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/false.c b/util/sbase/false.c new file mode 100644 index 00000000..fce3fd98 --- /dev/null +++ b/util/sbase/false.c @@ -0,0 +1,6 @@ +/* See LICENSE file for copyright and license details. */ +int +main(void) +{ + return 1; +} diff --git a/util/sbase/find.1 b/util/sbase/find.1 new file mode 100644 index 00000000..00f26306 --- /dev/null +++ b/util/sbase/find.1 @@ -0,0 +1,151 @@ +.Dd July 30, 2025 +.Dt FIND 1 +.Os sbase +.Sh NAME +.Nm find +.Nd find files +.Sh SYNOPSIS +.Nm +.Op Fl H | L +.Ar path Op ... +.Op Ar expression +.Sh DESCRIPTION +.Nm +walks a file hierarchy starting at each +.Ar path +and applies the +.Ar expression +to each file encountered. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl H +Dereference symbolic links provided as +.Ar path . +.It Fl L +Dereference all symbolic links encountered. +.El +.Sh EXTENDED DESCRIPTION +.Ar expression +is a combination of the following primaries and boolean operators. +In the following descriptions the number n can be replaced by +n, n, or +-n, to mean more than, exactly, or less than n respectively. +.Ss Primaries +.Bl -tag -width Ds +.It Fl name Ar pattern +True if the name of the file matches the given pattern. +.It Fl path Ar pattern +True if the path to the file matches the given pattern. +.It Fl nouser +True if the file belongs to a user for which +.Xr getpwuid 3 +returns NULL. +.It Fl nogroup +True if the file belongs to a group for which +.Xr getgrgid 3 +returns NULL. +.It Fl xdev +True. +Do not enter directory on a different device. +.It Fl prune +True. +Do not enter directory. +.It Fl perm Ar mode +True if permissions on the file match mode. +Mode is a symbolic mode as used in chmod. +A leading '-' in mode checks that at least all bits in mode are set in +permissions for file. +Without the leading '-' the permissions for file must exactly match +mode. +.It Fl type Ar t +True if file is of type specified by +.Ar t . +.Bl -tag -width Ds +.It Ar b +block special +.It Ar c +character special +.It Ar d +directory +.It Ar l +symbolic link +.It Ar p +FIFO +.It Ar f +regular file +.It Ar s +socket +.El +.It Fl links Ar n +True if file has +.Ar n +links. +.It Fl user Ar name +True if file belongs to user +.Ar name . +.It Fl group Ar name +True if file belongs to group +.Ar name . +.It Fl size Ar n[c] +True if file size in 512 byte sectors (rounded up), or bytes (if +.Ar c +is given), is +.Ar n . +.It Fl atime n +True if file access time is +.Ar n +days. +.It Fl ctime +True if file status change time is +.Ar n +days. +.It Fl mtime +True if file modified time is +.Ar n +days. +.It Fl exec Ar cmd [arg ...] \&; +Execute cmd with given arguments, replacing each {} in argument list +with the current file. +True if cmd exits with status 0. +.It Fl exec Ar cmd [arg ...] {} + +True. +Add as many files as possible to argument list and execute when the list +is full or all files have been found. +.It Fl ok Ar cmd [arg ...] \&; +Prompt the user on each file encountered whether or not to execute cmd +as with -exec. +True if the user responds yes and cmd exits with status 0, false +otherwise. +.It Fl print +True. +Print the current pathname followed by a newline ('\en') character. +.It Fl print0 +True. +Print the current pathname followed by a NUL ('\e0') character. +.It Fl newer Ar file +True if the modification time of the current file is newer than that of +the provided file. +.It Fl depth +True. +Causes find to evaluate files within in a directory before the directory +itself. +.El +.Ss Operators +In order of decreasing precedence +.Bl -tag -width Ds +.It Ar \&( expression \&) +True if expression is true. +.It Ar \&! expression +True if expression if false. +.It Ar expression [ Fl a ] Ar expression +True if both expressions are true. +Second expression is not evaluated if first expression is false. +.Fl a +is implied if there is no operator between primaries. +.It Ar expression Fl o Ar expression +True if either expression is true. +Second expression is not evaluated if first expression is true. +.El +.Pp +If no expression is supplied, -print is used. +If an expression is supplied but none of -print, -exec, or -ok is +supplied, then -a -print is appended to the expressions. diff --git a/util/sbase/find.c b/util/sbase/find.c new file mode 100644 index 00000000..5bc1a1f1 --- /dev/null +++ b/util/sbase/find.c @@ -0,0 +1,1103 @@ +/* See LICENSE file for copyright and license details. */ +#include <dirent.h> +#include <errno.h> +#include <fnmatch.h> +#include <grp.h> +#include <libgen.h> +#include <pwd.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <unistd.h> + +#include <sys/stat.h> +#include <sys/wait.h> + +#include "util.h" + +/* because putting integers in pointers is undefined by the standard */ +union extra { + void *p; + intmax_t i; +}; + +/* Argument passed into a primary's function */ +struct arg { + char *path; + struct stat *st; + union extra extra; +}; + +/* Information about each primary, for lookup table */ +struct pri_info { + char *name; + int (*func)(struct arg *arg); + char **(*getarg)(char **argv, union extra *extra); + void (*freearg)(union extra extra); + char narg; /* -xdev, -depth, -print don't take args but have getarg() */ +}; + +/* Information about operators, for lookup table */ +struct op_info { + char *name; /* string representation of op */ + char type; /* from tok.type */ + char prec; /* precedence */ + char nargs; /* number of arguments (unary or binary) */ + char lassoc; /* left associative */ +}; + +/* Token when lexing/parsing + * (although also used for the expression tree) */ +struct tok { + struct tok *left, *right; /* if (type == NOT) left = NULL */ + union extra extra; + union { + struct pri_info *pinfo; /* if (type == PRIM) */ + struct op_info *oinfo; + } u; + enum { + PRIM = 0, LPAR, RPAR, NOT, AND, OR, END + } type; +}; + +/* structures used for arg.extra.p and tok.extra.p */ +struct permarg { + mode_t mode; + char exact; +}; + +struct okarg { + char ***braces; + char **argv; +}; + +/* for all arguments that take a number + * +n, n, -n mean > n, == n, < n respectively */ +struct narg { + int (*cmp)(int a, int b); + int n; +}; + +struct sizearg { + struct narg n; + char bytes; /* size is in bytes, not 512 byte sectors */ +}; + +struct execarg { + union { + struct { + char ***braces; /* NULL terminated list of pointers into argv where {} were */ + } s; /* semicolon */ + struct { + size_t arglen; /* number of bytes in argv before files are added */ + size_t filelen; /* numer of bytes in file names added to argv */ + size_t first; /* index one past last arg, where first file goes */ + size_t next; /* index where next file goes */ + size_t cap; /* capacity of argv */ + } p; /* plus */ + } u; + char **argv; /* NULL terminated list of arguments (allocated if isplus) */ + char isplus; /* -exec + instead of -exec ; */ +}; + +/* used to find loops while recursing through directory structure */ +struct findhist { + struct findhist *next; + char *path; + dev_t dev; + ino_t ino; +}; + +/* Utility */ +static int spawn(char *argv[]); +static int do_stat(char *path, struct stat *sb, struct findhist *hist); + +/* Primaries */ +static int pri_name (struct arg *arg); +static int pri_path (struct arg *arg); +static int pri_nouser (struct arg *arg); +static int pri_nogroup(struct arg *arg); +static int pri_xdev (struct arg *arg); +static int pri_prune (struct arg *arg); +static int pri_perm (struct arg *arg); +static int pri_type (struct arg *arg); +static int pri_links (struct arg *arg); +static int pri_user (struct arg *arg); +static int pri_group (struct arg *arg); +static int pri_size (struct arg *arg); +static int pri_atime (struct arg *arg); +static int pri_ctime (struct arg *arg); +static int pri_mtime (struct arg *arg); +static int pri_exec (struct arg *arg); +static int pri_ok (struct arg *arg); +static int pri_print (struct arg *arg); +static int pri_print0 (struct arg *arg); +static int pri_newer (struct arg *arg); +static int pri_depth (struct arg *arg); + +/* Getargs */ +static char **get_name_arg (char *argv[], union extra *extra); +static char **get_path_arg (char *argv[], union extra *extra); +static char **get_xdev_arg (char *argv[], union extra *extra); +static char **get_perm_arg (char *argv[], union extra *extra); +static char **get_type_arg (char *argv[], union extra *extra); +static char **get_n_arg (char *argv[], union extra *extra); +static char **get_user_arg (char *argv[], union extra *extra); +static char **get_group_arg(char *argv[], union extra *extra); +static char **get_size_arg (char *argv[], union extra *extra); +static char **get_exec_arg (char *argv[], union extra *extra); +static char **get_ok_arg (char *argv[], union extra *extra); +static char **get_print_arg(char *argv[], union extra *extra); +static char **get_newer_arg(char *argv[], union extra *extra); +static char **get_depth_arg(char *argv[], union extra *extra); + +/* Freeargs */ +static void free_extra (union extra extra); +static void free_exec_arg(union extra extra); +static void free_ok_arg (union extra extra); + +/* Parsing/Building/Running */ +static void fill_narg(char *s, struct narg *n); +static struct pri_info *find_primary(char *name); +static struct op_info *find_op(char *name); +static void parse(int argc, char **argv); +static int eval(struct tok *tok, struct arg *arg); +static void find(char *path, struct findhist *hist); +static void usage(void); + +/* for comparisons with narg */ +static int cmp_gt(int a, int b) { return a > b; } +static int cmp_eq(int a, int b) { return a == b; } +static int cmp_lt(int a, int b) { return a < b; } + +/* order from find(1p), may want to alphabetize */ +static struct pri_info primaries[] = { + { "-name" , pri_name , get_name_arg , NULL , 1 }, + { "-path" , pri_path , get_path_arg , NULL , 1 }, + { "-nouser" , pri_nouser , NULL , NULL , 1 }, + { "-nogroup", pri_nogroup, NULL , NULL , 1 }, + { "-xdev" , pri_xdev , get_xdev_arg , NULL , 0 }, + { "-prune" , pri_prune , NULL , NULL , 1 }, + { "-perm" , pri_perm , get_perm_arg , free_extra , 1 }, + { "-type" , pri_type , get_type_arg , NULL , 1 }, + { "-links" , pri_links , get_n_arg , free_extra , 1 }, + { "-user" , pri_user , get_user_arg , NULL , 1 }, + { "-group" , pri_group , get_group_arg, NULL , 1 }, + { "-size" , pri_size , get_size_arg , free_extra , 1 }, + { "-atime" , pri_atime , get_n_arg , free_extra , 1 }, + { "-ctime" , pri_ctime , get_n_arg , free_extra , 1 }, + { "-mtime" , pri_mtime , get_n_arg , free_extra , 1 }, + { "-exec" , pri_exec , get_exec_arg , free_exec_arg, 1 }, + { "-ok" , pri_ok , get_ok_arg , free_ok_arg , 1 }, + { "-print" , pri_print , get_print_arg, NULL , 0 }, + { "-print0" , pri_print0 , get_print_arg, NULL , 0 }, + { "-newer" , pri_newer , get_newer_arg, NULL , 1 }, + { "-depth" , pri_depth , get_depth_arg, NULL , 0 }, + + { NULL, NULL, NULL, NULL, 0 } +}; + +static struct op_info ops[] = { + { "(" , LPAR, 0, 0, 0 }, /* parens are handled specially */ + { ")" , RPAR, 0, 0, 0 }, + { "!" , NOT , 3, 1, 0 }, + { "-a", AND , 2, 2, 1 }, + { "-o", OR , 1, 2, 1 }, + + { NULL, 0, 0, 0, 0 } +}; + +extern char **environ; + +static struct tok *toks; /* holds allocated array of all toks created while parsing */ +static struct tok *root; /* points to root of expression tree, inside toks array */ + +static struct timespec start; /* time find was started, used for -[acm]time */ + +static size_t envlen; /* number of bytes in environ, used to calculate against ARG_MAX */ +static size_t argmax; /* value of ARG_MAX retrieved using sysconf(3p) */ + +static struct { + char ret ; /* return value from main */ + char depth; /* -depth, directory contents before directory itself */ + char h ; /* -H, follow symlinks on command line */ + char l ; /* -L, follow all symlinks (command line and search) */ + char prune; /* hit -prune */ + char xdev ; /* -xdev, prune directories on different devices */ + char print; /* whether we will need -print when parsing */ +} gflags; + +/* + * Utility + */ +static int +spawn(char *argv[]) +{ + pid_t pid; + int status; + + /* flush stdout so that -print output always appears before + * any output from the command and does not get cut-off in + * the middle of a line. */ + fflush(stdout); + + switch((pid = fork())) { + case -1: + eprintf("fork:"); + case 0: + execvp(*argv, argv); + weprintf("exec %s failed:", *argv); + _exit(1); + } + + /* FIXME: proper course of action for waitpid() on EINTR? */ + waitpid(pid, &status, 0); + return status; +} + +static int +do_stat(char *path, struct stat *sb, struct findhist *hist) +{ + if (gflags.l || (gflags.h && !hist)) { + if (stat(path, sb) == 0) { + return 0; + } else if (errno != ENOENT && errno != ENOTDIR) { + return -1; + } + } + + return lstat(path, sb); +} + +/* + * Primaries + */ +static int +pri_name(struct arg *arg) +{ + int ret; + char *path; + + path = estrdup(arg->path); + ret = !fnmatch((char *)arg->extra.p, basename(path), 0); + free(path); + + return ret; +} + +static int +pri_path(struct arg *arg) +{ + return !fnmatch((char *)arg->extra.p, arg->path, 0); +} + +/* FIXME: what about errors? find(1p) literally just says + * "for which the getpwuid() function ... returns NULL" */ +static int +pri_nouser(struct arg *arg) +{ + return !getpwuid(arg->st->st_uid); +} + +static int +pri_nogroup(struct arg *arg) +{ + return !getgrgid(arg->st->st_gid); +} + +static int +pri_xdev(struct arg *arg) +{ + return 1; +} + +static int +pri_prune(struct arg *arg) +{ + return gflags.prune = 1; +} + +static int +pri_perm(struct arg *arg) +{ + struct permarg *p = (struct permarg *)arg->extra.p; + + return (arg->st->st_mode & 07777 & (p->exact ? -1U : p->mode)) == p->mode; +} + +static int +pri_type(struct arg *arg) +{ + switch ((char)arg->extra.i) { + default : return 0; /* impossible, but placate warnings */ + case 'b': return S_ISBLK (arg->st->st_mode); + case 'c': return S_ISCHR (arg->st->st_mode); + case 'd': return S_ISDIR (arg->st->st_mode); + case 'l': return S_ISLNK (arg->st->st_mode); + case 'p': return S_ISFIFO(arg->st->st_mode); + case 'f': return S_ISREG (arg->st->st_mode); + case 's': return S_ISSOCK(arg->st->st_mode); + } +} + +static int +pri_links(struct arg *arg) +{ + struct narg *n = arg->extra.p; + return n->cmp(arg->st->st_nlink, n->n); +} + +static int +pri_user(struct arg *arg) +{ + return arg->st->st_uid == (uid_t)arg->extra.i; +} + +static int +pri_group(struct arg *arg) +{ + return arg->st->st_gid == (gid_t)arg->extra.i; +} + +static int +pri_size(struct arg *arg) +{ + struct sizearg *s = arg->extra.p; + off_t size = arg->st->st_size; + + if (!s->bytes) + size = size / 512 + !!(size % 512); + + return s->n.cmp(size, s->n.n); +} + +/* FIXME: ignoring nanoseconds in atime, ctime, mtime */ +static int +pri_atime(struct arg *arg) +{ + struct narg *n = arg->extra.p; + return n->cmp((start.tv_sec - arg->st->st_atime) / 86400, n->n); +} + +static int +pri_ctime(struct arg *arg) +{ + struct narg *n = arg->extra.p; + return n->cmp((start.tv_sec - arg->st->st_ctime) / 86400, n->n); +} + +static int +pri_mtime(struct arg *arg) +{ + struct narg *n = arg->extra.p; + return n->cmp((start.tv_sec - arg->st->st_mtime) / 86400, n->n); +} + +static int +pri_exec(struct arg *arg) +{ + int status; + size_t len; + char **sp, ***brace; + struct execarg *e = arg->extra.p; + + if (e->isplus) { + len = strlen(arg->path) + 1; + + /* if we reached ARG_MAX, fork, exec, wait, free file names, reset list */ + if (len + e->u.p.arglen + e->u.p.filelen + envlen > argmax) { + e->argv[e->u.p.next] = NULL; + + status = spawn(e->argv); + gflags.ret = gflags.ret || status; + + for (sp = e->argv + e->u.p.first; *sp; sp++) + free(*sp); + + e->u.p.next = e->u.p.first; + e->u.p.filelen = 0; + } + + /* if we have too many files, realloc (with space for NULL termination) */ + if (e->u.p.next + 1 == e->u.p.cap) + e->argv = ereallocarray(e->argv, e->u.p.cap *= 2, sizeof(*e->argv)); + + e->argv[e->u.p.next++] = estrdup(arg->path); + e->u.p.filelen += len + sizeof(arg->path); + + return 1; + } else { + /* insert path everywhere user gave us {} */ + for (brace = e->u.s.braces; *brace; brace++) + **brace = arg->path; + + status = spawn(e->argv); + return !status; + } +} + +static int +pri_ok(struct arg *arg) +{ + int status, reply; + char ***brace, c; + struct okarg *o = arg->extra.p; + + fprintf(stderr, "%s: %s ? ", *o->argv, arg->path); + reply = fgetc(stdin); + + /* throw away rest of line */ + while ((c = fgetc(stdin)) != '\n' && c != EOF) + /* FIXME: what if the first character of the rest of the line is a null + * byte? */ + ; + + if (feof(stdin)) /* FIXME: ferror()? */ + clearerr(stdin); + + if (reply != 'y' && reply != 'Y') + return 0; + + /* insert filename everywhere user gave us {} */ + for (brace = o->braces; *brace; brace++) + **brace = arg->path; + + status = spawn(o->argv); + return !!status; +} + +static int +pri_print(struct arg *arg) +{ + if (puts(arg->path) == EOF) + eprintf("puts failed:"); + return 1; +} + +static int +pri_print0(struct arg *arg) +{ + if (fwrite(arg->path, strlen(arg->path) + 1, 1, stdout) != 1) + eprintf("fwrite failed:"); + return 1; +} + +/* FIXME: ignoring nanoseconds */ +static int +pri_newer(struct arg *arg) +{ + return arg->st->st_mtime > (time_t)arg->extra.i; +} + +static int +pri_depth(struct arg *arg) +{ + return 1; +} + +/* + * Getargs + * consume any arguments for given primary and fill extra + * return pointer to last argument, the pointer will be incremented in parse() + */ +static char ** +get_name_arg(char *argv[], union extra *extra) +{ + extra->p = *argv; + return argv; +} + +static char ** +get_path_arg(char *argv[], union extra *extra) +{ + extra->p = *argv; + return argv; +} + +static char ** +get_xdev_arg(char *argv[], union extra *extra) +{ + gflags.xdev = 1; + return argv; +} + +static char ** +get_perm_arg(char *argv[], union extra *extra) +{ + mode_t mask; + struct permarg *p = extra->p = emalloc(sizeof(*p)); + + if (**argv == '-') + (*argv)++; + else + p->exact = 1; + + mask = umask(0); + umask(mask); + + p->mode = parsemode(*argv, 0, mask); + + return argv; +} + +static char ** +get_type_arg(char *argv[], union extra *extra) +{ + if (!strchr("bcdlpfs", **argv)) + eprintf("invalid type %c for -type primary\n", **argv); + + extra->i = **argv; + return argv; +} + +static char ** +get_n_arg(char *argv[], union extra *extra) +{ + struct narg *n = extra->p = emalloc(sizeof(*n)); + fill_narg(*argv, n); + return argv; +} + +static char ** +get_user_arg(char *argv[], union extra *extra) +{ + char *end; + struct passwd *p = getpwnam(*argv); + + if (p) { + extra->i = p->pw_uid; + } else { + extra->i = strtol(*argv, &end, 10); + if (end == *argv || *end) + eprintf("unknown user '%s'\n", *argv); + } + return argv; +} + +static char ** +get_group_arg(char *argv[], union extra *extra) +{ + char *end; + struct group *g = getgrnam(*argv); + + if (g) { + extra->i = g->gr_gid; + } else { + extra->i = strtol(*argv, &end, 10); + if (end == *argv || *end) + eprintf("unknown group '%s'\n", *argv); + } + return argv; +} + +static char ** +get_size_arg(char *argv[], union extra *extra) +{ + char *p = *argv + strlen(*argv); + struct sizearg *s = extra->p = emalloc(sizeof(*s)); + /* if the number is followed by 'c', the size will by in bytes */ + if ((s->bytes = (p > *argv && *--p == 'c'))) + *p = '\0'; + + fill_narg(*argv, &s->n); + return argv; +} + +static char ** +get_exec_arg(char *argv[], union extra *extra) +{ + char **arg, **new, ***braces; + int nbraces = 0; + struct execarg *e = extra->p = emalloc(sizeof(*e)); + + for (arg = argv; *arg; arg++) + if (!strcmp(*arg, ";")) + break; + else if (arg > argv && !strcmp(*(arg - 1), "{}") && !strcmp(*arg, "+")) + break; + else if (!strcmp(*arg, "{}")) + nbraces++; + + if (!*arg) + eprintf("no terminating ; or {} + for -exec primary\n"); + + e->isplus = **arg == '+'; + *arg = NULL; + + if (e->isplus) { + *(arg - 1) = NULL; /* don't need the {} in there now */ + e->u.p.arglen = e->u.p.filelen = 0; + e->u.p.first = e->u.p.next = arg - argv - 1; + e->u.p.cap = (arg - argv) * 2; + e->argv = ereallocarray(NULL, e->u.p.cap, sizeof(*e->argv)); + + for (arg = argv, new = e->argv; *arg; arg++, new++) { + *new = *arg; + e->u.p.arglen += strlen(*arg) + 1 + sizeof(*arg); + } + arg++; /* due to our extra NULL */ + } else { + e->argv = argv; + e->u.s.braces = ereallocarray(NULL, ++nbraces, sizeof(*e->u.s.braces)); /* ++ for NULL */ + + for (arg = argv, braces = e->u.s.braces; *arg; arg++) + if (!strcmp(*arg, "{}")) + *braces++ = arg; + *braces = NULL; + } + gflags.print = 0; + return arg; +} + +static char ** +get_ok_arg(char *argv[], union extra *extra) +{ + char **arg, ***braces; + int nbraces = 0; + struct okarg *o = extra->p = emalloc(sizeof(*o)); + + for (arg = argv; *arg; arg++) + if (!strcmp(*arg, ";")) + break; + else if (!strcmp(*arg, "{}")) + nbraces++; + + if (!*arg) + eprintf("no terminating ; for -ok primary\n"); + *arg = NULL; + + o->argv = argv; + o->braces = ereallocarray(NULL, ++nbraces, sizeof(*o->braces)); + + for (arg = argv, braces = o->braces; *arg; arg++) + if (!strcmp(*arg, "{}")) + *braces++ = arg; + *braces = NULL; + + gflags.print = 0; + return arg; +} + +static char ** +get_print_arg(char *argv[], union extra *extra) +{ + gflags.print = 0; + return argv; +} + +/* FIXME: ignoring nanoseconds */ +static char ** +get_newer_arg(char *argv[], union extra *extra) +{ + struct stat st; + + if (do_stat(*argv, &st, NULL)) + eprintf("failed to stat '%s':", *argv); + + extra->i = st.st_mtime; + return argv; +} + +static char ** +get_depth_arg(char *argv[], union extra *extra) +{ + gflags.depth = 1; + return argv; +} + +/* + * Freeargs + */ +static void +free_extra(union extra extra) +{ + free(extra.p); +} + +static void +free_exec_arg(union extra extra) +{ + int status; + char **arg; + struct execarg *e = extra.p; + + if (!e->isplus) { + free(e->u.s.braces); + } else { + e->argv[e->u.p.next] = NULL; + + /* if we have files, do the last exec */ + if (e->u.p.first != e->u.p.next) { + status = spawn(e->argv); + gflags.ret = gflags.ret || status; + } + for (arg = e->argv + e->u.p.first; *arg; arg++) + free(*arg); + free(e->argv); + } + free(e); +} + +static void +free_ok_arg(union extra extra) +{ + struct okarg *o = extra.p; + + free(o->braces); + free(o); +} + +/* + * Parsing/Building/Running + */ +static void +fill_narg(char *s, struct narg *n) +{ + char *end; + + switch (*s) { + case '+': n->cmp = cmp_gt; s++; break; + case '-': n->cmp = cmp_lt; s++; break; + default : n->cmp = cmp_eq; break; + } + n->n = strtol(s, &end, 10); + if (end == s || *end) + eprintf("bad number '%s'\n", s); +} + +static struct pri_info * +find_primary(char *name) +{ + struct pri_info *p; + + for (p = primaries; p->name; p++) + if (!strcmp(name, p->name)) + return p; + return NULL; +} + +static struct op_info * +find_op(char *name) +{ + struct op_info *o; + + for (o = ops; o->name; o++) + if (!strcmp(name, o->name)) + return o; + return NULL; +} + +/* given the expression from the command line + * 1) convert arguments from strings to tok and place in an array duplicating + * the infix expression given, inserting "-a" where it was omitted + * 2) allocate an array to hold the correct number of tok, and convert from + * infix to rpn (using shunting-yard), add -a and -print if necessary + * 3) evaluate the rpn filling in left and right pointers to create an + * expression tree (tok are still all contained in the rpn array, just + * pointing at eachother) + */ +static void +parse(int argc, char **argv) +{ + struct tok *tok, *rpn, *out, **top, *infix, **stack; + struct op_info *op; + struct pri_info *pri; + char **arg; + int lasttype = -1; + size_t ntok = 0; + struct tok and = { .u.oinfo = find_op("-a"), .type = AND }; + + gflags.print = 1; + + /* convert argv to infix expression of tok, inserting in *tok */ + infix = ereallocarray(NULL, 2 * argc + 1, sizeof(*infix)); + for (arg = argv, tok = infix; *arg; arg++, tok++) { + pri = find_primary(*arg); + + if (pri) { /* token is a primary, fill out tok and get arguments */ + if (lasttype == PRIM || lasttype == RPAR) { + *tok++ = and; + ntok++; + } + if (pri->getarg) { + if (pri->narg && !*++arg) + eprintf("no argument for primary %s\n", pri->name); + arg = pri->getarg(arg, &tok->extra); + } + tok->u.pinfo = pri; + tok->type = PRIM; + } else if ((op = find_op(*arg))) { /* token is an operator */ + if (lasttype == LPAR && op->type == RPAR) + eprintf("empty parens\n"); + if ((lasttype == PRIM || lasttype == RPAR) && + (op->type == NOT || op->type == LPAR)) { /* need another implicit -a */ + *tok++ = and; + ntok++; + } + tok->type = op->type; + tok->u.oinfo = op; + } else { + /* token is neither primary nor operator, must be */ + if ((*arg)[0] == '-') /* an unsupported option */ + eprintf("unknown operand: %s\n", *arg); + else /* or a path in the wrong place */ + eprintf("paths must precede expression: %s\n", *arg); + } + if (tok->type != LPAR && tok->type != RPAR) + ntok++; /* won't have parens in rpn */ + lasttype = tok->type; + } + tok->type = END; + ntok++; + + if (gflags.print && (arg != argv)) /* need to add -a -print (not just -print) */ + gflags.print++; + + /* use shunting-yard to convert from infix to rpn + * https://en.wikipedia.org/wiki/Shunting-yard_algorithm + * read from infix, resulting rpn ends up in rpn, next position in rpn is out + * push operators onto stack, next position in stack is top */ + rpn = ereallocarray(NULL, ntok + gflags.print, sizeof(*rpn)); + stack = ereallocarray(NULL, argc + gflags.print, sizeof(*stack)); + for (tok = infix, out = rpn, top = stack; tok->type != END; tok++) { + switch (tok->type) { + case PRIM: *out++ = *tok; break; + case LPAR: *top++ = tok; break; + case RPAR: + while (top-- > stack && (*top)->type != LPAR) + *out++ = **top; + if (top < stack) + eprintf("extra )\n"); + break; + default: + /* this expression can be simplified, but I decided copy the + * verbage from the wikipedia page in order to more clearly explain + * what's going on */ + while (top-- > stack && + (( tok->u.oinfo->lassoc && tok->u.oinfo->prec <= (*top)->u.oinfo->prec) || + (!tok->u.oinfo->lassoc && tok->u.oinfo->prec < (*top)->u.oinfo->prec))) + *out++ = **top; + + /* top now points to either an operator we didn't pop, or stack[-1] + * either way we need to increment it before using it, then + * increment again so the stack works */ + top++; + *top++ = tok; + break; + } + } + while (top-- > stack) { + if ((*top)->type == LPAR) + eprintf("extra (\n"); + *out++ = **top; + } + + /* if there was no expression, use -print + * if there was an expression but no -print, -exec, or -ok, add -a -print + * in rpn, not infix */ + if (gflags.print) + *out++ = (struct tok){ .u.pinfo = find_primary("-print"), .type = PRIM }; + if (gflags.print == 2) + *out++ = and; + + out->type = END; + + /* rpn now holds all operators and arguments in reverse polish notation + * values are pushed onto stack, operators pop values off stack into left + * and right pointers, pushing operator node back onto stack + * could probably just do this during shunting-yard, but this is simpler + * code IMO */ + for (tok = rpn, top = stack; tok->type != END; tok++) { + if (tok->type == PRIM) { + *top++ = tok; + } else { + if (top - stack < tok->u.oinfo->nargs) + eprintf("insufficient arguments for operator %s\n", tok->u.oinfo->name); + tok->right = *--top; + tok->left = tok->u.oinfo->nargs == 2 ? *--top : NULL; + *top++ = tok; + } + } + if (--top != stack) + eprintf("extra arguments\n"); + + toks = rpn; + root = *top; + + free(infix); + free(stack); +} + +/* for a primary, run and return result + * for an operator evaluate the left side of the tree, decide whether or not to + * evaluate the right based on the short-circuit boolean logic, return result + * NOTE: operator NOT has NULL left side, expression on right side + */ +static int +eval(struct tok *tok, struct arg *arg) +{ + int ret; + + if (!tok) + return 0; + + if (tok->type == PRIM) { + arg->extra = tok->extra; + return tok->u.pinfo->func(arg); + } + + ret = eval(tok->left, arg); + + if ((tok->type == AND && ret) || (tok->type == OR && !ret) || tok->type == NOT) + ret = eval(tok->right, arg); + + return ret ^ (tok->type == NOT); +} + +/* evaluate path, if it's a directory iterate through directory entries and + * recurse + */ +static void +find(char *path, struct findhist *hist) +{ + struct stat st; + DIR *dir; + struct dirent *de; + struct findhist *f, cur; + size_t namelen, pathcap = 0, len; + struct arg arg = { path, &st, { NULL } }; + char *p, *pathbuf = NULL; + + len = strlen(path) + 2; /* \0 and '/' */ + + if (do_stat(path, &st, hist) < 0) { + weprintf("failed to stat %s:", path); + gflags.ret = 1; + return; + } + + gflags.prune = 0; + + /* don't eval now iff we will hit the eval at the bottom which means + * 1. we are a directory 2. we have -depth 3. we don't have -xdev or we are + * on same device (so most of the time we eval here) */ + if (!S_ISDIR(st.st_mode) || + !gflags.depth || + (gflags.xdev && hist && st.st_dev != hist->dev)) + eval(root, &arg); + + if (!S_ISDIR(st.st_mode) || + gflags.prune || + (gflags.xdev && hist && st.st_dev != hist->dev)) + return; + + for (f = hist; f; f = f->next) { + if (f->dev == st.st_dev && f->ino == st.st_ino) { + weprintf("loop detected '%s' is '%s'\n", path, f->path); + gflags.ret = 1; + return; + } + } + cur.next = hist; + cur.path = path; + cur.dev = st.st_dev; + cur.ino = st.st_ino; + + if (!(dir = opendir(path))) { + weprintf("failed to opendir %s:", path); + gflags.ret = 1; + /* should we just ignore this since we hit an error? */ + if (gflags.depth) + eval(root, &arg); + return; + } + + while (errno = 0, (de = readdir(dir))) { + if (!strcmp(de->d_name, ".") || !strcmp(de->d_name, "..")) + continue; + namelen = strlen(de->d_name); + if (len + namelen > pathcap) { + pathcap = len + namelen; + pathbuf = erealloc(pathbuf, pathcap); + } + p = pathbuf + estrlcpy(pathbuf, path, pathcap); + if (*--p != '/') + estrlcat(pathbuf, "/", pathcap); + estrlcat(pathbuf, de->d_name, pathcap); + find(pathbuf, &cur); + } + free(pathbuf); + if (errno) { + weprintf("readdir %s:", path); + gflags.ret = 1; + closedir(dir); + return; + } + closedir(dir); + + if (gflags.depth) + eval(root, &arg); +} + +static void +usage(void) +{ + eprintf("usage: %s [-H | -L] path ... [expression ...]\n", argv0); +} + +int +main(int argc, char **argv) +{ + char **paths; + int npaths; + struct tok *t; + + ARGBEGIN { + case 'H': + gflags.h = 1; + gflags.l = 0; + break; + case 'L': + gflags.l = 1; + gflags.h = 0; + break; + default: + usage(); + } ARGEND + + paths = argv; + + for (; *argv && **argv != '-' && strcmp(*argv, "!") && strcmp(*argv, "("); argv++) + ; + + if (!(npaths = argv - paths)) + eprintf("must specify a path\n"); + + parse(argc - npaths, argv); + + /* calculate number of bytes in environ for -exec {} + ARG_MAX avoidance + * libc implementation defined whether null bytes, pointers, and alignment + * are counted, so count them */ + for (argv = environ; *argv; argv++) + envlen += strlen(*argv) + 1 + sizeof(*argv); + + if ((argmax = sysconf(_SC_ARG_MAX)) == (size_t)-1) + argmax = _POSIX_ARG_MAX; + + if (clock_gettime(CLOCK_REALTIME, &start) < 0) + weprintf("clock_gettime() failed:"); + + while (npaths--) + find(*paths++, NULL); + + for (t = toks; t->type != END; t++) + if (t->type == PRIM && t->u.pinfo->freearg) + t->u.pinfo->freearg(t->extra); + free(toks); + + gflags.ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return gflags.ret; +} diff --git a/util/sbase/flock.1 b/util/sbase/flock.1 new file mode 100644 index 00000000..9dfaf394 --- /dev/null +++ b/util/sbase/flock.1 @@ -0,0 +1,35 @@ +.Dd October 8, 2015 +.Dt FLOCK 1 +.Os sbase +.Sh NAME +.Nm flock +.Nd tool to manage locks on files +.Sh SYNOPSIS +.Nm +.Op Fl nosux +.Ar file +.Ar cmd Op arg ... +.Sh DESCRIPTION +.Nm +is used to manage advisory locks on open files. +It is commonly used to prevent long running cron jobs from running in +parallel. +If +.Ar file +does not exist, it will be created. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl n +Set non-blocking mode on the lock. +Fail immediately if the lock cannot be acquired. +.It Fl o +Close the file descriptor before exec to avoid having the exec'ed +program holding on to the lock. +.It Fl s +Acquire a shared lock. +.It Fl u +Release the lock. +.It Fl x +Acquire an exclusive lock. +This is the default. +.El diff --git a/util/sbase/flock.c b/util/sbase/flock.c new file mode 100644 index 00000000..fc2b6ed6 --- /dev/null +++ b/util/sbase/flock.c @@ -0,0 +1,82 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/file.h> +#include <sys/wait.h> + +#include <errno.h> +#include <fcntl.h> +#include <stdio.h> +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-nosux] file cmd [arg ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int fd, status, savederrno, flags = LOCK_EX, nonblk = 0, oflag = 0; + pid_t pid; + + ARGBEGIN { + case 'n': + nonblk = LOCK_NB; + break; + case 'o': + oflag = 1; + break; + case 's': + flags = LOCK_SH; + break; + case 'u': + flags = LOCK_UN; + break; + case 'x': + flags = LOCK_EX; + break; + default: + usage(); + } ARGEND + + if (argc < 2) + usage(); + + if ((fd = open(*argv, O_RDONLY | O_CREAT, 0644)) < 0) + eprintf("open %s:", *argv); + + if (flock(fd, flags | nonblk)) { + if (nonblk && errno == EWOULDBLOCK) + return 1; + eprintf("flock:"); + } + + switch ((pid = fork())) { + case -1: + eprintf("fork:"); + case 0: + if (oflag && close(fd) < 0) + eprintf("close:"); + argv++; + execvp(*argv, argv); + savederrno = errno; + weprintf("execvp %s:", *argv); + _exit(126 + (savederrno == ENOENT)); + default: + break; + } + if (waitpid(pid, &status, 0) < 0) + eprintf("waitpid:"); + + if (close(fd) < 0) + eprintf("close:"); + + if (WIFSIGNALED(status)) + return 128 + WTERMSIG(status); + if (WIFEXITED(status)) + return WEXITSTATUS(status); + + return 0; +} diff --git a/util/sbase/fold.1 b/util/sbase/fold.1 new file mode 100644 index 00000000..3c2a3e80 --- /dev/null +++ b/util/sbase/fold.1 @@ -0,0 +1,39 @@ +.Dd October 8, 2015 +.Dt FOLD 1 +.Os sbase +.Sh NAME +.Nm fold +.Nd wrap lines to width +.Sh SYNOPSIS +.Nm +.Op Fl bs +.Op Fl w Ar num | Fl Ns Ar num +.Op Ar file ... +.Sh DESCRIPTION +.Nm +reads each +.Ar file +and prints its lines wrapped such that no line +exceeds a certain width. +If no file is given, +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl b +Count bytes rather than characters. +.It Fl s +If a line contains spaces, break +at the last space within width. +.It Fl w Ar num | Fl Ns Ar num +Break at +.Ar num +characters. +The default is 80. +.El +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Op Fl Ns Ar num +syntax is an extension to that specification. diff --git a/util/sbase/fold.c b/util/sbase/fold.c new file mode 100644 index 00000000..6c7b9e7b --- /dev/null +++ b/util/sbase/fold.c @@ -0,0 +1,130 @@ +/* See LICENSE file for copyright and license details. */ +#include <ctype.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "text.h" +#include "util.h" +#include "utf.h" + +static int bflag = 0; +static int sflag = 0; +static size_t width = 80; + +static void +foldline(struct line *l, const char *fname) { + size_t i, col, last, spacesect, len; + Rune r; + int runelen; + + for (i = 0, last = 0, col = 0, spacesect = 0; i < l->len; i += runelen) { + if (col >= width && ((l->data[i] != '\r' && l->data[i] != '\b') || bflag)) { + if (bflag && col > width) + i -= runelen; /* never split a character */ + len = ((sflag && spacesect) ? spacesect : i) - last; + if (fwrite(l->data + last, 1, len, stdout) != len) + eprintf("fwrite <stdout>:"); + if (l->data[i] != '\n') + putchar('\n'); + if (sflag && spacesect) + i = spacesect; + last = i; + col = 0; + spacesect = 0; + } + runelen = charntorune(&r, l->data + i, l->len - i); + if (!runelen || r == Runeerror) + eprintf("charntorune: %s: invalid utf\n", fname); + if (sflag && isblankrune(r)) + spacesect = i + runelen; + if (!bflag && iscntrl(l->data[i])) { + switch(l->data[i]) { + case '\b': + col -= (col > 0); + break; + case '\r': + col = 0; + break; + case '\t': + col += (8 - (col % 8)); + if (col >= width) + i--; + break; + } + } else { + col += bflag ? runelen : 1; + } + } + if (l->len - last) + fwrite(l->data + last, 1, l->len - last, stdout); +} + +static void +fold(FILE *fp, const char *fname) +{ + static struct line line; + static size_t size = 0; + ssize_t len; + + while ((len = getline(&line.data, &size, fp)) > 0) { + line.len = len; + foldline(&line, fname); + } + if (ferror(fp)) + eprintf("getline %s:", fname); +} + +static void +usage(void) +{ + eprintf("usage: %s [-bs] [-w num | -num] [FILE ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + FILE *fp; + int ret = 0; + + ARGBEGIN { + case 'b': + bflag = 1; + break; + case 's': + sflag = 1; + break; + case 'w': + width = estrtonum(EARGF(usage()), 1, MIN(LLONG_MAX, SIZE_MAX)); + break; + ARGNUM: + if (!(width = ARGNUMF())) + eprintf("illegal width value, too small\n"); + break; + default: + usage(); + } ARGEND + + if (!argc) { + fold(stdin, "<stdin>"); + } else { + for (; *argv; argc--, argv++) { + if (!strcmp(*argv, "-")) { + *argv = "<stdin>"; + fp = stdin; + } else if (!(fp = fopen(*argv, "r"))) { + weprintf("fopen %s:", *argv); + ret = 1; + continue; + } + fold(fp, *argv); + if (fp != stdin && fshut(fp, *argv)) + ret = 1; + } + } + + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/fs.h b/util/sbase/fs.h new file mode 100644 index 00000000..fd647bb7 --- /dev/null +++ b/util/sbase/fs.h @@ -0,0 +1,47 @@ +/* See LICENSE file for copyright and license details. */ +#include <limits.h> +#include <sys/stat.h> +#include <sys/types.h> + +struct history { + struct history *prev; + dev_t dev; + ino_t ino; +}; + +struct recursor { + void (*fn)(int, const char *, struct stat *, void *, struct recursor *); + char path[PATH_MAX]; + size_t pathlen; + struct history *hist; + int depth; + int maxdepth; + int follow; + int flags; +}; + +enum { + SAMEDEV = 1 << 0, + DIRFIRST = 1 << 1, + SILENT = 1 << 2, + CONFIRM = 1 << 3, + IGNORE = 1 << 4, +}; + +extern int cp_aflag; +extern int cp_fflag; +extern int cp_iflag; +extern int cp_pflag; +extern int cp_rflag; +extern int cp_vflag; +extern int cp_follow; +extern int cp_status; + +extern int rm_status; + +extern int recurse_status; + +void recurse(int, const char *, void *, struct recursor *); + +int cp(const char *, const char *, int); +void rm(int, const char *, struct stat *st, void *, struct recursor *); diff --git a/util/sbase/getconf.1 b/util/sbase/getconf.1 new file mode 100644 index 00000000..e75abbb0 --- /dev/null +++ b/util/sbase/getconf.1 @@ -0,0 +1,57 @@ +.Dd October 8, 2015 +.Dt GETCONF 1 +.Os sbase +.Sh NAME +.Nm getconf +.Nd get configuration values +.Sh SYNOPSIS +.Nm +.Op Fl v Ar spec +.Ar var +.Ar [path] +.Sh DESCRIPTION +.Nm +writes the value of the variable +.Ar var +to stdout. +.sp +If +.Ar path +is given, +.Ar var +is matched against configuration values from +.Xr pathconf 3 . +If +.Ar path +is not given, +.Ar var +is matched against configuration values from +.Xr sysconf 3 , +.Xr confstr 3 +and limits.h (Minimum and Maximum). +.sp +If +.Ar var +is not defined, +.Nm +writes "undefined" to stdout. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl v Ar spec +Ignored. +.El +.Sh EXIT STATUS +.Bl -tag -width Ds +.It 0 +.Ar var +was matched and its value written successfully. +.It 1 +An error occured or +.Ar var +was invalid. +.El +.Sh STANDARDS +POSIX.1-2013. +Except for the +.Op Fl v +flag. diff --git a/util/sbase/getconf.c b/util/sbase/getconf.c new file mode 100644 index 00000000..ca3e186f --- /dev/null +++ b/util/sbase/getconf.c @@ -0,0 +1,108 @@ +/* See LICENSE file for copyright and license details. */ +#include <errno.h> +#include <unistd.h> +#include <limits.h> +#include <stdlib.h> +#include <string.h> + +#include "util.h" + +struct var { + const char *k; + long v; +}; + +#include "getconf.h" + +void +usage(void) +{ + eprintf("usage: %s [-v spec] var [path]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + size_t len; + long res; + int i; + char *str; + + ARGBEGIN { + case 'v': + /* ignore */ + EARGF(usage()); + break; + default: + usage(); + break; + } ARGEND + + if (argc == 1) { + /* sysconf */ + for (i = 0; i < LEN(sysconf_l); i++) { + if (strcmp(argv[0], sysconf_l[i].k)) + continue; + errno = 0; + if ((res = sysconf(sysconf_l[i].v)) < 0) { + if (errno) + eprintf("sysconf %ld:", sysconf_l[i].v); + puts("undefined"); + } else { + printf("%ld\n", res); + } + return fshut(stdout, "<stdout>"); + } + /* confstr */ + for (i = 0; i < LEN(confstr_l); i++) { + if (strcmp(argv[0], confstr_l[i].k)) + continue; + errno = 0; + if (!(len = confstr(confstr_l[i].v, NULL, 0))) { + if (errno) + eprintf("confstr %ld:", confstr_l[i].v); + puts("undefined"); + } else { + str = emalloc(len); + errno = 0; + if (!confstr(confstr_l[i].v, str, len)) { + if (errno) + eprintf("confstr %ld:", confstr_l[i].v); + puts("undefined"); + } else { + puts(str); + } + free(str); + } + return fshut(stdout, "<stdout>"); + } + /* limits */ + for (i = 0; i < LEN(limits_l); i++) { + if (strcmp(argv[0], limits_l[i].k)) + continue; + printf("%ld\n", limits_l[i].v); + return fshut(stdout, "<stdout>"); + } + } else if (argc == 2) { + /* pathconf */ + for (i = 0; i < LEN(pathconf_l); i++) { + if (strcmp(argv[0], pathconf_l[i].k)) + continue; + errno = 0; + if ((res = pathconf(argv[1], pathconf_l[i].v)) < 0) { + if (errno) + eprintf("pathconf %ld:", pathconf_l[i].v); + puts("undefined"); + } else { + printf("%ld\n", res); + } + return fshut(stdout, "<stdout>"); + } + } else { + usage(); + } + + eprintf("invalid variable: %s\n", argv[0]); + + return 0; +} diff --git a/util/sbase/grep.1 b/util/sbase/grep.1 new file mode 100644 index 00000000..9de0294a --- /dev/null +++ b/util/sbase/grep.1 @@ -0,0 +1,94 @@ +.Dd October 8, 2015 +.Dt GREP 1 +.Os sbase +.Sh NAME +.Nm grep +.Nd search files for patterns +.Sh SYNOPSIS +.Nm +.Op Fl EFHchilnqsvx +.Op Fl e Ar pattern +.Op Fl f Ar file +.Op Ar pattern +.Op Ar file ... +.Sh DESCRIPTION +.Nm +searches the input files for lines that match the +.Ar pattern , +a regular expression as defined in +.Xr regex 7 or +.Xr re_format 7 . +By default each matching line is printed to stdout. +If no +.Ar file +is given +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl E +Match using extended regex. +.It Fl F +Match using fixed strings. +Treat each pattern specified as a string instead of a regular +expression. +.It Fl H +Prefix each matching line with its filename in the output. +This is the default when there is more than one file specified. +.It Fl c +Print only a count of matching lines. +.It Fl e Ar pattern +Specify a pattern used during the search of the input: an input +line is selected if it matches any of the specified patterns. +This option is most useful when multiple -e options are used to +specify multiple patterns, or when a pattern begins with a dash. +.It Fl f Ar file +Read one or more patterns from the file named by the pathname file. +Patterns in file shall be terminated by a <newline>. +A null pattern can be specified by an empty line in pattern_file. +Unless the -E or -F option is also specified, each pattern shall be +treated as a BRE. +(`-'). +.It Fl h +Do not prefix each line with 'filename:' prefix. +.It Fl i +Match lines case insensitively. +.It Fl l +Print only the names of files with matching lines. +.It Fl n +Prefix each matching line with its line number in the input. +.It Fl q +Print nothing, only return status. +.It Fl s +Suppress the error messages ordinarily written for nonexistent or unreadable +files. +.It Fl v +Select lines which do +.Sy not +match the pattern. +.It Fl w +The expression is searched for as a word (as if surrounded by '\\<' and '\\>'). +.It Fl x +Consider only input lines that use all characters in the line excluding the +terminating <newline> to match an entire fixed string or regular expression to +be matching lines. +.El +.Sh EXIT STATUS +.Bl -tag -width Ds +.It 0 +One or more lines were matched. +.It 1 +No lines were matched. +.It > 1 +An error occurred. +.El +.Sh SEE ALSO +.Xr sed 1 , +.Xr re_format 7 , +.Xr regex 7 +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Op Fl Hhw +flags are an extension to that specification. diff --git a/util/sbase/grep.c b/util/sbase/grep.c new file mode 100644 index 00000000..1c978070 --- /dev/null +++ b/util/sbase/grep.c @@ -0,0 +1,290 @@ +/* See LICENSE file for copyright and license details. */ +#include <regex.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <strings.h> + +#include "queue.h" +#include "util.h" + +enum { Match = 0, NoMatch = 1, Error = 2 }; + +static void addpattern(const char *, size_t); +static void addpatternfile(FILE *); +static int grep(FILE *, const char *); + +static int Eflag; +static int Fflag; +static int Hflag; +static int eflag; +static int fflag; +static int hflag; +static int iflag; +static int sflag; +static int vflag; +static int wflag; +static int xflag; +static int many; +static int mode; + +struct pattern { + char *pattern; + regex_t preg; + SLIST_ENTRY(pattern) entry; +}; + +static SLIST_HEAD(phead, pattern) phead; + +static void +addpattern(const char *pattern, size_t patlen) +{ + struct pattern *pnode; + char *tmp; + int bol, eol; + size_t len; + + if (!patlen) + return; + + /* a null BRE/ERE matches every line */ + if (!Fflag) + if (pattern[0] == '\0') + pattern = "^"; + + if (!Fflag && xflag) { + tmp = enmalloc(Error, patlen + 3); + snprintf(tmp, patlen + 3, "%s%s%s", + pattern[0] == '^' ? "" : "^", + pattern, + pattern[patlen - 1] == '$' ? "" : "$"); + } else if (!Fflag && wflag) { + len = patlen + 5 + (Eflag ? 2 : 4); + tmp = enmalloc(Error, len); + + bol = eol = 0; + if (pattern[0] == '^') + bol = 1; + if (pattern[patlen - 1] == '$') + eol = 1; + + snprintf(tmp, len, "%s\\<%s%.*s%s\\>%s", + bol ? "^" : "", + Eflag ? "(" : "\\(", + (int)patlen - bol - eol, pattern + bol, + Eflag ? ")" : "\\)", + eol ? "$" : ""); + } else { + tmp = enstrdup(Error, pattern); + } + + pnode = enmalloc(Error, sizeof(*pnode)); + pnode->pattern = tmp; + SLIST_INSERT_HEAD(&phead, pnode, entry); +} + +static void +addpatternfile(FILE *fp) +{ + static char *buf = NULL; + static size_t size = 0; + ssize_t len = 0; + + while ((len = getline(&buf, &size, fp)) > 0) { + if (len > 0 && buf[len - 1] == '\n') + buf[len - 1] = '\0'; + addpattern(buf, (size_t)len); + } + if (ferror(fp)) + enprintf(Error, "read error:"); +} + +static int +grep(FILE *fp, const char *str) +{ + static char *buf = NULL; + static size_t size = 0; + ssize_t len = 0; + long c = 0, n; + struct pattern *pnode; + int match, result = NoMatch; + + for (n = 1; (len = getline(&buf, &size, fp)) > 0; n++) { + /* Remove the trailing newline if one is present. */ + if (len && buf[len - 1] == '\n') + buf[len - 1] = '\0'; + match = 0; + SLIST_FOREACH(pnode, &phead, entry) { + if (Fflag) { + if (xflag) { + if (!(iflag ? strcasecmp : strcmp)(buf, pnode->pattern)) { + match = 1; + break; + } + } else { + if ((iflag ? strcasestr : strstr)(buf, pnode->pattern)) { + match = 1; + break; + } + } + } else { + if (regexec(&pnode->preg, buf, 0, NULL, 0) == 0) { + match = 1; + break; + } + } + } + if (match != vflag) { + result = Match; + switch (mode) { + case 'c': + c++; + break; + case 'l': + puts(str); + goto end; + case 'q': + exit(Match); + default: + if (!hflag && (many || Hflag)) + printf("%s:", str); + if (mode == 'n') + printf("%ld:", n); + puts(buf); + break; + } + } + } + if (mode == 'c') + printf("%ld\n", c); +end: + if (ferror(fp)) { + weprintf("%s: read error:", str); + result = Error; + } + return result; +} + +static void +usage(void) +{ + enprintf(Error, "usage: %s [-EFHchilnqsvwx] [-e pattern] [-f file] " + "[pattern] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + struct pattern *pnode; + int m, flags = REG_NOSUB, match = NoMatch; + FILE *fp; + char *arg; + + SLIST_INIT(&phead); + + ARGBEGIN { + case 'E': + Eflag = 1; + Fflag = 0; + flags |= REG_EXTENDED; + break; + case 'F': + Fflag = 1; + Eflag = 0; + flags &= ~REG_EXTENDED; + break; + case 'H': + Hflag = 1; + hflag = 0; + break; + case 'e': + arg = EARGF(usage()); + if (!(fp = fmemopen(arg, strlen(arg) + 1, "r"))) + eprintf("fmemopen:"); + addpatternfile(fp); + efshut(fp, arg); + eflag = 1; + break; + case 'f': + arg = EARGF(usage()); + fp = fopen(arg, "r"); + if (!fp) + enprintf(Error, "fopen %s:", arg); + addpatternfile(fp); + efshut(fp, arg); + fflag = 1; + break; + case 'h': + hflag = 1; + Hflag = 0; + break; + case 'c': + case 'l': + case 'n': + case 'q': + mode = ARGC(); + break; + case 'i': + flags |= REG_ICASE; + iflag = 1; + break; + case 's': + sflag = 1; + break; + case 'v': + vflag = 1; + break; + case 'w': + wflag = 1; + break; + case 'x': + xflag = 1; + break; + default: + usage(); + } ARGEND + + if (argc == 0 && !eflag && !fflag) + usage(); /* no pattern */ + + /* just add literal pattern to list */ + if (!eflag && !fflag) { + if (!(fp = fmemopen(argv[0], strlen(argv[0]) + 1, "r"))) + eprintf("fmemopen:"); + addpatternfile(fp); + efshut(fp, argv[0]); + argc--; + argv++; + } + + if (!Fflag) + /* Compile regex for all search patterns */ + SLIST_FOREACH(pnode, &phead, entry) + enregcomp(Error, &pnode->preg, pnode->pattern, flags); + many = (argc > 1); + if (argc == 0) { + match = grep(stdin, "<stdin>"); + } else { + for (; *argv; argc--, argv++) { + if (!strcmp(*argv, "-")) { + *argv = "<stdin>"; + fp = stdin; + } else if (!(fp = fopen(*argv, "r"))) { + if (!sflag) + weprintf("fopen %s:", *argv); + match = Error; + continue; + } + m = grep(fp, *argv); + if (m == Error || (match != Error && m == Match)) + match = m; + if (fp != stdin && fshut(fp, *argv)) + match = Error; + } + } + + if (fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>")) + match = Error; + + return match; +} diff --git a/util/sbase/head.1 b/util/sbase/head.1 new file mode 100644 index 00000000..0bf3127f --- /dev/null +++ b/util/sbase/head.1 @@ -0,0 +1,40 @@ +.Dd October 8, 2015 +.Dt HEAD 1 +.Os sbase +.Sh NAME +.Nm head +.Nd display initial lines of files +.Sh SYNOPSIS +.Nm +.Op Fl n Ar num | Fl Ns Ar num +.Op Ar file ... +.Sh DESCRIPTION +.Nm +writes +.Ar num +lines of each +.Ar file +to stdout. +If no +.Ar file +is given +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl n Ar num | Fl Ns Ar num +Display initial +.Ar num +| +.Sy N +lines. +Default is 10. +.El +.Sh SEE ALSO +.Xr tail 1 +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Op Fl Ns num +syntax is an extension to that specification. diff --git a/util/sbase/head.c b/util/sbase/head.c new file mode 100644 index 00000000..ae550c01 --- /dev/null +++ b/util/sbase/head.c @@ -0,0 +1,77 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "util.h" + +static void +head(FILE *fp, const char *fname, size_t n) +{ + char *buf = NULL; + size_t i = 0, size = 0; + ssize_t len; + + while (i < n && (len = getline(&buf, &size, fp)) > 0) { + fwrite(buf, 1, len, stdout); + i += (len && (buf[len - 1] == '\n')); + } + free(buf); + if (ferror(fp)) + eprintf("getline %s:", fname); +} + +static void +usage(void) +{ + eprintf("usage: %s [-num | -n num] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + size_t n = 10; + FILE *fp; + int ret = 0, newline = 0, many = 0; + + ARGBEGIN { + case 'n': + n = estrtonum(EARGF(usage()), 0, MIN(LLONG_MAX, SIZE_MAX)); + break; + ARGNUM: + n = ARGNUMF(); + break; + default: + usage(); + } ARGEND + + if (!argc) { + head(stdin, "<stdin>", n); + } else { + many = argc > 1; + for (newline = 0; *argv; argc--, argv++) { + if (!strcmp(*argv, "-")) { + *argv = "<stdin>"; + fp = stdin; + } else if (!(fp = fopen(*argv, "r"))) { + weprintf("fopen %s:", *argv); + ret = 1; + continue; + } + if (many) { + if (newline) + putchar('\n'); + printf("==> %s <==\n", *argv); + } + newline = 1; + head(fp, *argv, n); + if (fp != stdin && fshut(fp, *argv)) + ret = 1; + } + } + + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/hostname.1 b/util/sbase/hostname.1 new file mode 100644 index 00000000..601aef9d --- /dev/null +++ b/util/sbase/hostname.1 @@ -0,0 +1,18 @@ +.Dd October 8, 2015 +.Dt HOSTNAME 1 +.Os sbase +.Sh NAME +.Nm hostname +.Nd set or print host name +.Sh SYNOPSIS +.Nm +.Op Ar name +.Sh DESCRIPTION +.Nm +sets the current host name to +.Ar name . +If no +.Ar name +is given, the current host name is written to stdout. +.Sh SEE ALSO +.Xr hostname 7 diff --git a/util/sbase/hostname.c b/util/sbase/hostname.c new file mode 100644 index 00000000..2532ec8d --- /dev/null +++ b/util/sbase/hostname.c @@ -0,0 +1,36 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <string.h> +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [name]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + char host[HOST_NAME_MAX + 1]; + + ARGBEGIN { + default: + usage(); + } ARGEND + + if (!argc) { + if (gethostname(host, sizeof(host)) < 0) + eprintf("gethostname:"); + puts(host); + } else if (argc == 1) { + if (sethostname(argv[0], strlen(argv[0])) < 0) + eprintf("sethostname:"); + } else { + usage(); + } + + return fshut(stdout, "<stdout>"); +} diff --git a/util/sbase/join.1 b/util/sbase/join.1 new file mode 100644 index 00000000..6d1f4be1 --- /dev/null +++ b/util/sbase/join.1 @@ -0,0 +1,105 @@ +.Dd October 8, 2015 +.Dt JOIN 1 +.Os sbase +.Sh NAME +.Nm join +.Nd relational database operator +.Sh SYNOPSIS +.Nm +.Op Fl 1 Ar field +.Op Fl 2 Ar field +.Op Fl o Ar list +.Op Fl e Ar string +.Op Fl a Ar fileno | Fl v Ar fileno +.Op Fl t Ar delim +.Ar file1 file2 +.Sh DESCRIPTION +.Nm +lines from +.Ar file1 +and +.Ar file2 +on a matching field. +If one of the input files is '-', standard input is read for that file. +.Pp +Files are read sequentially and are assumed to be sorted on the join +field. +.Nm +does not check the order of input, and joining two unsorted files will +produce unexpected output. +.Pp +By default, input lines are matched on the first blank-separated +field; output lines are space-separated and consist of the join field +followed by the remaining fields from +.Ar file1 , +then the remaining fields from +.Ar file2 . +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl 1 Ar field +Join on the +.Ar field Ns th +field of file 1. +.It Fl 2 Ar field +Join on the +.Ar field Ns th +field of file 2. +.It Fl a Ar fileno +Print unpairable lines from file +.Ar fileno +in addition to normal output. +.It Fl e Ar string +When used with +.Fl o , +replace empty fields in the output list with +.Ar string . +.It Fl o Ar list +Format output according to the string +.Ar list . +Each element of +.Ar list +may be either +.Ar fileno.field +or 0 (representing the join field). +Elements in +.Ar list +may be separated by blanks or commas. +For example, +.Bd -literal -offset indent +join -o "0 2.1 1.3" +.Ed +.Pp +would print the join field, the first field of +.Ar file2 , +then the third field of +.Ar file1 . +.Pp +Only paired lines are formatted with the +.Fl o +option. +Unpairable lines (selected with +.Fl a +or +.Fl v ) +are printed raw. +.It Fl t Ar delim +Use the arbitrary string +.Ar delim +as field delimiter for both input and output. +.It Fl v Ar fileno +Print unpairable lines from file +.Ar fileno +instead of normal output. +.El +.Sh STANDARDS +POSIX.1-2013. +.Pp +With the following exception: +.Bl -bullet -offset indent +.It +Unpairable lines ignore formatting specified with +.Fl o . +.El +.Pp +The possibility of specifying multibyte delimiters of arbitrary +length is an extension to the specification. diff --git a/util/sbase/join.c b/util/sbase/join.c new file mode 100644 index 00000000..d3e23439 --- /dev/null +++ b/util/sbase/join.c @@ -0,0 +1,529 @@ +/* See LICENSE file for copyright and license details. */ +#include <ctype.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "text.h" +#include "utf.h" +#include "util.h" + +enum { + INIT = 1, + GROW = 2, +}; + +enum { + EXPAND = 0, + RESET = 1, +}; + +enum { FIELD_ERROR = -2, }; + +struct field { + char *s; + size_t len; +}; + +struct jline { + struct line text; + size_t nf; + size_t maxf; + struct field *fields; +}; + +struct spec { + size_t fileno; + size_t fldno; +}; + +struct outlist { + size_t ns; + size_t maxs; + struct spec **specs; +}; + +struct span { + size_t nl; + size_t maxl; + struct jline **lines; +}; + +static char *sep = NULL; +static char *replace = NULL; +static const char defaultofs = ' '; +static const int jfield = 1; /* POSIX default join field */ +static int unpairsa = 0, unpairsb = 0; +static int oflag = 0; +static int pairs = 1; +static size_t seplen; +static struct outlist output; + +static void +usage(void) +{ + eprintf("usage: %s [-1 field] [-2 field] [-o list] [-e string] " + "[-a | -v fileno] [-t delim] file1 file2\n", argv0); +} + +static void +prfield(struct field *fp) +{ + if (fwrite(fp->s, 1, fp->len, stdout) != fp->len) + eprintf("fwrite:"); +} + +static void +prsep(void) +{ + if (sep) + fwrite(sep, 1, seplen, stdout); + else + putchar(defaultofs); +} + +static void +swaplines(struct jline *la, struct jline *lb) +{ + struct jline tmp; + + tmp = *la; + *la = *lb; + *lb = tmp; +} + +static void +prjoin(struct jline *la, struct jline *lb, size_t jfa, size_t jfb) +{ + struct spec *sp; + struct field *joinfield; + size_t i; + + if (jfa >= la->nf || jfb >= lb->nf) + return; + + joinfield = &la->fields[jfa]; + + if (oflag) { + for (i = 0; i < output.ns; i++) { + sp = output.specs[i]; + + if (sp->fileno == 1) { + if (sp->fldno < la->nf) + prfield(&la->fields[sp->fldno]); + else if (replace) + fputs(replace, stdout); + } else if (sp->fileno == 2) { + if (sp->fldno < lb->nf) + prfield(&lb->fields[sp->fldno]); + else if (replace) + fputs(replace, stdout); + } else if (sp->fileno == 0) { + prfield(joinfield); + } + + if (i < output.ns - 1) + prsep(); + } + } else { + prfield(joinfield); + prsep(); + + for (i = 0; i < la->nf; i++) { + if (i != jfa) { + prfield(&la->fields[i]); + prsep(); + } + } + for (i = 0; i < lb->nf; i++) { + if (i != jfb) { + prfield(&lb->fields[i]); + if (i < lb->nf - 1) + prsep(); + } + } + } + putchar('\n'); +} + +static void +prline(struct jline *lp) +{ + if (fwrite(lp->text.data, 1, lp->text.len, stdout) != lp->text.len) + eprintf("fwrite:"); + putchar('\n'); +} + +static int +jlinecmp(struct jline *la, struct jline *lb, size_t jfa, size_t jfb) +{ + int status; + + /* return FIELD_ERROR if both lines are short */ + if (jfa >= la->nf) { + status = (jfb >= lb->nf) ? FIELD_ERROR : -1; + } else if (jfb >= lb->nf) { + status = 1; + } else { + status = memcmp(la->fields[jfa].s, lb->fields[jfb].s, + MAX(la->fields[jfa].len, lb->fields[jfb].len)); + LIMIT(status, -1, 1); + } + + return status; +} + +static void +addfield(struct jline *lp, char *sp, size_t len) +{ + if (lp->nf >= lp->maxf) { + lp->fields = ereallocarray(lp->fields, (GROW * lp->maxf), + sizeof(struct field)); + lp->maxf *= GROW; + } + lp->fields[lp->nf].s = sp; + lp->fields[lp->nf].len = len; + lp->nf++; +} + +static void +prspanjoin(struct span *spa, struct span *spb, size_t jfa, size_t jfb) +{ + size_t i, j; + + for (i = 0; i < (spa->nl - 1); i++) + for (j = 0; j < (spb->nl - 1); j++) + prjoin(spa->lines[i], spb->lines[j], jfa, jfb); +} + +static struct jline * +makeline(char *s, size_t len) +{ + struct jline *lp; + char *tmp; + size_t i, end; + + if (s[len - 1] == '\n') + s[--len] = '\0'; + + lp = ereallocarray(NULL, INIT, sizeof(struct jline)); + lp->text.data = s; + lp->text.len = len; + lp->fields = ereallocarray(NULL, INIT, sizeof(struct field)); + lp->nf = 0; + lp->maxf = INIT; + + for (i = 0; i < lp->text.len && isblank(lp->text.data[i]); i++) + ; + while (i < lp->text.len) { + if (sep) { + if ((lp->text.len - i) < seplen || + !(tmp = memmem(lp->text.data + i, + lp->text.len - i, sep, seplen))) { + goto eol; + } + end = tmp - lp->text.data; + addfield(lp, lp->text.data + i, end - i); + i = end + seplen; + } else { + for (end = i; !(isblank(lp->text.data[end])); end++) { + if (end + 1 == lp->text.len) + goto eol; + } + addfield(lp, lp->text.data + i, end - i); + for (i = end; isblank(lp->text.data[i]); i++) + ; + } + } +eol: + addfield(lp, lp->text.data + i, lp->text.len - i); + + return lp; +} + +static int +addtospan(struct span *sp, FILE *fp, int reset) +{ + char *newl = NULL; + ssize_t len; + size_t size = 0; + + if ((len = getline(&newl, &size, fp)) < 0) { + if (ferror(fp)) + eprintf("getline:"); + else + return 0; + } + + if (reset) + sp->nl = 0; + + if (sp->nl >= sp->maxl) { + sp->lines = ereallocarray(sp->lines, (GROW * sp->maxl), + sizeof(struct jline *)); + sp->maxl *= GROW; + } + + sp->lines[sp->nl] = makeline(newl, len); + sp->nl++; + return 1; +} + +static void +initspan(struct span *sp) +{ + sp->nl = 0; + sp->maxl = INIT; + sp->lines = ereallocarray(NULL, INIT, sizeof(struct jline *)); +} + +static void +freespan(struct span *sp) +{ + size_t i; + + for (i = 0; i < sp->nl; i++) { + free(sp->lines[i]->fields); + free(sp->lines[i]->text.data); + } + free(sp->lines); +} + +static void +initolist(struct outlist *olp) +{ + olp->ns = 0; + olp->maxs = 1; + olp->specs = ereallocarray(NULL, INIT, sizeof(struct spec *)); +} + +static void +addspec(struct outlist *olp, struct spec *sp) +{ + if (olp->ns >= olp->maxs) { + olp->specs = ereallocarray(olp->specs, (GROW * olp->maxs), + sizeof(struct spec *)); + olp->maxs *= GROW; + } + olp->specs[olp->ns] = sp; + olp->ns++; +} + +static struct spec * +makespec(char *s) +{ + struct spec *sp; + int fileno; + size_t fldno; + + if (!strcmp(s, "0")) { /* join field must be 0 and nothing else */ + fileno = 0; + fldno = 0; + } else if ((s[0] == '1' || s[0] == '2') && s[1] == '.') { + fileno = s[0] - '0'; + fldno = estrtonum(&s[2], 1, MIN(LLONG_MAX, SIZE_MAX)) - 1; + } else { + eprintf("%s: invalid format\n", s); + } + + sp = ereallocarray(NULL, INIT, sizeof(struct spec)); + sp->fileno = fileno; + sp->fldno = fldno; + return sp; +} + +static void +makeolist(struct outlist *olp, char *s) +{ + char *item, *sp; + sp = s; + + while (sp) { + item = sp; + sp = strpbrk(sp, ", \t"); + if (sp) + *sp++ = '\0'; + addspec(olp, makespec(item)); + } +} + +static void +freespecs(struct outlist *olp) +{ + size_t i; + + for (i = 0; i < olp->ns; i++) + free(olp->specs[i]); +} + +static void +join(FILE *fa, FILE *fb, size_t jfa, size_t jfb) +{ + struct span spa, spb; + int cmp, eofa, eofb; + + initspan(&spa); + initspan(&spb); + cmp = eofa = eofb = 0; + + addtospan(&spa, fa, RESET); + addtospan(&spb, fb, RESET); + + while (spa.nl && spb.nl) { + if ((cmp = jlinecmp(spa.lines[0], spb.lines[0], jfa, jfb)) < 0) { + if (unpairsa) + prline(spa.lines[0]); + if (!addtospan(&spa, fa, RESET)) { + if (unpairsb) { /* a is EOF'd; print the rest of b */ + do + prline(spb.lines[0]); + while (addtospan(&spb, fb, RESET)); + } + eofa = eofb = 1; + } else { + continue; + } + } else if (cmp > 0) { + if (unpairsb) + prline(spb.lines[0]); + if (!addtospan(&spb, fb, RESET)) { + if (unpairsa) { /* b is EOF'd; print the rest of a */ + do + prline(spa.lines[0]); + while (addtospan(&spa, fa, RESET)); + } + eofa = eofb = 1; + } else { + continue; + } + } else if (cmp == 0) { + /* read all consecutive matching lines from a */ + do { + if (!addtospan(&spa, fa, EXPAND)) { + eofa = 1; + spa.nl++; + break; + } + } while (jlinecmp(spa.lines[spa.nl-1], spb.lines[0], jfa, jfb) == 0); + + /* read all consecutive matching lines from b */ + do { + if (!addtospan(&spb, fb, EXPAND)) { + eofb = 1; + spb.nl++; + break; + } + } while (jlinecmp(spa.lines[0], spb.lines[spb.nl-1], jfa, jfb) == 0); + + if (pairs) + prspanjoin(&spa, &spb, jfa, jfb); + + } else { /* FIELD_ERROR: both lines lacked join fields */ + if (unpairsa) + prline(spa.lines[0]); + if (unpairsb) + prline(spb.lines[0]); + eofa = addtospan(&spa, fa, RESET) ? 0 : 1; + eofb = addtospan(&spb, fb, RESET) ? 0 : 1; + if (!eofa && !eofb) + continue; + } + + if (eofa) { + spa.nl = 0; + } else { + swaplines(spa.lines[0], spa.lines[spa.nl - 1]); /* ugly */ + spa.nl = 1; + } + + if (eofb) { + spb.nl = 0; + } else { + swaplines(spb.lines[0], spb.lines[spb.nl - 1]); /* ugly */ + spb.nl = 1; + } + } + freespan(&spa); + freespan(&spb); +} + + +int +main(int argc, char *argv[]) +{ + size_t jf[2] = { jfield, jfield, }; + FILE *fp[2]; + int ret = 0, n; + char *fno; + + ARGBEGIN { + case '1': + jf[0] = estrtonum(EARGF(usage()), 1, MIN(LLONG_MAX, SIZE_MAX)); + break; + case '2': + jf[1] = estrtonum(EARGF(usage()), 1, MIN(LLONG_MAX, SIZE_MAX)); + break; + case 'a': + fno = EARGF(usage()); + if (strcmp(fno, "1") == 0) + unpairsa = 1; + else if (strcmp(fno, "2") == 0) + unpairsb = 1; + else + usage(); + break; + case 'e': + replace = EARGF(usage()); + break; + case 'o': + oflag = 1; + initolist(&output); + makeolist(&output, EARGF(usage())); + break; + case 't': + sep = EARGF(usage()); + break; + case 'v': + pairs = 0; + fno = EARGF(usage()); + if (strcmp(fno, "1") == 0) + unpairsa = 1; + else if (strcmp(fno, "2") == 0) + unpairsb = 1; + else + usage(); + break; + default: + usage(); + } ARGEND + + if (sep) + seplen = unescape(sep); + + if (argc != 2) + usage(); + + for (n = 0; n < 2; n++) { + if (!strcmp(argv[n], "-")) { + argv[n] = "<stdin>"; + fp[n] = stdin; + } else if (!(fp[n] = fopen(argv[n], "r"))) { + eprintf("fopen %s:", argv[n]); + } + } + + jf[0]--; + jf[1]--; + + join(fp[0], fp[1], jf[0], jf[1]); + + if (oflag) + freespecs(&output); + + if (fshut(fp[0], argv[0]) | (fp[0] != fp[1] && fshut(fp[1], argv[1])) | + fshut(stdout, "<stdout>")) + ret = 2; + + return ret; +} diff --git a/util/sbase/kill.1 b/util/sbase/kill.1 new file mode 100644 index 00000000..37ec4dac --- /dev/null +++ b/util/sbase/kill.1 @@ -0,0 +1,39 @@ +.Dd October 8, 2015 +.Dt KILL 1 +.Os sbase +.Sh NAME +.Nm kill +.Nd signal processes +.Sh SYNOPSIS +.Nm +.Op Fl s Ar signame | Fl num | Fl signame +.Ar pid ... +.Nm +.Fl l Op Ar num +.Sh DESCRIPTION +.Nm +signals TERM to each process or process group specified by +.Ar pid . +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl l Op Ar num +List all available signals or the signal name of +.Ar num . +.It Fl s Ar signame | Fl num | Fl signame +Send signal corresponding to +.Ar signame +| +.Ar num . +The default is TERM. +.El +.Sh SEE ALSO +.Xr kill 2 , +.Xr signal 7 +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Fl Ar signame +and +.Fl Ar num +syntax is marked by POSIX.1-2013 as an X/OPEN System Interfaces option. diff --git a/util/sbase/kill.c b/util/sbase/kill.c new file mode 100644 index 00000000..b09f55cb --- /dev/null +++ b/util/sbase/kill.c @@ -0,0 +1,131 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/wait.h> + +#include <ctype.h> +#include <limits.h> +#include <signal.h> +#include <stdio.h> +#include <string.h> +#include <strings.h> + +#include "util.h" + +struct { + const char *name; + const int sig; +} sigs[] = { + { "0", 0 }, +#define SIG(n) { #n, SIG##n } + SIG(ABRT), SIG(ALRM), SIG(BUS), SIG(CHLD), SIG(CONT), SIG(FPE), SIG(HUP), + SIG(ILL), SIG(INT), SIG(KILL), SIG(PIPE), SIG(QUIT), SIG(SEGV), SIG(STOP), + SIG(TERM), SIG(TRAP), SIG(TSTP), SIG(TTIN), SIG(TTOU), SIG(USR1), SIG(USR2), + SIG(URG), +#undef SIG +}; + +const char * +sig2name(const int sig) +{ + size_t i; + + for (i = 0; i < LEN(sigs); i++) + if (sigs[i].sig == sig) + return sigs[i].name; + eprintf("%d: bad signal number\n", sig); + + return NULL; /* not reached */ +} + +int +name2sig(const char *name) +{ + size_t i; + + for (i = 0; i < LEN(sigs); i++) + if (!strcasecmp(sigs[i].name, name)) + return sigs[i].sig; + eprintf("%s: bad signal name\n", name); + + return -1; /* not reached */ +} + +static void +usage(void) +{ + eprintf("usage: %s [-s signame | -num | -signame] pid ...\n" + " %s -l [num]\n", argv0, argv0); +} + +int +main(int argc, char *argv[]) +{ + pid_t pid; + size_t i; + int ret = 0, sig = SIGTERM; + + argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0; + + if (!argc) + usage(); + + if ((*argv)[0] == '-') { + switch ((*argv)[1]) { + case 'l': + if ((*argv)[2]) + goto longopt; + argc--, argv++; + if (!argc) { + for (i = 0; i < LEN(sigs); i++) + puts(sigs[i].name); + } else if (argc == 1) { + sig = estrtonum(*argv, 0, INT_MAX); + if (sig > 128) + sig = WTERMSIG(sig); + puts(sig2name(sig)); + } else { + usage(); + } + return fshut(stdout, "<stdout>"); + case 's': + if ((*argv)[2]) + goto longopt; + argc--, argv++; + if (!argc) + usage(); + sig = name2sig(*argv); + argc--, argv++; + break; + case '-': + if ((*argv)[2]) + goto longopt; + argc--, argv++; + break; + default: + longopt: + /* XSI-extensions -argnum and -argname*/ + if (isdigit((*argv)[1])) { + sig = estrtonum((*argv) + 1, 0, INT_MAX); + sig2name(sig); + } else { + sig = name2sig((*argv) + 1); + } + argc--, argv++; + } + } + + if (argc && !strcmp(*argv, "--")) + argc--, argv++; + + if (!argc) + usage(); + + for (; *argv; argc--, argv++) { + pid = estrtonum(*argv, INT_MIN, INT_MAX); + if (kill(pid, sig) < 0) { + weprintf("kill %d:", pid); + ret = 1; + } + } + + return ret; +} diff --git a/util/sbase/libutf/Makefile b/util/sbase/libutf/Makefile new file mode 100644 index 00000000..aac2d2e6 --- /dev/null +++ b/util/sbase/libutf/Makefile @@ -0,0 +1,6 @@ +AWK = awk +UNICODE = http://unicode.org/Public/UCD/latest/ucd/UnicodeData.txt + +default: + @echo Downloading and parsing $(UNICODE) + @curl -\# $(UNICODE) | $(AWK) -f mkrunetype.awk diff --git a/util/sbase/libutf/fgetrune.c b/util/sbase/libutf/fgetrune.c new file mode 100644 index 00000000..8cd78c64 --- /dev/null +++ b/util/sbase/libutf/fgetrune.c @@ -0,0 +1,36 @@ +/* See LICENSE file for copyright and license details. */ +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "../utf.h" + +int +fgetrune(Rune *r, FILE *fp) +{ + char buf[UTFmax]; + int i = 0, c; + + while (i < UTFmax && (c = fgetc(fp)) != EOF) { + buf[i++] = c; + if (charntorune(r, buf, i) > 0) + break; + } + if (ferror(fp)) + return -1; + + return i; +} + +int +efgetrune(Rune *r, FILE *fp, const char *file) +{ + int ret; + + if ((ret = fgetrune(r, fp)) < 0) { + fprintf(stderr, "fgetrune %s: %s\n", file, strerror(errno)); + exit(1); + } + return ret; +} diff --git a/util/sbase/libutf/fputrune.c b/util/sbase/libutf/fputrune.c new file mode 100644 index 00000000..6a393b5a --- /dev/null +++ b/util/sbase/libutf/fputrune.c @@ -0,0 +1,27 @@ +/* See LICENSE file for copyright and license details. */ +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "../utf.h" + +int +fputrune(const Rune *r, FILE *fp) +{ + char buf[UTFmax]; + + return fwrite(buf, runetochar(buf, r), 1, fp); +} + +int +efputrune(const Rune *r, FILE *fp, const char *file) +{ + int ret; + + if ((ret = fputrune(r, fp)) < 0) { + fprintf(stderr, "fputrune %s: %s\n", file, strerror(errno)); + exit(1); + } + return ret; +} diff --git a/util/sbase/libutf/isalnumrune.c b/util/sbase/libutf/isalnumrune.c new file mode 100644 index 00000000..e4720d00 --- /dev/null +++ b/util/sbase/libutf/isalnumrune.c @@ -0,0 +1,9 @@ +/* Automatically generated by mkrunetype.awk */ +#include "../utf.h" +#include "runetype.h" + +int +isalnumrune(Rune r) +{ + return isalpharune(r) || isdigitrune(r); +} diff --git a/util/sbase/libutf/isalpharune.c b/util/sbase/libutf/isalpharune.c new file mode 100644 index 00000000..9d1faffe --- /dev/null +++ b/util/sbase/libutf/isalpharune.c @@ -0,0 +1,830 @@ +/* Automatically generated by mkrunetype.awk */ +#include <stdlib.h> + +#include "../utf.h" +#include "runetype.h" + +static const Rune alpha3[][2] = { + { 0x00D6, 0x00D8 }, + { 0x00F6, 0x00F8 }, + { 0x02EC, 0x02EE }, + { 0x0374, 0x0376 }, + { 0x037D, 0x037F }, + { 0x0386, 0x0388 }, + { 0x038A, 0x038E }, + { 0x03A1, 0x03A3 }, + { 0x03F5, 0x03F7 }, + { 0x052F, 0x0531 }, + { 0x066F, 0x0671 }, + { 0x06D3, 0x06D5 }, + { 0x0710, 0x0712 }, + { 0x0887, 0x0889 }, + { 0x09A8, 0x09AA }, + { 0x09B0, 0x09B2 }, + { 0x09DD, 0x09DF }, + { 0x0A28, 0x0A2A }, + { 0x0A30, 0x0A32 }, + { 0x0A33, 0x0A35 }, + { 0x0A36, 0x0A38 }, + { 0x0A5C, 0x0A5E }, + { 0x0A8D, 0x0A8F }, + { 0x0A91, 0x0A93 }, + { 0x0AA8, 0x0AAA }, + { 0x0AB0, 0x0AB2 }, + { 0x0AB3, 0x0AB5 }, + { 0x0B28, 0x0B2A }, + { 0x0B30, 0x0B32 }, + { 0x0B33, 0x0B35 }, + { 0x0B5D, 0x0B5F }, + { 0x0B83, 0x0B85 }, + { 0x0B90, 0x0B92 }, + { 0x0B9A, 0x0B9E }, + { 0x0C0C, 0x0C0E }, + { 0x0C10, 0x0C12 }, + { 0x0C28, 0x0C2A }, + { 0x0C8C, 0x0C8E }, + { 0x0C90, 0x0C92 }, + { 0x0CA8, 0x0CAA }, + { 0x0CB3, 0x0CB5 }, + { 0x0CDE, 0x0CE0 }, + { 0x0D0C, 0x0D0E }, + { 0x0D10, 0x0D12 }, + { 0x0DB1, 0x0DB3 }, + { 0x0DBB, 0x0DBD }, + { 0x0E30, 0x0E32 }, + { 0x0E82, 0x0E86 }, + { 0x0E8A, 0x0E8C }, + { 0x0EA3, 0x0EA7 }, + { 0x0EB0, 0x0EB2 }, + { 0x0EC4, 0x0EC6 }, + { 0x0F47, 0x0F49 }, + { 0x10C5, 0x10C7 }, + { 0x10FA, 0x10FC }, + { 0x1248, 0x124A }, + { 0x1256, 0x125A }, + { 0x1288, 0x128A }, + { 0x12B0, 0x12B2 }, + { 0x12BE, 0x12C2 }, + { 0x12D6, 0x12D8 }, + { 0x1310, 0x1312 }, + { 0x167F, 0x1681 }, + { 0x176C, 0x176E }, + { 0x18A8, 0x18AA }, + { 0x1CEC, 0x1CEE }, + { 0x1CF3, 0x1CF5 }, + { 0x1F57, 0x1F5F }, + { 0x1FB4, 0x1FB6 }, + { 0x1FBC, 0x1FBE }, + { 0x1FC4, 0x1FC6 }, + { 0x1FF4, 0x1FF6 }, + { 0x2113, 0x2115 }, + { 0x2124, 0x212A }, + { 0x212D, 0x212F }, + { 0x2D25, 0x2D27 }, + { 0x2DA6, 0x2DA8 }, + { 0x2DAE, 0x2DB0 }, + { 0x2DB6, 0x2DB8 }, + { 0x2DBE, 0x2DC0 }, + { 0x2DC6, 0x2DC8 }, + { 0x2DCE, 0x2DD0 }, + { 0x2DD6, 0x2DD8 }, + { 0x309F, 0x30A1 }, + { 0x30FA, 0x30FC }, + { 0x312F, 0x3131 }, + { 0xA7D1, 0xA7D5 }, + { 0xA801, 0xA803 }, + { 0xA805, 0xA807 }, + { 0xA80A, 0xA80C }, + { 0xA8FB, 0xA8FD }, + { 0xA9E4, 0xA9E6 }, + { 0xA9FE, 0xAA00 }, + { 0xAA42, 0xAA44 }, + { 0xAAAF, 0xAAB1 }, + { 0xAAC0, 0xAAC2 }, + { 0xAB26, 0xAB28 }, + { 0xAB2E, 0xAB30 }, + { 0xAB5A, 0xAB5C }, + { 0xFB1D, 0xFB1F }, + { 0xFB28, 0xFB2A }, + { 0xFB36, 0xFB38 }, + { 0xFB3C, 0xFB40 }, + { 0xFB41, 0xFB43 }, + { 0xFB44, 0xFB46 }, + { 0xFE74, 0xFE76 }, + { 0x1000B, 0x1000D }, + { 0x10026, 0x10028 }, + { 0x1003A, 0x1003C }, + { 0x1003D, 0x1003F }, + { 0x10340, 0x10342 }, + { 0x1057A, 0x1057C }, + { 0x1058A, 0x1058C }, + { 0x10592, 0x10594 }, + { 0x10595, 0x10597 }, + { 0x105A1, 0x105A3 }, + { 0x105B1, 0x105B3 }, + { 0x105B9, 0x105BB }, + { 0x10785, 0x10787 }, + { 0x107B0, 0x107B2 }, + { 0x10808, 0x1080A }, + { 0x10835, 0x10837 }, + { 0x108F2, 0x108F4 }, + { 0x10A13, 0x10A15 }, + { 0x10A17, 0x10A19 }, + { 0x10AC7, 0x10AC9 }, + { 0x111DA, 0x111DC }, + { 0x11211, 0x11213 }, + { 0x11286, 0x1128A }, + { 0x1128D, 0x1128F }, + { 0x1129D, 0x1129F }, + { 0x11328, 0x1132A }, + { 0x11330, 0x11332 }, + { 0x11333, 0x11335 }, + { 0x114C5, 0x114C7 }, + { 0x11913, 0x11915 }, + { 0x11916, 0x11918 }, + { 0x1193F, 0x11941 }, + { 0x119E1, 0x119E3 }, + { 0x11C08, 0x11C0A }, + { 0x11D06, 0x11D08 }, + { 0x11D09, 0x11D0B }, + { 0x11D65, 0x11D67 }, + { 0x11D68, 0x11D6A }, + { 0x11F02, 0x11F04 }, + { 0x11F10, 0x11F12 }, + { 0x16FE1, 0x16FE3 }, + { 0x1AFF3, 0x1AFF5 }, + { 0x1AFFB, 0x1AFFD }, + { 0x1AFFE, 0x1B000 }, + { 0x1D454, 0x1D456 }, + { 0x1D49C, 0x1D49E }, + { 0x1D4AC, 0x1D4AE }, + { 0x1D4B9, 0x1D4BD }, + { 0x1D4C3, 0x1D4C5 }, + { 0x1D505, 0x1D507 }, + { 0x1D514, 0x1D516 }, + { 0x1D51C, 0x1D51E }, + { 0x1D539, 0x1D53B }, + { 0x1D53E, 0x1D540 }, + { 0x1D544, 0x1D546 }, + { 0x1D550, 0x1D552 }, + { 0x1D6C0, 0x1D6C2 }, + { 0x1D6DA, 0x1D6DC }, + { 0x1D6FA, 0x1D6FC }, + { 0x1D714, 0x1D716 }, + { 0x1D734, 0x1D736 }, + { 0x1D74E, 0x1D750 }, + { 0x1D76E, 0x1D770 }, + { 0x1D788, 0x1D78A }, + { 0x1D7A8, 0x1D7AA }, + { 0x1D7C2, 0x1D7C4 }, + { 0x1E7E6, 0x1E7E8 }, + { 0x1E7EB, 0x1E7ED }, + { 0x1E7EE, 0x1E7F0 }, + { 0x1E7FE, 0x1E800 }, + { 0x1EE03, 0x1EE05 }, + { 0x1EE1F, 0x1EE21 }, + { 0x1EE22, 0x1EE24 }, + { 0x1EE27, 0x1EE29 }, + { 0x1EE32, 0x1EE34 }, + { 0x1EE37, 0x1EE3B }, + { 0x1EE47, 0x1EE4D }, + { 0x1EE4F, 0x1EE51 }, + { 0x1EE52, 0x1EE54 }, + { 0x1EE57, 0x1EE61 }, + { 0x1EE62, 0x1EE64 }, + { 0x1EE6A, 0x1EE6C }, + { 0x1EE72, 0x1EE74 }, + { 0x1EE77, 0x1EE79 }, + { 0x1EE7C, 0x1EE80 }, + { 0x1EE89, 0x1EE8B }, + { 0x1EEA3, 0x1EEA5 }, + { 0x1EEA9, 0x1EEAB }, +}; + +static const Rune alpha2[][2] = { + { 0x0041, 0x005A }, + { 0x0061, 0x007A }, + { 0x00C0, 0x00D6 }, + { 0x00D8, 0x00F6 }, + { 0x00F8, 0x02C1 }, + { 0x02C6, 0x02D1 }, + { 0x02E0, 0x02E4 }, + { 0x0370, 0x0374 }, + { 0x0376, 0x0377 }, + { 0x037A, 0x037D }, + { 0x0388, 0x038A }, + { 0x038E, 0x03A1 }, + { 0x03A3, 0x03F5 }, + { 0x03F7, 0x0481 }, + { 0x048A, 0x052F }, + { 0x0531, 0x0556 }, + { 0x0560, 0x0588 }, + { 0x05D0, 0x05EA }, + { 0x05EF, 0x05F2 }, + { 0x0620, 0x064A }, + { 0x066E, 0x066F }, + { 0x0671, 0x06D3 }, + { 0x06E5, 0x06E6 }, + { 0x06EE, 0x06EF }, + { 0x06FA, 0x06FC }, + { 0x0712, 0x072F }, + { 0x074D, 0x07A5 }, + { 0x07CA, 0x07EA }, + { 0x07F4, 0x07F5 }, + { 0x0800, 0x0815 }, + { 0x0840, 0x0858 }, + { 0x0860, 0x086A }, + { 0x0870, 0x0887 }, + { 0x0889, 0x088E }, + { 0x08A0, 0x08C9 }, + { 0x0904, 0x0939 }, + { 0x0958, 0x0961 }, + { 0x0971, 0x0980 }, + { 0x0985, 0x098C }, + { 0x098F, 0x0990 }, + { 0x0993, 0x09A8 }, + { 0x09AA, 0x09B0 }, + { 0x09B6, 0x09B9 }, + { 0x09DC, 0x09DD }, + { 0x09DF, 0x09E1 }, + { 0x09F0, 0x09F1 }, + { 0x0A05, 0x0A0A }, + { 0x0A0F, 0x0A10 }, + { 0x0A13, 0x0A28 }, + { 0x0A2A, 0x0A30 }, + { 0x0A32, 0x0A33 }, + { 0x0A35, 0x0A36 }, + { 0x0A38, 0x0A39 }, + { 0x0A59, 0x0A5C }, + { 0x0A72, 0x0A74 }, + { 0x0A85, 0x0A8D }, + { 0x0A8F, 0x0A91 }, + { 0x0A93, 0x0AA8 }, + { 0x0AAA, 0x0AB0 }, + { 0x0AB2, 0x0AB3 }, + { 0x0AB5, 0x0AB9 }, + { 0x0AE0, 0x0AE1 }, + { 0x0B05, 0x0B0C }, + { 0x0B0F, 0x0B10 }, + { 0x0B13, 0x0B28 }, + { 0x0B2A, 0x0B30 }, + { 0x0B32, 0x0B33 }, + { 0x0B35, 0x0B39 }, + { 0x0B5C, 0x0B5D }, + { 0x0B5F, 0x0B61 }, + { 0x0B85, 0x0B8A }, + { 0x0B8E, 0x0B90 }, + { 0x0B92, 0x0B95 }, + { 0x0B99, 0x0B9A }, + { 0x0B9E, 0x0B9F }, + { 0x0BA3, 0x0BA4 }, + { 0x0BA8, 0x0BAA }, + { 0x0BAE, 0x0BB9 }, + { 0x0C05, 0x0C0C }, + { 0x0C0E, 0x0C10 }, + { 0x0C12, 0x0C28 }, + { 0x0C2A, 0x0C39 }, + { 0x0C58, 0x0C5A }, + { 0x0C60, 0x0C61 }, + { 0x0C85, 0x0C8C }, + { 0x0C8E, 0x0C90 }, + { 0x0C92, 0x0CA8 }, + { 0x0CAA, 0x0CB3 }, + { 0x0CB5, 0x0CB9 }, + { 0x0CDD, 0x0CDE }, + { 0x0CE0, 0x0CE1 }, + { 0x0CF1, 0x0CF2 }, + { 0x0D04, 0x0D0C }, + { 0x0D0E, 0x0D10 }, + { 0x0D12, 0x0D3A }, + { 0x0D54, 0x0D56 }, + { 0x0D5F, 0x0D61 }, + { 0x0D7A, 0x0D7F }, + { 0x0D85, 0x0D96 }, + { 0x0D9A, 0x0DB1 }, + { 0x0DB3, 0x0DBB }, + { 0x0DC0, 0x0DC6 }, + { 0x0E01, 0x0E30 }, + { 0x0E32, 0x0E33 }, + { 0x0E40, 0x0E46 }, + { 0x0E81, 0x0E82 }, + { 0x0E86, 0x0E8A }, + { 0x0E8C, 0x0EA3 }, + { 0x0EA7, 0x0EB0 }, + { 0x0EB2, 0x0EB3 }, + { 0x0EC0, 0x0EC4 }, + { 0x0EDC, 0x0EDF }, + { 0x0F40, 0x0F47 }, + { 0x0F49, 0x0F6C }, + { 0x0F88, 0x0F8C }, + { 0x1000, 0x102A }, + { 0x1050, 0x1055 }, + { 0x105A, 0x105D }, + { 0x1065, 0x1066 }, + { 0x106E, 0x1070 }, + { 0x1075, 0x1081 }, + { 0x10A0, 0x10C5 }, + { 0x10D0, 0x10FA }, + { 0x10FC, 0x1248 }, + { 0x124A, 0x124D }, + { 0x1250, 0x1256 }, + { 0x125A, 0x125D }, + { 0x1260, 0x1288 }, + { 0x128A, 0x128D }, + { 0x1290, 0x12B0 }, + { 0x12B2, 0x12B5 }, + { 0x12B8, 0x12BE }, + { 0x12C2, 0x12C5 }, + { 0x12C8, 0x12D6 }, + { 0x12D8, 0x1310 }, + { 0x1312, 0x1315 }, + { 0x1318, 0x135A }, + { 0x1380, 0x138F }, + { 0x13A0, 0x13F5 }, + { 0x13F8, 0x13FD }, + { 0x1401, 0x166C }, + { 0x166F, 0x167F }, + { 0x1681, 0x169A }, + { 0x16A0, 0x16EA }, + { 0x16F1, 0x16F8 }, + { 0x1700, 0x1711 }, + { 0x171F, 0x1731 }, + { 0x1740, 0x1751 }, + { 0x1760, 0x176C }, + { 0x176E, 0x1770 }, + { 0x1780, 0x17B3 }, + { 0x1820, 0x1878 }, + { 0x1880, 0x1884 }, + { 0x1887, 0x18A8 }, + { 0x18B0, 0x18F5 }, + { 0x1900, 0x191E }, + { 0x1950, 0x196D }, + { 0x1970, 0x1974 }, + { 0x1980, 0x19AB }, + { 0x19B0, 0x19C9 }, + { 0x1A00, 0x1A16 }, + { 0x1A20, 0x1A54 }, + { 0x1B05, 0x1B33 }, + { 0x1B45, 0x1B4C }, + { 0x1B83, 0x1BA0 }, + { 0x1BAE, 0x1BAF }, + { 0x1BBA, 0x1BE5 }, + { 0x1C00, 0x1C23 }, + { 0x1C4D, 0x1C4F }, + { 0x1C5A, 0x1C7D }, + { 0x1C80, 0x1C88 }, + { 0x1C90, 0x1CBA }, + { 0x1CBD, 0x1CBF }, + { 0x1CE9, 0x1CEC }, + { 0x1CEE, 0x1CF3 }, + { 0x1CF5, 0x1CF6 }, + { 0x1D00, 0x1DBF }, + { 0x1E00, 0x1F15 }, + { 0x1F18, 0x1F1D }, + { 0x1F20, 0x1F45 }, + { 0x1F48, 0x1F4D }, + { 0x1F50, 0x1F57 }, + { 0x1F5F, 0x1F7D }, + { 0x1F80, 0x1FB4 }, + { 0x1FB6, 0x1FBC }, + { 0x1FC2, 0x1FC4 }, + { 0x1FC6, 0x1FCC }, + { 0x1FD0, 0x1FD3 }, + { 0x1FD6, 0x1FDB }, + { 0x1FE0, 0x1FEC }, + { 0x1FF2, 0x1FF4 }, + { 0x1FF6, 0x1FFC }, + { 0x2090, 0x209C }, + { 0x210A, 0x2113 }, + { 0x2119, 0x211D }, + { 0x212A, 0x212D }, + { 0x212F, 0x2139 }, + { 0x213C, 0x213F }, + { 0x2145, 0x2149 }, + { 0x2183, 0x2184 }, + { 0x2C00, 0x2CE4 }, + { 0x2CEB, 0x2CEE }, + { 0x2CF2, 0x2CF3 }, + { 0x2D00, 0x2D25 }, + { 0x2D30, 0x2D67 }, + { 0x2D80, 0x2D96 }, + { 0x2DA0, 0x2DA6 }, + { 0x2DA8, 0x2DAE }, + { 0x2DB0, 0x2DB6 }, + { 0x2DB8, 0x2DBE }, + { 0x2DC0, 0x2DC6 }, + { 0x2DC8, 0x2DCE }, + { 0x2DD0, 0x2DD6 }, + { 0x2DD8, 0x2DDE }, + { 0x3005, 0x3006 }, + { 0x3031, 0x3035 }, + { 0x303B, 0x303C }, + { 0x3041, 0x3096 }, + { 0x309D, 0x309F }, + { 0x30A1, 0x30FA }, + { 0x30FC, 0x30FF }, + { 0x3105, 0x312F }, + { 0x3131, 0x318E }, + { 0x31A0, 0x31BF }, + { 0x31F0, 0x31FF }, + { 0x9FFF, 0xA48C }, + { 0xA4D0, 0xA4FD }, + { 0xA500, 0xA60C }, + { 0xA610, 0xA61F }, + { 0xA62A, 0xA62B }, + { 0xA640, 0xA66E }, + { 0xA67F, 0xA69D }, + { 0xA6A0, 0xA6E5 }, + { 0xA717, 0xA71F }, + { 0xA722, 0xA788 }, + { 0xA78B, 0xA7CA }, + { 0xA7D0, 0xA7D1 }, + { 0xA7D5, 0xA7D9 }, + { 0xA7F2, 0xA801 }, + { 0xA803, 0xA805 }, + { 0xA807, 0xA80A }, + { 0xA80C, 0xA822 }, + { 0xA840, 0xA873 }, + { 0xA882, 0xA8B3 }, + { 0xA8F2, 0xA8F7 }, + { 0xA8FD, 0xA8FE }, + { 0xA90A, 0xA925 }, + { 0xA930, 0xA946 }, + { 0xA960, 0xA97C }, + { 0xA984, 0xA9B2 }, + { 0xA9E0, 0xA9E4 }, + { 0xA9E6, 0xA9EF }, + { 0xA9FA, 0xA9FE }, + { 0xAA00, 0xAA28 }, + { 0xAA40, 0xAA42 }, + { 0xAA44, 0xAA4B }, + { 0xAA60, 0xAA76 }, + { 0xAA7E, 0xAAAF }, + { 0xAAB5, 0xAAB6 }, + { 0xAAB9, 0xAABD }, + { 0xAADB, 0xAADD }, + { 0xAAE0, 0xAAEA }, + { 0xAAF2, 0xAAF4 }, + { 0xAB01, 0xAB06 }, + { 0xAB09, 0xAB0E }, + { 0xAB11, 0xAB16 }, + { 0xAB20, 0xAB26 }, + { 0xAB28, 0xAB2E }, + { 0xAB30, 0xAB5A }, + { 0xAB5C, 0xAB69 }, + { 0xAB70, 0xABE2 }, + { 0xD7B0, 0xD7C6 }, + { 0xD7CB, 0xD7FB }, + { 0xF900, 0xFA6D }, + { 0xFA70, 0xFAD9 }, + { 0xFB00, 0xFB06 }, + { 0xFB13, 0xFB17 }, + { 0xFB1F, 0xFB28 }, + { 0xFB2A, 0xFB36 }, + { 0xFB38, 0xFB3C }, + { 0xFB40, 0xFB41 }, + { 0xFB43, 0xFB44 }, + { 0xFB46, 0xFBB1 }, + { 0xFBD3, 0xFD3D }, + { 0xFD50, 0xFD8F }, + { 0xFD92, 0xFDC7 }, + { 0xFDF0, 0xFDFB }, + { 0xFE70, 0xFE74 }, + { 0xFE76, 0xFEFC }, + { 0xFF21, 0xFF3A }, + { 0xFF41, 0xFF5A }, + { 0xFF66, 0xFFBE }, + { 0xFFC2, 0xFFC7 }, + { 0xFFCA, 0xFFCF }, + { 0xFFD2, 0xFFD7 }, + { 0xFFDA, 0xFFDC }, + { 0x10000, 0x1000B }, + { 0x1000D, 0x10026 }, + { 0x10028, 0x1003A }, + { 0x1003C, 0x1003D }, + { 0x1003F, 0x1004D }, + { 0x10050, 0x1005D }, + { 0x10080, 0x100FA }, + { 0x10280, 0x1029C }, + { 0x102A0, 0x102D0 }, + { 0x10300, 0x1031F }, + { 0x1032D, 0x10340 }, + { 0x10342, 0x10349 }, + { 0x10350, 0x10375 }, + { 0x10380, 0x1039D }, + { 0x103A0, 0x103C3 }, + { 0x103C8, 0x103CF }, + { 0x10400, 0x1049D }, + { 0x104B0, 0x104D3 }, + { 0x104D8, 0x104FB }, + { 0x10500, 0x10527 }, + { 0x10530, 0x10563 }, + { 0x10570, 0x1057A }, + { 0x1057C, 0x1058A }, + { 0x1058C, 0x10592 }, + { 0x10594, 0x10595 }, + { 0x10597, 0x105A1 }, + { 0x105A3, 0x105B1 }, + { 0x105B3, 0x105B9 }, + { 0x105BB, 0x105BC }, + { 0x10600, 0x10736 }, + { 0x10740, 0x10755 }, + { 0x10760, 0x10767 }, + { 0x10780, 0x10785 }, + { 0x10787, 0x107B0 }, + { 0x107B2, 0x107BA }, + { 0x10800, 0x10805 }, + { 0x1080A, 0x10835 }, + { 0x10837, 0x10838 }, + { 0x1083F, 0x10855 }, + { 0x10860, 0x10876 }, + { 0x10880, 0x1089E }, + { 0x108E0, 0x108F2 }, + { 0x108F4, 0x108F5 }, + { 0x10900, 0x10915 }, + { 0x10920, 0x10939 }, + { 0x10980, 0x109B7 }, + { 0x109BE, 0x109BF }, + { 0x10A10, 0x10A13 }, + { 0x10A15, 0x10A17 }, + { 0x10A19, 0x10A35 }, + { 0x10A60, 0x10A7C }, + { 0x10A80, 0x10A9C }, + { 0x10AC0, 0x10AC7 }, + { 0x10AC9, 0x10AE4 }, + { 0x10B00, 0x10B35 }, + { 0x10B40, 0x10B55 }, + { 0x10B60, 0x10B72 }, + { 0x10B80, 0x10B91 }, + { 0x10C00, 0x10C48 }, + { 0x10C80, 0x10CB2 }, + { 0x10CC0, 0x10CF2 }, + { 0x10D00, 0x10D23 }, + { 0x10E80, 0x10EA9 }, + { 0x10EB0, 0x10EB1 }, + { 0x10F00, 0x10F1C }, + { 0x10F30, 0x10F45 }, + { 0x10F70, 0x10F81 }, + { 0x10FB0, 0x10FC4 }, + { 0x10FE0, 0x10FF6 }, + { 0x11003, 0x11037 }, + { 0x11071, 0x11072 }, + { 0x11083, 0x110AF }, + { 0x110D0, 0x110E8 }, + { 0x11103, 0x11126 }, + { 0x11150, 0x11172 }, + { 0x11183, 0x111B2 }, + { 0x111C1, 0x111C4 }, + { 0x11200, 0x11211 }, + { 0x11213, 0x1122B }, + { 0x1123F, 0x11240 }, + { 0x11280, 0x11286 }, + { 0x1128A, 0x1128D }, + { 0x1128F, 0x1129D }, + { 0x1129F, 0x112A8 }, + { 0x112B0, 0x112DE }, + { 0x11305, 0x1130C }, + { 0x1130F, 0x11310 }, + { 0x11313, 0x11328 }, + { 0x1132A, 0x11330 }, + { 0x11332, 0x11333 }, + { 0x11335, 0x11339 }, + { 0x1135D, 0x11361 }, + { 0x11400, 0x11434 }, + { 0x11447, 0x1144A }, + { 0x1145F, 0x11461 }, + { 0x11480, 0x114AF }, + { 0x114C4, 0x114C5 }, + { 0x11580, 0x115AE }, + { 0x115D8, 0x115DB }, + { 0x11600, 0x1162F }, + { 0x11680, 0x116AA }, + { 0x11700, 0x1171A }, + { 0x11740, 0x11746 }, + { 0x11800, 0x1182B }, + { 0x118A0, 0x118DF }, + { 0x118FF, 0x11906 }, + { 0x1190C, 0x11913 }, + { 0x11915, 0x11916 }, + { 0x11918, 0x1192F }, + { 0x119A0, 0x119A7 }, + { 0x119AA, 0x119D0 }, + { 0x11A0B, 0x11A32 }, + { 0x11A5C, 0x11A89 }, + { 0x11AB0, 0x11AF8 }, + { 0x11C00, 0x11C08 }, + { 0x11C0A, 0x11C2E }, + { 0x11C72, 0x11C8F }, + { 0x11D00, 0x11D06 }, + { 0x11D08, 0x11D09 }, + { 0x11D0B, 0x11D30 }, + { 0x11D60, 0x11D65 }, + { 0x11D67, 0x11D68 }, + { 0x11D6A, 0x11D89 }, + { 0x11EE0, 0x11EF2 }, + { 0x11F04, 0x11F10 }, + { 0x11F12, 0x11F33 }, + { 0x12000, 0x12399 }, + { 0x12480, 0x12543 }, + { 0x12F90, 0x12FF0 }, + { 0x13000, 0x1342F }, + { 0x13441, 0x13446 }, + { 0x14400, 0x14646 }, + { 0x16800, 0x16A38 }, + { 0x16A40, 0x16A5E }, + { 0x16A70, 0x16ABE }, + { 0x16AD0, 0x16AED }, + { 0x16B00, 0x16B2F }, + { 0x16B40, 0x16B43 }, + { 0x16B63, 0x16B77 }, + { 0x16B7D, 0x16B8F }, + { 0x16E40, 0x16E7F }, + { 0x16F00, 0x16F4A }, + { 0x16F93, 0x16F9F }, + { 0x16FE0, 0x16FE1 }, + { 0x18800, 0x18CD5 }, + { 0x1AFF0, 0x1AFF3 }, + { 0x1AFF5, 0x1AFFB }, + { 0x1AFFD, 0x1AFFE }, + { 0x1B000, 0x1B122 }, + { 0x1B150, 0x1B152 }, + { 0x1B164, 0x1B167 }, + { 0x1B170, 0x1B2FB }, + { 0x1BC00, 0x1BC6A }, + { 0x1BC70, 0x1BC7C }, + { 0x1BC80, 0x1BC88 }, + { 0x1BC90, 0x1BC99 }, + { 0x1D400, 0x1D454 }, + { 0x1D456, 0x1D49C }, + { 0x1D49E, 0x1D49F }, + { 0x1D4A5, 0x1D4A6 }, + { 0x1D4A9, 0x1D4AC }, + { 0x1D4AE, 0x1D4B9 }, + { 0x1D4BD, 0x1D4C3 }, + { 0x1D4C5, 0x1D505 }, + { 0x1D507, 0x1D50A }, + { 0x1D50D, 0x1D514 }, + { 0x1D516, 0x1D51C }, + { 0x1D51E, 0x1D539 }, + { 0x1D53B, 0x1D53E }, + { 0x1D540, 0x1D544 }, + { 0x1D54A, 0x1D550 }, + { 0x1D552, 0x1D6A5 }, + { 0x1D6A8, 0x1D6C0 }, + { 0x1D6C2, 0x1D6DA }, + { 0x1D6DC, 0x1D6FA }, + { 0x1D6FC, 0x1D714 }, + { 0x1D716, 0x1D734 }, + { 0x1D736, 0x1D74E }, + { 0x1D750, 0x1D76E }, + { 0x1D770, 0x1D788 }, + { 0x1D78A, 0x1D7A8 }, + { 0x1D7AA, 0x1D7C2 }, + { 0x1D7C4, 0x1D7CB }, + { 0x1DF00, 0x1DF1E }, + { 0x1DF25, 0x1DF2A }, + { 0x1E030, 0x1E06D }, + { 0x1E100, 0x1E12C }, + { 0x1E137, 0x1E13D }, + { 0x1E290, 0x1E2AD }, + { 0x1E2C0, 0x1E2EB }, + { 0x1E4D0, 0x1E4EB }, + { 0x1E7E0, 0x1E7E6 }, + { 0x1E7E8, 0x1E7EB }, + { 0x1E7ED, 0x1E7EE }, + { 0x1E7F0, 0x1E7FE }, + { 0x1E800, 0x1E8C4 }, + { 0x1E900, 0x1E943 }, + { 0x1EE00, 0x1EE03 }, + { 0x1EE05, 0x1EE1F }, + { 0x1EE21, 0x1EE22 }, + { 0x1EE29, 0x1EE32 }, + { 0x1EE34, 0x1EE37 }, + { 0x1EE4D, 0x1EE4F }, + { 0x1EE51, 0x1EE52 }, + { 0x1EE61, 0x1EE62 }, + { 0x1EE67, 0x1EE6A }, + { 0x1EE6C, 0x1EE72 }, + { 0x1EE74, 0x1EE77 }, + { 0x1EE79, 0x1EE7C }, + { 0x1EE80, 0x1EE89 }, + { 0x1EE8B, 0x1EE9B }, + { 0x1EEA1, 0x1EEA3 }, + { 0x1EEA5, 0x1EEA9 }, + { 0x1EEAB, 0x1EEBB }, + { 0x2F800, 0x2FA1D }, +}; + +static const Rune alpha1[] = { + 0x00AA, + 0x00B5, + 0x00BA, + 0x0559, + 0x06FF, + 0x07B1, + 0x07FA, + 0x081A, + 0x0824, + 0x0828, + 0x093D, + 0x0950, + 0x09BD, + 0x09CE, + 0x09FC, + 0x0ABD, + 0x0AD0, + 0x0AF9, + 0x0B3D, + 0x0B71, + 0x0BD0, + 0x0C3D, + 0x0C5D, + 0x0C80, + 0x0CBD, + 0x0D3D, + 0x0D4E, + 0x0EBD, + 0x0F00, + 0x103F, + 0x1061, + 0x108E, + 0x10CD, + 0x17D7, + 0x17DC, + 0x1AA7, + 0x1CFA, + 0x2071, + 0x207F, + 0x2102, + 0x2107, + 0x214E, + 0x2D2D, + 0x2D6F, + 0x2E2F, + 0x3400, + 0x4DBF, + 0x4E00, + 0xA9CF, + 0xAA7A, + 0xAC00, + 0xD7A3, + 0x1083C, + 0x10A00, + 0x10F27, + 0x11075, + 0x11144, + 0x11147, + 0x11176, + 0x1133D, + 0x11350, + 0x11644, + 0x116B8, + 0x11909, + 0x11A00, + 0x11A3A, + 0x11A50, + 0x11A9D, + 0x11C40, + 0x11D46, + 0x11D98, + 0x11FB0, + 0x16F50, + 0x17000, + 0x187F7, + 0x18D00, + 0x18D08, + 0x1B132, + 0x1B155, + 0x1D4A2, + 0x1E14E, + 0x1E94B, + 0x1EE42, + 0x20000, + 0x2A6DF, + 0x2A700, + 0x2B739, + 0x2B740, + 0x2B81D, + 0x2B820, + 0x2CEA1, + 0x2CEB0, + 0x2EBE0, + 0x30000, + 0x3134A, + 0x31350, + 0x323AF, +}; + +int +isalpharune(Rune r) +{ + const Rune *match; + + if((match = bsearch(&r, alpha3, nelem(alpha3), sizeof *alpha3, &rune2cmp))) + return !((r - match[0]) % 2); + if(bsearch(&r, alpha2, nelem(alpha2), sizeof *alpha2, &rune2cmp)) + return 1; + if(bsearch(&r, alpha1, nelem(alpha1), sizeof *alpha1, &rune1cmp)) + return 1; + return 0; +} diff --git a/util/sbase/libutf/isblankrune.c b/util/sbase/libutf/isblankrune.c new file mode 100644 index 00000000..7cf91597 --- /dev/null +++ b/util/sbase/libutf/isblankrune.c @@ -0,0 +1,9 @@ +/* Automatically generated by mkrunetype.awk */ +#include "../utf.h" +#include "runetype.h" + +int +isblankrune(Rune r) +{ + return r == ' ' || r == '\t'; +} diff --git a/util/sbase/libutf/iscntrlrune.c b/util/sbase/libutf/iscntrlrune.c new file mode 100644 index 00000000..603e57cb --- /dev/null +++ b/util/sbase/libutf/iscntrlrune.c @@ -0,0 +1,18 @@ +/* Automatically generated by mkrunetype.awk */ +#include <stdlib.h> + +#include "../utf.h" +#include "runetype.h" + +static const Rune cntrl2[][2] = { + { 0x0000, 0x001F }, + { 0x007F, 0x009F }, +}; + +int +iscntrlrune(Rune r) +{ + if(bsearch(&r, cntrl2, nelem(cntrl2), sizeof *cntrl2, &rune2cmp)) + return 1; + return 0; +} diff --git a/util/sbase/libutf/isdigitrune.c b/util/sbase/libutf/isdigitrune.c new file mode 100644 index 00000000..c8901bc4 --- /dev/null +++ b/util/sbase/libutf/isdigitrune.c @@ -0,0 +1,80 @@ +/* Automatically generated by mkrunetype.awk */ +#include <stdlib.h> + +#include "../utf.h" +#include "runetype.h" + +static const Rune digit2[][2] = { + { 0x0030, 0x0039 }, + { 0x0660, 0x0669 }, + { 0x06F0, 0x06F9 }, + { 0x07C0, 0x07C9 }, + { 0x0966, 0x096F }, + { 0x09E6, 0x09EF }, + { 0x0A66, 0x0A6F }, + { 0x0AE6, 0x0AEF }, + { 0x0B66, 0x0B6F }, + { 0x0BE6, 0x0BEF }, + { 0x0C66, 0x0C6F }, + { 0x0CE6, 0x0CEF }, + { 0x0D66, 0x0D6F }, + { 0x0DE6, 0x0DEF }, + { 0x0E50, 0x0E59 }, + { 0x0ED0, 0x0ED9 }, + { 0x0F20, 0x0F29 }, + { 0x1040, 0x1049 }, + { 0x1090, 0x1099 }, + { 0x17E0, 0x17E9 }, + { 0x1810, 0x1819 }, + { 0x1946, 0x194F }, + { 0x19D0, 0x19D9 }, + { 0x1A80, 0x1A89 }, + { 0x1A90, 0x1A99 }, + { 0x1B50, 0x1B59 }, + { 0x1BB0, 0x1BB9 }, + { 0x1C40, 0x1C49 }, + { 0x1C50, 0x1C59 }, + { 0xA620, 0xA629 }, + { 0xA8D0, 0xA8D9 }, + { 0xA900, 0xA909 }, + { 0xA9D0, 0xA9D9 }, + { 0xA9F0, 0xA9F9 }, + { 0xAA50, 0xAA59 }, + { 0xABF0, 0xABF9 }, + { 0xFF10, 0xFF19 }, + { 0x104A0, 0x104A9 }, + { 0x10D30, 0x10D39 }, + { 0x11066, 0x1106F }, + { 0x110F0, 0x110F9 }, + { 0x11136, 0x1113F }, + { 0x111D0, 0x111D9 }, + { 0x112F0, 0x112F9 }, + { 0x11450, 0x11459 }, + { 0x114D0, 0x114D9 }, + { 0x11650, 0x11659 }, + { 0x116C0, 0x116C9 }, + { 0x11730, 0x11739 }, + { 0x118E0, 0x118E9 }, + { 0x11950, 0x11959 }, + { 0x11C50, 0x11C59 }, + { 0x11D50, 0x11D59 }, + { 0x11DA0, 0x11DA9 }, + { 0x11F50, 0x11F59 }, + { 0x16A60, 0x16A69 }, + { 0x16AC0, 0x16AC9 }, + { 0x16B50, 0x16B59 }, + { 0x1D7CE, 0x1D7FF }, + { 0x1E140, 0x1E149 }, + { 0x1E2F0, 0x1E2F9 }, + { 0x1E4F0, 0x1E4F9 }, + { 0x1E950, 0x1E959 }, + { 0x1FBF0, 0x1FBF9 }, +}; + +int +isdigitrune(Rune r) +{ + if(bsearch(&r, digit2, nelem(digit2), sizeof *digit2, &rune2cmp)) + return 1; + return 0; +} diff --git a/util/sbase/libutf/isgraphrune.c b/util/sbase/libutf/isgraphrune.c new file mode 100644 index 00000000..08770f64 --- /dev/null +++ b/util/sbase/libutf/isgraphrune.c @@ -0,0 +1,9 @@ +/* Automatically generated by mkrunetype.awk */ +#include "../utf.h" +#include "runetype.h" + +int +isgraphrune(Rune r) +{ + return !isspacerune(r) && isprintrune(r); +} diff --git a/util/sbase/libutf/isprintrune.c b/util/sbase/libutf/isprintrune.c new file mode 100644 index 00000000..f6e2fa48 --- /dev/null +++ b/util/sbase/libutf/isprintrune.c @@ -0,0 +1,10 @@ +/* Automatically generated by mkrunetype.awk */ +#include "../utf.h" +#include "runetype.h" + +int +isprintrune(Rune r) +{ + return !iscntrlrune(r) && (r != 0x2028) && (r != 0x2029) && + ((r < 0xFFF9) || (r > 0xFFFB)); +} diff --git a/util/sbase/libutf/ispunctrune.c b/util/sbase/libutf/ispunctrune.c new file mode 100644 index 00000000..d73cb25b --- /dev/null +++ b/util/sbase/libutf/ispunctrune.c @@ -0,0 +1,9 @@ +/* Automatically generated by mkrunetype.awk */ +#include "../utf.h" +#include "runetype.h" + +int +ispunctrune(Rune r) +{ + return isgraphrune(r) && !isalnumrune(r); +} diff --git a/util/sbase/libutf/isspacerune.c b/util/sbase/libutf/isspacerune.c new file mode 100644 index 00000000..8583f932 --- /dev/null +++ b/util/sbase/libutf/isspacerune.c @@ -0,0 +1,31 @@ +/* Automatically generated by mkrunetype.awk */ +#include <stdlib.h> + +#include "../utf.h" +#include "runetype.h" + +static const Rune space2[][2] = { + { 0x0009, 0x000D }, + { 0x001C, 0x0020 }, + { 0x2000, 0x200A }, + { 0x2028, 0x2029 }, +}; + +static const Rune space1[] = { + 0x0085, + 0x00A0, + 0x1680, + 0x202F, + 0x205F, + 0x3000, +}; + +int +isspacerune(Rune r) +{ + if(bsearch(&r, space2, nelem(space2), sizeof *space2, &rune2cmp)) + return 1; + if(bsearch(&r, space1, nelem(space1), sizeof *space1, &rune1cmp)) + return 1; + return 0; +} diff --git a/util/sbase/libutf/istitlerune.c b/util/sbase/libutf/istitlerune.c new file mode 100644 index 00000000..36b38d12 --- /dev/null +++ b/util/sbase/libutf/istitlerune.c @@ -0,0 +1,31 @@ +/* Automatically generated by mkrunetype.awk */ +#include <stdlib.h> + +#include "../utf.h" +#include "runetype.h" + +static const Rune title2[][2] = { + { 0x1F88, 0x1F8F }, + { 0x1F98, 0x1F9F }, + { 0x1FA8, 0x1FAF }, +}; + +static const Rune title1[] = { + 0x01C5, + 0x01C8, + 0x01CB, + 0x01F2, + 0x1FBC, + 0x1FCC, + 0x1FFC, +}; + +int +istitlerune(Rune r) +{ + if(bsearch(&r, title2, nelem(title2), sizeof *title2, &rune2cmp)) + return 1; + if(bsearch(&r, title1, nelem(title1), sizeof *title1, &rune1cmp)) + return 1; + return 0; +} diff --git a/util/sbase/libutf/isxdigitrune.c b/util/sbase/libutf/isxdigitrune.c new file mode 100644 index 00000000..0797240a --- /dev/null +++ b/util/sbase/libutf/isxdigitrune.c @@ -0,0 +1,9 @@ +/* Automatically generated by mkrunetype.awk */ +#include "../utf.h" +#include "runetype.h" + +int +isxdigitrune(Rune r) +{ + return (r >= '0' && (r - '0') < 10) || (r >= 'a' && (r - 'a') < 6); +} diff --git a/util/sbase/libutf/lowerrune.c b/util/sbase/libutf/lowerrune.c new file mode 100644 index 00000000..d91a364b --- /dev/null +++ b/util/sbase/libutf/lowerrune.c @@ -0,0 +1,356 @@ +/* Automatically generated by mkrunetype.awk */ +#include <stdlib.h> + +#include "../utf.h" +#include "runetype.h" + +static const Rune lower4[][2] = { + { 0x0101, 0x012F }, + { 0x0133, 0x0137 }, + { 0x013A, 0x0148 }, + { 0x014B, 0x0177 }, + { 0x017A, 0x017E }, + { 0x0183, 0x0185 }, + { 0x01A1, 0x01A5 }, + { 0x01B4, 0x01B6 }, + { 0x01CE, 0x01DC }, + { 0x01DF, 0x01EF }, + { 0x01F9, 0x021F }, + { 0x0223, 0x0233 }, + { 0x0247, 0x024F }, + { 0x0371, 0x0373 }, + { 0x03D9, 0x03EF }, + { 0x0461, 0x0481 }, + { 0x048B, 0x04BF }, + { 0x04C2, 0x04CE }, + { 0x04D1, 0x052F }, + { 0x1E01, 0x1E95 }, + { 0x1EA1, 0x1EFF }, + { 0x2C68, 0x2C6C }, + { 0x2C81, 0x2CE3 }, + { 0x2CEC, 0x2CEE }, + { 0xA641, 0xA66D }, + { 0xA681, 0xA69B }, + { 0xA723, 0xA72F }, + { 0xA733, 0xA76F }, + { 0xA77A, 0xA77C }, + { 0xA77F, 0xA787 }, + { 0xA791, 0xA793 }, + { 0xA797, 0xA7A9 }, + { 0xA7B5, 0xA7C3 }, + { 0xA7C8, 0xA7CA }, + { 0xA7D7, 0xA7D9 }, +}; + +static const Rune lower2[][3] = { + { 0x0061, 0x007A, 0x0041 }, + { 0x00E0, 0x00F6, 0x00C0 }, + { 0x00F8, 0x00FE, 0x00D8 }, + { 0x01AA, 0x01AB, 0x01AA }, + { 0x0234, 0x0239, 0x0234 }, + { 0x023F, 0x0240, 0x2C7E }, + { 0x0256, 0x0257, 0x0189 }, + { 0x025D, 0x025F, 0x025D }, + { 0x026D, 0x026E, 0x026D }, + { 0x0273, 0x0274, 0x0273 }, + { 0x0276, 0x027C, 0x0276 }, + { 0x027E, 0x027F, 0x027E }, + { 0x0284, 0x0286, 0x0284 }, + { 0x028A, 0x028B, 0x01B1 }, + { 0x028D, 0x0291, 0x028D }, + { 0x0295, 0x029C, 0x0295 }, + { 0x029F, 0x02AF, 0x029F }, + { 0x037B, 0x037D, 0x03FD }, + { 0x03AD, 0x03AF, 0x0388 }, + { 0x03B1, 0x03C1, 0x0391 }, + { 0x03C3, 0x03CB, 0x03A3 }, + { 0x03CD, 0x03CE, 0x038E }, + { 0x0430, 0x044F, 0x0410 }, + { 0x0450, 0x045F, 0x0400 }, + { 0x0561, 0x0586, 0x0531 }, + { 0x0587, 0x0588, 0x0587 }, + { 0x10D0, 0x10FA, 0x1C90 }, + { 0x10FD, 0x10FF, 0x1CBD }, + { 0x13F8, 0x13FD, 0x13F0 }, + { 0x1C83, 0x1C84, 0x0421 }, + { 0x1D00, 0x1D2B, 0x1D00 }, + { 0x1D6B, 0x1D77, 0x1D6B }, + { 0x1D7A, 0x1D7C, 0x1D7A }, + { 0x1D7E, 0x1D8D, 0x1D7E }, + { 0x1D8F, 0x1D9A, 0x1D8F }, + { 0x1E96, 0x1E9A, 0x1E96 }, + { 0x1E9C, 0x1E9D, 0x1E9C }, + { 0x1F00, 0x1F07, 0x1F08 }, + { 0x1F10, 0x1F15, 0x1F18 }, + { 0x1F20, 0x1F27, 0x1F28 }, + { 0x1F30, 0x1F37, 0x1F38 }, + { 0x1F40, 0x1F45, 0x1F48 }, + { 0x1F60, 0x1F67, 0x1F68 }, + { 0x1F70, 0x1F71, 0x1FBA }, + { 0x1F72, 0x1F75, 0x1FC8 }, + { 0x1F76, 0x1F77, 0x1FDA }, + { 0x1F78, 0x1F79, 0x1FF8 }, + { 0x1F7A, 0x1F7B, 0x1FEA }, + { 0x1F7C, 0x1F7D, 0x1FFA }, + { 0x1F80, 0x1F87, 0x1F88 }, + { 0x1F90, 0x1F97, 0x1F98 }, + { 0x1FA0, 0x1FA7, 0x1FA8 }, + { 0x1FB0, 0x1FB1, 0x1FB8 }, + { 0x1FB6, 0x1FB7, 0x1FB6 }, + { 0x1FC6, 0x1FC7, 0x1FC6 }, + { 0x1FD0, 0x1FD1, 0x1FD8 }, + { 0x1FD2, 0x1FD3, 0x1FD2 }, + { 0x1FD6, 0x1FD7, 0x1FD6 }, + { 0x1FE0, 0x1FE1, 0x1FE8 }, + { 0x1FE2, 0x1FE4, 0x1FE2 }, + { 0x1FE6, 0x1FE7, 0x1FE6 }, + { 0x1FF6, 0x1FF7, 0x1FF6 }, + { 0x210E, 0x210F, 0x210E }, + { 0x213C, 0x213D, 0x213C }, + { 0x2146, 0x2149, 0x2146 }, + { 0x2C30, 0x2C5F, 0x2C00 }, + { 0x2C77, 0x2C7B, 0x2C77 }, + { 0x2D00, 0x2D25, 0x10A0 }, + { 0xA730, 0xA731, 0xA730 }, + { 0xA771, 0xA778, 0xA771 }, + { 0xAB30, 0xAB52, 0xAB30 }, + { 0xAB54, 0xAB5A, 0xAB54 }, + { 0xAB60, 0xAB68, 0xAB60 }, + { 0xAB70, 0xABBF, 0x13A0 }, + { 0xFB00, 0xFB06, 0xFB00 }, + { 0xFB13, 0xFB17, 0xFB13 }, + { 0xFF41, 0xFF5A, 0xFF21 }, + { 0x10428, 0x1044F, 0x10400 }, + { 0x104D8, 0x104FB, 0x104B0 }, + { 0x10597, 0x105A1, 0x10570 }, + { 0x105A3, 0x105B1, 0x1057C }, + { 0x105B3, 0x105B9, 0x1058C }, + { 0x105BB, 0x105BC, 0x10594 }, + { 0x10CC0, 0x10CF2, 0x10C80 }, + { 0x118C0, 0x118DF, 0x118A0 }, + { 0x16E60, 0x16E7F, 0x16E40 }, + { 0x1D41A, 0x1D433, 0x1D41A }, + { 0x1D44E, 0x1D454, 0x1D44E }, + { 0x1D456, 0x1D467, 0x1D456 }, + { 0x1D482, 0x1D49B, 0x1D482 }, + { 0x1D4B6, 0x1D4B9, 0x1D4B6 }, + { 0x1D4BD, 0x1D4C3, 0x1D4BD }, + { 0x1D4C5, 0x1D4CF, 0x1D4C5 }, + { 0x1D4EA, 0x1D503, 0x1D4EA }, + { 0x1D51E, 0x1D537, 0x1D51E }, + { 0x1D552, 0x1D56B, 0x1D552 }, + { 0x1D586, 0x1D59F, 0x1D586 }, + { 0x1D5BA, 0x1D5D3, 0x1D5BA }, + { 0x1D5EE, 0x1D607, 0x1D5EE }, + { 0x1D622, 0x1D63B, 0x1D622 }, + { 0x1D656, 0x1D66F, 0x1D656 }, + { 0x1D68A, 0x1D6A5, 0x1D68A }, + { 0x1D6C2, 0x1D6DA, 0x1D6C2 }, + { 0x1D6DC, 0x1D6E1, 0x1D6DC }, + { 0x1D6FC, 0x1D714, 0x1D6FC }, + { 0x1D716, 0x1D71B, 0x1D716 }, + { 0x1D736, 0x1D74E, 0x1D736 }, + { 0x1D750, 0x1D755, 0x1D750 }, + { 0x1D770, 0x1D788, 0x1D770 }, + { 0x1D78A, 0x1D78F, 0x1D78A }, + { 0x1D7AA, 0x1D7C2, 0x1D7AA }, + { 0x1D7C4, 0x1D7C9, 0x1D7C4 }, + { 0x1DF00, 0x1DF09, 0x1DF00 }, + { 0x1DF0B, 0x1DF1E, 0x1DF0B }, + { 0x1DF25, 0x1DF2A, 0x1DF25 }, + { 0x1E922, 0x1E943, 0x1E900 }, +}; + +static const Rune lower1[][2] = { + { 0x00B5, 0x039C }, + { 0x00DF, 0x00DF }, + { 0x00FF, 0x0178 }, + { 0x0131, 0x0049 }, + { 0x0138, 0x0138 }, + { 0x0149, 0x0149 }, + { 0x017F, 0x0053 }, + { 0x0180, 0x0243 }, + { 0x0188, 0x0187 }, + { 0x018C, 0x018B }, + { 0x018D, 0x018D }, + { 0x0192, 0x0191 }, + { 0x0195, 0x01F6 }, + { 0x0199, 0x0198 }, + { 0x019A, 0x023D }, + { 0x019B, 0x019B }, + { 0x019E, 0x0220 }, + { 0x01A8, 0x01A7 }, + { 0x01AD, 0x01AC }, + { 0x01B0, 0x01AF }, + { 0x01B9, 0x01B8 }, + { 0x01BA, 0x01BA }, + { 0x01BD, 0x01BC }, + { 0x01BE, 0x01BE }, + { 0x01BF, 0x01F7 }, + { 0x01C6, 0x01C4 }, + { 0x01C9, 0x01C7 }, + { 0x01CC, 0x01CA }, + { 0x01DD, 0x018E }, + { 0x01F0, 0x01F0 }, + { 0x01F3, 0x01F1 }, + { 0x01F5, 0x01F4 }, + { 0x0221, 0x0221 }, + { 0x023C, 0x023B }, + { 0x0242, 0x0241 }, + { 0x0250, 0x2C6F }, + { 0x0251, 0x2C6D }, + { 0x0252, 0x2C70 }, + { 0x0253, 0x0181 }, + { 0x0254, 0x0186 }, + { 0x0255, 0x0255 }, + { 0x0258, 0x0258 }, + { 0x0259, 0x018F }, + { 0x025A, 0x025A }, + { 0x025B, 0x0190 }, + { 0x025C, 0xA7AB }, + { 0x0260, 0x0193 }, + { 0x0261, 0xA7AC }, + { 0x0262, 0x0262 }, + { 0x0263, 0x0194 }, + { 0x0264, 0x0264 }, + { 0x0265, 0xA78D }, + { 0x0266, 0xA7AA }, + { 0x0267, 0x0267 }, + { 0x0268, 0x0197 }, + { 0x0269, 0x0196 }, + { 0x026A, 0xA7AE }, + { 0x026B, 0x2C62 }, + { 0x026C, 0xA7AD }, + { 0x026F, 0x019C }, + { 0x0270, 0x0270 }, + { 0x0271, 0x2C6E }, + { 0x0272, 0x019D }, + { 0x0275, 0x019F }, + { 0x027D, 0x2C64 }, + { 0x0280, 0x01A6 }, + { 0x0281, 0x0281 }, + { 0x0282, 0xA7C5 }, + { 0x0283, 0x01A9 }, + { 0x0287, 0xA7B1 }, + { 0x0288, 0x01AE }, + { 0x0289, 0x0244 }, + { 0x028C, 0x0245 }, + { 0x0292, 0x01B7 }, + { 0x0293, 0x0293 }, + { 0x029D, 0xA7B2 }, + { 0x029E, 0xA7B0 }, + { 0x0377, 0x0376 }, + { 0x0390, 0x0390 }, + { 0x03AC, 0x0386 }, + { 0x03B0, 0x03B0 }, + { 0x03C2, 0x03A3 }, + { 0x03CC, 0x038C }, + { 0x03D0, 0x0392 }, + { 0x03D1, 0x0398 }, + { 0x03D5, 0x03A6 }, + { 0x03D6, 0x03A0 }, + { 0x03D7, 0x03CF }, + { 0x03F0, 0x039A }, + { 0x03F1, 0x03A1 }, + { 0x03F2, 0x03F9 }, + { 0x03F3, 0x037F }, + { 0x03F5, 0x0395 }, + { 0x03F8, 0x03F7 }, + { 0x03FB, 0x03FA }, + { 0x03FC, 0x03FC }, + { 0x04CF, 0x04C0 }, + { 0x0560, 0x0560 }, + { 0x1C80, 0x0412 }, + { 0x1C81, 0x0414 }, + { 0x1C82, 0x041E }, + { 0x1C85, 0x0422 }, + { 0x1C86, 0x042A }, + { 0x1C87, 0x0462 }, + { 0x1C88, 0xA64A }, + { 0x1D79, 0xA77D }, + { 0x1D7D, 0x2C63 }, + { 0x1D8E, 0xA7C6 }, + { 0x1E9B, 0x1E60 }, + { 0x1E9F, 0x1E9F }, + { 0x1F50, 0x1F50 }, + { 0x1F51, 0x1F59 }, + { 0x1F52, 0x1F52 }, + { 0x1F53, 0x1F5B }, + { 0x1F54, 0x1F54 }, + { 0x1F55, 0x1F5D }, + { 0x1F56, 0x1F56 }, + { 0x1F57, 0x1F5F }, + { 0x1FB2, 0x1FB2 }, + { 0x1FB3, 0x1FBC }, + { 0x1FB4, 0x1FB4 }, + { 0x1FBE, 0x0399 }, + { 0x1FC2, 0x1FC2 }, + { 0x1FC3, 0x1FCC }, + { 0x1FC4, 0x1FC4 }, + { 0x1FE5, 0x1FEC }, + { 0x1FF2, 0x1FF2 }, + { 0x1FF3, 0x1FFC }, + { 0x1FF4, 0x1FF4 }, + { 0x210A, 0x210A }, + { 0x2113, 0x2113 }, + { 0x212F, 0x212F }, + { 0x2134, 0x2134 }, + { 0x2139, 0x2139 }, + { 0x214E, 0x2132 }, + { 0x2184, 0x2183 }, + { 0x2C61, 0x2C60 }, + { 0x2C65, 0x023A }, + { 0x2C66, 0x023E }, + { 0x2C71, 0x2C71 }, + { 0x2C73, 0x2C72 }, + { 0x2C74, 0x2C74 }, + { 0x2C76, 0x2C75 }, + { 0x2CE4, 0x2CE4 }, + { 0x2CF3, 0x2CF2 }, + { 0x2D27, 0x10C7 }, + { 0x2D2D, 0x10CD }, + { 0xA78C, 0xA78B }, + { 0xA78E, 0xA78E }, + { 0xA794, 0xA7C4 }, + { 0xA795, 0xA795 }, + { 0xA7AF, 0xA7AF }, + { 0xA7D1, 0xA7D0 }, + { 0xA7D3, 0xA7D3 }, + { 0xA7D5, 0xA7D5 }, + { 0xA7F6, 0xA7F5 }, + { 0xA7FA, 0xA7FA }, + { 0xAB53, 0xA7B3 }, + { 0x1D4BB, 0x1D4BB }, + { 0x1D7CB, 0x1D7CB }, +}; + +int +islowerrune(Rune r) +{ + const Rune *match; + + if((match = bsearch(&r, lower4, nelem(lower4), sizeof *lower4, &rune2cmp))) + return !((r - match[0]) % 2); + if(bsearch(&r, lower2, nelem(lower2), sizeof *lower2, &rune2cmp)) + return 1; + if(bsearch(&r, lower1, nelem(lower1), sizeof *lower1, &rune1cmp)) + return 1; + return 0; +} + +int +toupperrune(Rune r) +{ + Rune *match; + + match = bsearch(&r, lower4, nelem(lower4), sizeof *lower4, &rune2cmp); + if (match) + return ((r - match[0]) % 2) ? r : r - 1; + match = bsearch(&r, lower2, nelem(lower2), sizeof *lower2, &rune2cmp); + if (match) + return match[2] + (r - match[0]); + match = bsearch(&r, lower1, nelem(lower1), sizeof *lower1, &rune1cmp); + if (match) + return match[1]; + return r; +} diff --git a/util/sbase/libutf/mkrunetype.awk b/util/sbase/libutf/mkrunetype.awk new file mode 100644 index 00000000..e01ea2cc --- /dev/null +++ b/util/sbase/libutf/mkrunetype.awk @@ -0,0 +1,240 @@ +# See LICENSE file for copyright and license details. + +BEGIN { + FS = ";" + # set up hexadecimal lookup table + for(i = 0; i < 16; i++) + hex[sprintf("%X",i)] = i; + HEADER = "/* Automatically generated by mkrunetype.awk */\n#include <stdlib.h>\n\n#include \"../utf.h\"\n#include \"runetype.h\"\n" + HEADER_OTHER = "/* Automatically generated by mkrunetype.awk */\n#include \"../utf.h\"\n#include \"runetype.h\"\n" +} + +$3 ~ /^L/ { alphav[alphac++] = $1; } +($3 ~ /^Z/) || ($5 == "WS") || ($5 == "S") || ($5 == "B") { spacev[spacec++] = $1; } +$3 == "Cc" { cntrlv[cntrlc++] = $1; } +$3 == "Lu" { upperv[upperc++] = $1; tolowerv[uppercc++] = ($14 == "") ? $1 : $14; } +$3 == "Ll" { lowerv[lowerc++] = $1; toupperv[lowercc++] = ($13 == "") ? $1 : $13; } +$3 == "Lt" { titlev[titlec++] = $1; } +$3 == "Nd" { digitv[digitc++] = $1; } + +END { + system("rm -f isalpharune.c isspacerune.c iscntrlrune.c upperrune.c lowerrune.c istitlerune.c isdigitrune.c"); + + mkis("alpha", alphav, alphac, "isalpharune.c", q, ""); + mkis("space", spacev, spacec, "isspacerune.c", q, ""); + mkis("cntrl", cntrlv, cntrlc, "iscntrlrune.c", q, ""); + mkis("upper", upperv, upperc, "upperrune.c", tolowerv, "lower"); + mkis("lower", lowerv, lowerc, "lowerrune.c", toupperv, "upper"); + mkis("title", titlev, titlec, "istitlerune.c", q, ""); + mkis("digit", digitv, digitc, "isdigitrune.c", q, ""); + + system("rm -f isalnumrune.c isblankrune.c isprintrune.c isgraphrune.c ispunctrune.c isxdigitrune.c"); + + otheris(); +} + +# parse hexadecimal rune index to int +function code(s) { + x = 0; + for(i = 1; i <= length(s); i++) { + c = substr(s, i, 1); + x = (x*16) + hex[c]; + } + return x; +} + +# generate 'is<name>rune' unicode lookup function +function mkis(name, runev, runec, file, casev, casename) { + rune1c = 0; + rune2c = 0; + rune3c = 0; + rune4c = 0; + mode = 1; + + #sort rune groups into singletons, ranges and laces + for(j = 0; j < runec; j++) { + # range + if(code(runev[j+1]) == code(runev[j])+1 && ((length(casev) == 0) || + code(casev[j+1]) == code(casev[j])+1) && j+1 < runec) { + if (mode == 2) { + continue; + } else if (mode == 3) { + rune3v1[rune3c] = runev[j]; + rune3c++; + } else if (mode == 4) { + rune4v1[rune4c] = runev[j]; + rune4c++; + } + mode = 2; + rune2v0[rune2c] = runev[j]; + if(length(casev) > 0) { + case2v[rune2c] = casev[j]; + } + continue; + } + # lace 1 + if(code(runev[j+1]) == code(runev[j])+2 && ((length(casev) == 0) || + (code(casev[j+1]) == code(runev[j+1])+1 && code(casev[j]) == code(runev[j])+1)) && + j+1 < runec) { + if (mode == 3) { + continue; + } else if (mode == 2) { + rune2v1[rune2c] = runev[j]; + rune2c++; + } else if (mode == 4) { + rune4v1[rune2c] = runev[j]; + rune4c++; + } + mode = 3; + rune3v0[rune3c] = runev[j]; + continue; + } + # lace 2 + if(code(runev[j+1]) == code(runev[j])+2 && ((length(casev) == 0) || + (code(casev[j+1]) == code(runev[j+1])-1 && code(casev[j]) == code(runev[j])-1)) && + j+1 < runec) { + if (mode == 4) { + continue; + } else if (mode == 2) { + rune2v1[rune2c] = runev[j]; + rune2c++; + } else if (mode == 3) { + rune3v1[rune2c] = runev[j]; + rune3c++; + } + mode = 4; + rune4v0[rune4c] = runev[j]; + continue; + } + # terminating case + if (mode == 1) { + rune1v[rune1c] = runev[j]; + if (length(casev) > 0) { + case1v[rune1c] = casev[j]; + } + rune1c++; + } else if (mode == 2) { + rune2v1[rune2c] = runev[j]; + rune2c++; + } else if (mode == 3) { + rune3v1[rune3c] = runev[j]; + rune3c++; + } else { #lace 2 + rune4v1[rune4c] = runev[j]; + rune4c++; + } + mode = 1; + } + print HEADER > file; + + #generate list of laces 1 + if(rune3c > 0) { + print "static const Rune "name"3[][2] = {" > file; + for(j = 0; j < rune3c; j++) { + print "\t{ 0x"rune3v0[j]", 0x"rune3v1[j]" }," > file; + } + print "};\n" > file; + } + + #generate list of laces 2 + if(rune4c > 0) { + print "static const Rune "name"4[][2] = {" > file; + for(j = 0; j < rune4c; j++) { + print "\t{ 0x"rune4v0[j]", 0x"rune4v1[j]" }," > file; + } + print "};\n" > file; + } + + # generate list of ranges + if(rune2c > 0) { + if(length(casev) > 0) { + print "static const Rune "name"2[][3] = {" > file; + for(j = 0; j < rune2c; j++) { + print "\t{ 0x"rune2v0[j]", 0x"rune2v1[j]", 0x"case2v[j]" }," > file; + } + } else { + print "static const Rune "name"2[][2] = {" > file + for(j = 0; j < rune2c; j++) { + print "\t{ 0x"rune2v0[j]", 0x"rune2v1[j]" }," > file; + } + } + print "};\n" > file; + } + + # generate list of singletons + if(rune1c > 0) { + if(length(casev) > 0) { + print "static const Rune "name"1[][2] = {" > file; + for(j = 0; j < rune1c; j++) { + print "\t{ 0x"rune1v[j]", 0x"case1v[j]" }," > file; + } + } else { + print "static const Rune "name"1[] = {" > file; + for(j = 0; j < rune1c; j++) { + print "\t0x"rune1v[j]"," > file; + } + } + print "};\n" > file; + } + # generate lookup function + print "int\nis"name"rune(Rune r)\n{" > file; + if(rune4c > 0 || rune3c > 0) + print "\tconst Rune *match;\n" > file; + if(rune4c > 0) { + print "\tif((match = bsearch(&r, "name"4, nelem("name"4), sizeof *"name"4, &rune2cmp)))" > file; + print "\t\treturn !((r - match[0]) % 2);" > file; + } + if(rune3c > 0) { + print "\tif((match = bsearch(&r, "name"3, nelem("name"3), sizeof *"name"3, &rune2cmp)))" > file; + print "\t\treturn !((r - match[0]) % 2);" > file; + } + if(rune2c > 0) { + print "\tif(bsearch(&r, "name"2, nelem("name"2), sizeof *"name"2, &rune2cmp))\n\t\treturn 1;" > file; + } + if(rune1c > 0) { + print "\tif(bsearch(&r, "name"1, nelem("name"1), sizeof *"name"1, &rune1cmp))\n\t\treturn 1;" > file; + } + print "\treturn 0;\n}" > file; + + # generate case conversion function + if(length(casev) > 0) { + print "\nint\nto"casename"rune(Rune r)\n{\n\tRune *match;\n" > file; + if(rune4c > 0) { + print "\tmatch = bsearch(&r, "name"4, nelem("name"4), sizeof *"name"4, &rune2cmp);" > file; + print "\tif (match)" > file; + print "\t\treturn ((r - match[0]) % 2) ? r : r - 1;" > file; + } + if(rune3c > 0) { + print "\tmatch = bsearch(&r, "name"3, nelem("name"3), sizeof *"name"3, &rune2cmp);" > file; + print "\tif (match)" > file; + print "\t\treturn ((r - match[0]) % 2) ? r : r + 1;" > file; + } + if(rune2c > 0) { + print "\tmatch = bsearch(&r, "name"2, nelem("name"2), sizeof *"name"2, &rune2cmp);" > file; + print "\tif (match)" > file; + print "\t\treturn match[2] + (r - match[0]);" > file; + } + if(rune1c > 0) { + print "\tmatch = bsearch(&r, "name"1, nelem("name"1), sizeof *"name"1, &rune1cmp);" > file; + print "\tif (match)" > file; + print "\t\treturn match[1];" > file; + } + print "\treturn r;\n}" > file; + } +} + +function otheris() { + print HEADER_OTHER > "isalnumrune.c"; + print "int\nisalnumrune(Rune r)\n{\n\treturn isalpharune(r) || isdigitrune(r);\n}" > "isalnumrune.c"; + print HEADER_OTHER > "isblankrune.c"; + print "int\nisblankrune(Rune r)\n{\n\treturn r == ' ' || r == '\\t';\n}" > "isblankrune.c"; + print HEADER_OTHER > "isprintrune.c"; + print "int\nisprintrune(Rune r)\n{\n\treturn !iscntrlrune(r) && (r != 0x2028) && (r != 0x2029) &&" > "isprintrune.c"; + print "\t ((r < 0xFFF9) || (r > 0xFFFB));\n}" > "isprintrune.c"; + print HEADER_OTHER > "isgraphrune.c"; + print "int\nisgraphrune(Rune r)\n{\n\treturn !isspacerune(r) && isprintrune(r);\n}" > "isgraphrune.c"; + print HEADER_OTHER > "ispunctrune.c"; + print "int\nispunctrune(Rune r)\n{\n\treturn isgraphrune(r) && !isalnumrune(r);\n}" > "ispunctrune.c"; + print HEADER_OTHER > "isxdigitrune.c"; + print "int\nisxdigitrune(Rune r)\n{\n\treturn (r >= '0' && (r - '0') < 10) || (r >= 'a' && (r - 'a') < 6);\n}" > "isxdigitrune.c"; +} diff --git a/util/sbase/libutf/rune.c b/util/sbase/libutf/rune.c new file mode 100644 index 00000000..1273f451 --- /dev/null +++ b/util/sbase/libutf/rune.c @@ -0,0 +1,148 @@ +/* MIT/X Consortium Copyright (c) 2012 Connor Lane Smith <cls@lubutu.com> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#include "../utf.h" + +#define MIN(x,y) ((x) < (y) ? (x) : (y)) + +#define UTFSEQ(x) ((((x) & 0x80) == 0x00) ? 1 /* 0xxxxxxx */ \ + : (((x) & 0xC0) == 0x80) ? 0 /* 10xxxxxx */ \ + : (((x) & 0xE0) == 0xC0) ? 2 /* 110xxxxx */ \ + : (((x) & 0xF0) == 0xE0) ? 3 /* 1110xxxx */ \ + : (((x) & 0xF8) == 0xF0) ? 4 /* 11110xxx */ \ + : (((x) & 0xFC) == 0xF8) ? 5 /* 111110xx */ \ + : (((x) & 0xFE) == 0xFC) ? 6 /* 1111110x */ \ + : 0 ) + +#define BADRUNE(x) ((x) < 0 || (x) > Runemax \ + || ((x) & 0xFFFE) == 0xFFFE \ + || ((x) >= 0xD800 && (x) <= 0xDFFF) \ + || ((x) >= 0xFDD0 && (x) <= 0xFDEF)) + +int +runetochar(char *s, const Rune *p) +{ + Rune r = *p; + + switch(runelen(r)) { + case 1: /* 0aaaaaaa */ + s[0] = r; + return 1; + case 2: /* 00000aaa aabbbbbb */ + s[0] = 0xC0 | ((r & 0x0007C0) >> 6); /* 110aaaaa */ + s[1] = 0x80 | (r & 0x00003F); /* 10bbbbbb */ + return 2; + case 3: /* aaaabbbb bbcccccc */ + s[0] = 0xE0 | ((r & 0x00F000) >> 12); /* 1110aaaa */ + s[1] = 0x80 | ((r & 0x000FC0) >> 6); /* 10bbbbbb */ + s[2] = 0x80 | (r & 0x00003F); /* 10cccccc */ + return 3; + case 4: /* 000aaabb bbbbcccc ccdddddd */ + s[0] = 0xF0 | ((r & 0x1C0000) >> 18); /* 11110aaa */ + s[1] = 0x80 | ((r & 0x03F000) >> 12); /* 10bbbbbb */ + s[2] = 0x80 | ((r & 0x000FC0) >> 6); /* 10cccccc */ + s[3] = 0x80 | (r & 0x00003F); /* 10dddddd */ + return 4; + default: + return 0; /* error */ + } +} + +int +chartorune(Rune *p, const char *s) +{ + return charntorune(p, s, UTFmax); +} + +int +charntorune(Rune *p, const char *s, size_t len) +{ + unsigned int i, n; + Rune r; + + if(len == 0) /* can't even look at s[0] */ + return 0; + + switch((n = UTFSEQ(s[0]))) { + case 1: r = s[0]; break; /* 0xxxxxxx */ + case 2: r = s[0] & 0x1F; break; /* 110xxxxx */ + case 3: r = s[0] & 0x0F; break; /* 1110xxxx */ + case 4: r = s[0] & 0x07; break; /* 11110xxx */ + case 5: r = s[0] & 0x03; break; /* 111110xx */ + case 6: r = s[0] & 0x01; break; /* 1111110x */ + default: /* invalid sequence */ + *p = Runeerror; + return 1; + } + /* add values from continuation bytes */ + for(i = 1; i < MIN(n, len); i++) + if((s[i] & 0xC0) == 0x80) { + /* add bits from continuation byte to rune value + * cannot overflow: 6 byte sequences contain 31 bits */ + r = (r << 6) | (s[i] & 0x3F); /* 10xxxxxx */ + } + else { /* expected continuation */ + *p = Runeerror; + return i; + } + + if(i < n) /* must have reached len limit */ + return 0; + + /* reject invalid or overlong sequences */ + if(BADRUNE(r) || runelen(r) < (int)n) + r = Runeerror; + + *p = r; + return n; +} + +int +runelen(Rune r) +{ + if(BADRUNE(r)) + return 0; /* error */ + else if(r <= 0x7F) + return 1; + else if(r <= 0x07FF) + return 2; + else if(r <= 0xFFFF) + return 3; + else + return 4; +} + +size_t +runenlen(const Rune *p, size_t len) +{ + size_t i, n = 0; + + for(i = 0; i < len; i++) + n += runelen(p[i]); + return n; +} + +int +fullrune(const char *s, size_t len) +{ + Rune r; + + return charntorune(&r, s, len) > 0; +} diff --git a/util/sbase/libutf/runetype.c b/util/sbase/libutf/runetype.c new file mode 100644 index 00000000..9e8ede8a --- /dev/null +++ b/util/sbase/libutf/runetype.c @@ -0,0 +1,41 @@ +/* MIT/X Consortium Copyright (c) 2012 Connor Lane Smith <cls@lubutu.com> + * (c) 2015 Laslo Hunhold <dev@frign.de> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#include "../utf.h" + +int +rune1cmp(const void *v1, const void *v2) +{ + Rune r1 = *(Rune *)v1, r2 = *(Rune *)v2; + + return r1 - r2; +} + +int +rune2cmp(const void *v1, const void *v2) +{ + Rune r = *(Rune *)v1, *p = (Rune *)v2; + + if(r >= p[0] && r <= p[1]) + return 0; + else + return r - p[0]; +} diff --git a/util/sbase/libutf/runetype.h b/util/sbase/libutf/runetype.h new file mode 100644 index 00000000..8d09c347 --- /dev/null +++ b/util/sbase/libutf/runetype.h @@ -0,0 +1,26 @@ +/* MIT/X Consortium Copyright (c) 2012 Connor Lane Smith <cls@lubutu.com> + * (c) 2015 Laslo Hunhold <dev@frign.de> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#define nelem(x) (sizeof (x) / sizeof *(x)) + +int rune1cmp(const void *, const void *); +int rune2cmp(const void *, const void *); diff --git a/util/sbase/libutf/upperrune.c b/util/sbase/libutf/upperrune.c new file mode 100644 index 00000000..0c874a85 --- /dev/null +++ b/util/sbase/libutf/upperrune.c @@ -0,0 +1,265 @@ +/* Automatically generated by mkrunetype.awk */ +#include <stdlib.h> + +#include "../utf.h" +#include "runetype.h" + +static const Rune upper3[][2] = { + { 0x0100, 0x012E }, + { 0x0132, 0x0136 }, + { 0x0139, 0x0147 }, + { 0x014A, 0x0176 }, + { 0x0179, 0x017D }, + { 0x0182, 0x0184 }, + { 0x01A0, 0x01A4 }, + { 0x01B3, 0x01B5 }, + { 0x01CD, 0x01DB }, + { 0x01DE, 0x01EE }, + { 0x01F8, 0x021E }, + { 0x0222, 0x0232 }, + { 0x0246, 0x024E }, + { 0x0370, 0x0372 }, + { 0x03D8, 0x03EE }, + { 0x0460, 0x0480 }, + { 0x048A, 0x04BE }, + { 0x04C1, 0x04CD }, + { 0x04D0, 0x052E }, + { 0x1E00, 0x1E94 }, + { 0x1EA0, 0x1EFE }, + { 0x2C67, 0x2C6B }, + { 0x2C80, 0x2CE2 }, + { 0x2CEB, 0x2CED }, + { 0xA640, 0xA66C }, + { 0xA680, 0xA69A }, + { 0xA722, 0xA72E }, + { 0xA732, 0xA76E }, + { 0xA779, 0xA77B }, + { 0xA77E, 0xA786 }, + { 0xA790, 0xA792 }, + { 0xA796, 0xA7A8 }, + { 0xA7B4, 0xA7C2 }, + { 0xA7C7, 0xA7C9 }, + { 0xA7D6, 0xA7D8 }, +}; + +static const Rune upper2[][3] = { + { 0x0041, 0x005A, 0x0061 }, + { 0x00C0, 0x00D6, 0x00E0 }, + { 0x00D8, 0x00DE, 0x00F8 }, + { 0x0189, 0x018A, 0x0256 }, + { 0x01B1, 0x01B2, 0x028A }, + { 0x0388, 0x038A, 0x03AD }, + { 0x038E, 0x038F, 0x03CD }, + { 0x0391, 0x03A1, 0x03B1 }, + { 0x03A3, 0x03AB, 0x03C3 }, + { 0x03D2, 0x03D4, 0x03D2 }, + { 0x03FD, 0x03FF, 0x037B }, + { 0x0400, 0x040F, 0x0450 }, + { 0x0410, 0x042F, 0x0430 }, + { 0x0531, 0x0556, 0x0561 }, + { 0x10A0, 0x10C5, 0x2D00 }, + { 0x13A0, 0x13EF, 0xAB70 }, + { 0x13F0, 0x13F5, 0x13F8 }, + { 0x1C90, 0x1CBA, 0x10D0 }, + { 0x1CBD, 0x1CBF, 0x10FD }, + { 0x1F08, 0x1F0F, 0x1F00 }, + { 0x1F18, 0x1F1D, 0x1F10 }, + { 0x1F28, 0x1F2F, 0x1F20 }, + { 0x1F38, 0x1F3F, 0x1F30 }, + { 0x1F48, 0x1F4D, 0x1F40 }, + { 0x1F68, 0x1F6F, 0x1F60 }, + { 0x1FB8, 0x1FB9, 0x1FB0 }, + { 0x1FBA, 0x1FBB, 0x1F70 }, + { 0x1FC8, 0x1FCB, 0x1F72 }, + { 0x1FD8, 0x1FD9, 0x1FD0 }, + { 0x1FDA, 0x1FDB, 0x1F76 }, + { 0x1FE8, 0x1FE9, 0x1FE0 }, + { 0x1FEA, 0x1FEB, 0x1F7A }, + { 0x1FF8, 0x1FF9, 0x1F78 }, + { 0x1FFA, 0x1FFB, 0x1F7C }, + { 0x210B, 0x210D, 0x210B }, + { 0x2110, 0x2112, 0x2110 }, + { 0x2119, 0x211D, 0x2119 }, + { 0x212C, 0x212D, 0x212C }, + { 0x2130, 0x2131, 0x2130 }, + { 0x213E, 0x213F, 0x213E }, + { 0x2C00, 0x2C2F, 0x2C30 }, + { 0x2C7E, 0x2C7F, 0x023F }, + { 0xFF21, 0xFF3A, 0xFF41 }, + { 0x10400, 0x10427, 0x10428 }, + { 0x104B0, 0x104D3, 0x104D8 }, + { 0x10570, 0x1057A, 0x10597 }, + { 0x1057C, 0x1058A, 0x105A3 }, + { 0x1058C, 0x10592, 0x105B3 }, + { 0x10594, 0x10595, 0x105BB }, + { 0x10C80, 0x10CB2, 0x10CC0 }, + { 0x118A0, 0x118BF, 0x118C0 }, + { 0x16E40, 0x16E5F, 0x16E60 }, + { 0x1D400, 0x1D419, 0x1D400 }, + { 0x1D434, 0x1D44D, 0x1D434 }, + { 0x1D468, 0x1D481, 0x1D468 }, + { 0x1D49E, 0x1D49F, 0x1D49E }, + { 0x1D4A5, 0x1D4A6, 0x1D4A5 }, + { 0x1D4A9, 0x1D4AC, 0x1D4A9 }, + { 0x1D4AE, 0x1D4B5, 0x1D4AE }, + { 0x1D4D0, 0x1D4E9, 0x1D4D0 }, + { 0x1D504, 0x1D505, 0x1D504 }, + { 0x1D507, 0x1D50A, 0x1D507 }, + { 0x1D50D, 0x1D514, 0x1D50D }, + { 0x1D516, 0x1D51C, 0x1D516 }, + { 0x1D538, 0x1D539, 0x1D538 }, + { 0x1D53B, 0x1D53E, 0x1D53B }, + { 0x1D540, 0x1D544, 0x1D540 }, + { 0x1D54A, 0x1D550, 0x1D54A }, + { 0x1D56C, 0x1D585, 0x1D56C }, + { 0x1D5A0, 0x1D5B9, 0x1D5A0 }, + { 0x1D5D4, 0x1D5ED, 0x1D5D4 }, + { 0x1D608, 0x1D621, 0x1D608 }, + { 0x1D63C, 0x1D655, 0x1D63C }, + { 0x1D670, 0x1D689, 0x1D670 }, + { 0x1D6A8, 0x1D6C0, 0x1D6A8 }, + { 0x1D6E2, 0x1D6FA, 0x1D6E2 }, + { 0x1D71C, 0x1D734, 0x1D71C }, + { 0x1D756, 0x1D76E, 0x1D756 }, + { 0x1D790, 0x1D7A8, 0x1D790 }, + { 0x1E900, 0x1E921, 0x1E922 }, +}; + +static const Rune upper1[][2] = { + { 0x0130, 0x0069 }, + { 0x0178, 0x00FF }, + { 0x0181, 0x0253 }, + { 0x0186, 0x0254 }, + { 0x0187, 0x0188 }, + { 0x018B, 0x018C }, + { 0x018E, 0x01DD }, + { 0x018F, 0x0259 }, + { 0x0190, 0x025B }, + { 0x0191, 0x0192 }, + { 0x0193, 0x0260 }, + { 0x0194, 0x0263 }, + { 0x0196, 0x0269 }, + { 0x0197, 0x0268 }, + { 0x0198, 0x0199 }, + { 0x019C, 0x026F }, + { 0x019D, 0x0272 }, + { 0x019F, 0x0275 }, + { 0x01A6, 0x0280 }, + { 0x01A7, 0x01A8 }, + { 0x01A9, 0x0283 }, + { 0x01AC, 0x01AD }, + { 0x01AE, 0x0288 }, + { 0x01AF, 0x01B0 }, + { 0x01B7, 0x0292 }, + { 0x01B8, 0x01B9 }, + { 0x01BC, 0x01BD }, + { 0x01C4, 0x01C6 }, + { 0x01C7, 0x01C9 }, + { 0x01CA, 0x01CC }, + { 0x01F1, 0x01F3 }, + { 0x01F4, 0x01F5 }, + { 0x01F6, 0x0195 }, + { 0x01F7, 0x01BF }, + { 0x0220, 0x019E }, + { 0x023A, 0x2C65 }, + { 0x023B, 0x023C }, + { 0x023D, 0x019A }, + { 0x023E, 0x2C66 }, + { 0x0241, 0x0242 }, + { 0x0243, 0x0180 }, + { 0x0244, 0x0289 }, + { 0x0245, 0x028C }, + { 0x0376, 0x0377 }, + { 0x037F, 0x03F3 }, + { 0x0386, 0x03AC }, + { 0x038C, 0x03CC }, + { 0x03CF, 0x03D7 }, + { 0x03F4, 0x03B8 }, + { 0x03F7, 0x03F8 }, + { 0x03F9, 0x03F2 }, + { 0x03FA, 0x03FB }, + { 0x04C0, 0x04CF }, + { 0x10C7, 0x2D27 }, + { 0x10CD, 0x2D2D }, + { 0x1E9E, 0x00DF }, + { 0x1F59, 0x1F51 }, + { 0x1F5B, 0x1F53 }, + { 0x1F5D, 0x1F55 }, + { 0x1F5F, 0x1F57 }, + { 0x1FEC, 0x1FE5 }, + { 0x2102, 0x2102 }, + { 0x2107, 0x2107 }, + { 0x2115, 0x2115 }, + { 0x2124, 0x2124 }, + { 0x2126, 0x03C9 }, + { 0x2128, 0x2128 }, + { 0x212A, 0x006B }, + { 0x212B, 0x00E5 }, + { 0x2132, 0x214E }, + { 0x2133, 0x2133 }, + { 0x2145, 0x2145 }, + { 0x2183, 0x2184 }, + { 0x2C60, 0x2C61 }, + { 0x2C62, 0x026B }, + { 0x2C63, 0x1D7D }, + { 0x2C64, 0x027D }, + { 0x2C6D, 0x0251 }, + { 0x2C6E, 0x0271 }, + { 0x2C6F, 0x0250 }, + { 0x2C70, 0x0252 }, + { 0x2C72, 0x2C73 }, + { 0x2C75, 0x2C76 }, + { 0x2CF2, 0x2CF3 }, + { 0xA77D, 0x1D79 }, + { 0xA78B, 0xA78C }, + { 0xA78D, 0x0265 }, + { 0xA7AA, 0x0266 }, + { 0xA7AB, 0x025C }, + { 0xA7AC, 0x0261 }, + { 0xA7AD, 0x026C }, + { 0xA7AE, 0x026A }, + { 0xA7B0, 0x029E }, + { 0xA7B1, 0x0287 }, + { 0xA7B2, 0x029D }, + { 0xA7B3, 0xAB53 }, + { 0xA7C4, 0xA794 }, + { 0xA7C5, 0x0282 }, + { 0xA7C6, 0x1D8E }, + { 0xA7D0, 0xA7D1 }, + { 0xA7F5, 0xA7F6 }, + { 0x1D49C, 0x1D49C }, + { 0x1D4A2, 0x1D4A2 }, + { 0x1D546, 0x1D546 }, + { 0x1D7CA, 0x1D7CA }, +}; + +int +isupperrune(Rune r) +{ + const Rune *match; + + if((match = bsearch(&r, upper3, nelem(upper3), sizeof *upper3, &rune2cmp))) + return !((r - match[0]) % 2); + if(bsearch(&r, upper2, nelem(upper2), sizeof *upper2, &rune2cmp)) + return 1; + if(bsearch(&r, upper1, nelem(upper1), sizeof *upper1, &rune1cmp)) + return 1; + return 0; +} + +int +tolowerrune(Rune r) +{ + Rune *match; + + match = bsearch(&r, upper3, nelem(upper3), sizeof *upper3, &rune2cmp); + if (match) + return ((r - match[0]) % 2) ? r : r + 1; + match = bsearch(&r, upper2, nelem(upper2), sizeof *upper2, &rune2cmp); + if (match) + return match[2] + (r - match[0]); + match = bsearch(&r, upper1, nelem(upper1), sizeof *upper1, &rune1cmp); + if (match) + return match[1]; + return r; +} diff --git a/util/sbase/libutf/utf.c b/util/sbase/libutf/utf.c new file mode 100644 index 00000000..492e020f --- /dev/null +++ b/util/sbase/libutf/utf.c @@ -0,0 +1,142 @@ +/* MIT/X Consortium Copyright (c) 2012 Connor Lane Smith <cls@lubutu.com> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#include <string.h> +#include "../utf.h" + +char * +utfecpy(char *to, char *end, const char *from) +{ + Rune r = Runeerror; + size_t i, n; + + /* seek through to find final full rune */ + for(i = 0; r != '\0' && (n = charntorune(&r, &from[i], end - &to[i])); i += n) + ; + memcpy(to, from, i); /* copy over bytes up to this rune */ + + if(i > 0 && r != '\0') + to[i] = '\0'; /* terminate if unterminated */ + return &to[i]; +} + +size_t +utflen(const char *s) +{ + const char *p = s; + size_t i; + Rune r; + + for(i = 0; *p != '\0'; i++) + p += chartorune(&r, p); + return i; +} + +size_t +utfnlen(const char *s, size_t len) +{ + const char *p = s; + size_t i; + Rune r; + int n; + + for(i = 0; (n = charntorune(&r, p, len-(p-s))) && r != '\0'; i++) + p += n; + return i; +} + +size_t +utfmemlen(const char *s, size_t len) +{ + const char *p = s; + size_t i; + Rune r; + int n; + + for(i = 0; (n = charntorune(&r, p, len-(p-s))); i++) + p += n; + return i; +} + +char * +utfrune(const char *s, Rune r) +{ + if(r < Runeself) { + return strchr(s, r); + } + else if(r == Runeerror) { + Rune r0; + int n; + + for(; *s != '\0'; s += n) { + n = chartorune(&r0, s); + if(r == r0) + return (char *)s; + } + } + else { + char buf[UTFmax+1]; + int n; + + if(!(n = runetochar(buf, &r))) + return NULL; + buf[n] = '\0'; + return strstr(s, buf); + } + return NULL; +} + +char * +utfrrune(const char *s, Rune r) +{ + const char *p = NULL; + Rune r0; + int n; + + if(r < Runeself) + return strrchr(s, r); + + for(; *s != '\0'; s += n) { + n = chartorune(&r0, s); + if(r == r0) + p = s; + } + return (char *)p; +} + +char * +utfutf(const char *s, const char *t) +{ + const char *p, *q; + Rune r0, r1, r2; + int n, m; + + for(chartorune(&r0, t); (s = utfrune(s, r0)); s++) { + for(p = s, q = t; *q && *p; p += n, q += m) { + n = chartorune(&r1, p); + m = chartorune(&r2, q); + if(r1 != r2) + break; + } + if(!*q) + return (char *)s; + } + return NULL; +} diff --git a/util/sbase/libutf/utftorunestr.c b/util/sbase/libutf/utftorunestr.c new file mode 100644 index 00000000..e182bc15 --- /dev/null +++ b/util/sbase/libutf/utftorunestr.c @@ -0,0 +1,27 @@ +/* See LICENSE file for copyright and license details. */ +#include "../utf.h" + +size_t +utftorunestr(const char *str, Rune *r) +{ + size_t i; + int n; + + for (i = 0; (n = chartorune(&r[i], str)) && r[i]; i++) + str += n; + + return i; +} + +size_t +utfntorunestr(const char *str, size_t len, Rune *r) +{ + size_t i; + int n; + const char *end = str + len; + + for (i = 0; (n = charntorune(&r[i], str, end - str)); i++) + str += n; + + return i; +} diff --git a/util/sbase/libutil/concat.c b/util/sbase/libutil/concat.c new file mode 100644 index 00000000..2e9aa521 --- /dev/null +++ b/util/sbase/libutil/concat.c @@ -0,0 +1,23 @@ +/* See LICENSE file for copyright and license details. */ +#include <unistd.h> + +#include "../util.h" + +int +concat(int f1, const char *s1, int f2, const char *s2) +{ + char buf[BUFSIZ]; + ssize_t n; + + while ((n = read(f1, buf, sizeof(buf))) > 0) { + if (writeall(f2, buf, n) < 0) { + weprintf("write %s:", s2); + return -2; + } + } + if (n < 0) { + weprintf("read %s:", s1); + return -1; + } + return 0; +} diff --git a/util/sbase/libutil/confirm.c b/util/sbase/libutil/confirm.c new file mode 100644 index 00000000..44396af9 --- /dev/null +++ b/util/sbase/libutil/confirm.c @@ -0,0 +1,22 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdarg.h> +#include <ctype.h> + +#include "../util.h" + +int +confirm(const char *fmt, ...) +{ + int c, ans; + va_list ap; + + va_start(ap, fmt); + xvprintf(fmt, ap); + va_end(ap); + + c = getchar(); + ans = (c == 'y' || c == 'Y'); + while (c != '\n' && c != EOF) + c = getchar(); + return ans; +} diff --git a/util/sbase/libutil/cp.c b/util/sbase/libutil/cp.c new file mode 100644 index 00000000..2ab32a03 --- /dev/null +++ b/util/sbase/libutil/cp.c @@ -0,0 +1,176 @@ +/* See LICENSE file for copyright and license details. */ +#include <dirent.h> +#include <errno.h> +#include <fcntl.h> +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <sys/types.h> +#include <unistd.h> +#include <utime.h> + +#include "../fs.h" +#include "../util.h" + +int cp_aflag = 0; +int cp_fflag = 0; +int cp_iflag = 0; +int cp_pflag = 0; +int cp_rflag = 0; +int cp_vflag = 0; +int cp_status = 0; +int cp_follow; + +int +cp(const char *s1, const char *s2, int depth) +{ + DIR *dp; + int f1, f2, flags = 0; + struct dirent *d; + struct stat st; + struct timespec times[2]; + ssize_t r; + char target[PATH_MAX], ns1[PATH_MAX], ns2[PATH_MAX]; + + if (cp_follow == 'P' || (cp_follow == 'H' && depth)) + flags |= AT_SYMLINK_NOFOLLOW; + + if (fstatat(AT_FDCWD, s1, &st, flags) < 0) { + weprintf("stat %s:", s1); + cp_status = 1; + return 0; + } + + if (cp_iflag && access(s2, F_OK) == 0) { + if (!confirm("overwrite '%s'? ", s2)) + return 0; + } + + if (cp_vflag) + printf("%s -> %s\n", s1, s2); + + if (S_ISLNK(st.st_mode)) { + if ((r = readlink(s1, target, sizeof(target) - 1)) >= 0) { + target[r] = '\0'; + if (cp_fflag && unlink(s2) < 0 && errno != ENOENT) { + weprintf("unlink %s:", s2); + cp_status = 1; + return 0; + } else if (symlink(target, s2) < 0) { + weprintf("symlink %s -> %s:", s2, target); + cp_status = 1; + return 0; + } + } + } else if (S_ISDIR(st.st_mode)) { + if (!cp_rflag) { + weprintf("%s is a directory\n", s1); + cp_status = 1; + return 0; + } + if (!(dp = opendir(s1))) { + weprintf("opendir %s:", s1); + cp_status = 1; + return 0; + } + if (mkdir(s2, st.st_mode) < 0 && errno != EEXIST) { + weprintf("mkdir %s:", s2); + cp_status = 1; + closedir(dp); + return 0; + } + + while ((d = readdir(dp))) { + if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, "..")) + continue; + + estrlcpy(ns1, s1, sizeof(ns1)); + if (s1[strlen(s1) - 1] != '/') + estrlcat(ns1, "/", sizeof(ns1)); + estrlcat(ns1, d->d_name, sizeof(ns1)); + + estrlcpy(ns2, s2, sizeof(ns2)); + if (s2[strlen(s2) - 1] != '/') + estrlcat(ns2, "/", sizeof(ns2)); + estrlcat(ns2, d->d_name, sizeof(ns2)); + + fnck(ns1, ns2, cp, depth + 1); + } + + closedir(dp); + } else if (cp_aflag && (S_ISBLK(st.st_mode) || S_ISCHR(st.st_mode) || + S_ISSOCK(st.st_mode) || S_ISFIFO(st.st_mode))) { + if (cp_fflag && unlink(s2) < 0 && errno != ENOENT) { + weprintf("unlink %s:", s2); + cp_status = 1; + return 0; + } else if (mknod(s2, st.st_mode, st.st_rdev) < 0) { + weprintf("mknod %s:", s2); + cp_status = 1; + return 0; + } + } else { + if ((f1 = open(s1, O_RDONLY)) < 0) { + weprintf("open %s:", s1); + cp_status = 1; + return 0; + } + if ((f2 = creat(s2, st.st_mode)) < 0 && cp_fflag) { + if (unlink(s2) < 0 && errno != ENOENT) { + weprintf("unlink %s:", s2); + cp_status = 1; + close(f1); + return 0; + } + f2 = creat(s2, st.st_mode); + } + if (f2 < 0) { + weprintf("creat %s:", s2); + cp_status = 1; + close(f1); + return 0; + } + if (concat(f1, s1, f2, s2) < 0) { + cp_status = 1; + close(f1); + close(f2); + return 0; + } + + close(f1); + close(f2); + } + + if (cp_aflag || cp_pflag) { + /* atime and mtime */ + times[0] = st.st_atim; + times[1] = st.st_mtim; + if (utimensat(AT_FDCWD, s2, times, AT_SYMLINK_NOFOLLOW) < 0) { + weprintf("utimensat %s:", s2); + cp_status = 1; + } + + /* owner and mode */ + if (!S_ISLNK(st.st_mode)) { + if (chown(s2, st.st_uid, st.st_gid) < 0) { + weprintf("chown %s:", s2); + cp_status = 1; + st.st_mode &= ~(S_ISUID | S_ISGID); + } + if (chmod(s2, st.st_mode) < 0) { + weprintf("chmod %s:", s2); + cp_status = 1; + } + } else { + if (lchown(s2, st.st_uid, st.st_gid) < 0) { + weprintf("lchown %s:", s2); + cp_status = 1; + return 0; + } + } + } + + return 0; +} diff --git a/util/sbase/libutil/crypt.c b/util/sbase/libutil/crypt.c new file mode 100644 index 00000000..e285614b --- /dev/null +++ b/util/sbase/libutil/crypt.c @@ -0,0 +1,184 @@ +/* See LICENSE file for copyright and license details. */ +#include <fcntl.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "../crypt.h" +#include "../text.h" +#include "../util.h" + +static int +hexdec(int c) +{ + if (c >= '0' && c <= '9') + return c - '0'; + else if (c >= 'A' && c <= 'F') + return c - 'A' + 10; + else if (c >= 'a' && c <= 'f') + return c - 'a' + 10; + return -1; /* unknown character */ +} + +static int +mdcheckline(const char *s, uint8_t *md, size_t sz) +{ + size_t i; + int b1, b2; + + for (i = 0; i < sz; i++) { + if (!*s || (b1 = hexdec(*s++)) < 0) + return -1; /* invalid format */ + if (!*s || (b2 = hexdec(*s++)) < 0) + return -1; /* invalid format */ + if ((uint8_t)((b1 << 4) | b2) != md[i]) + return 0; /* value mismatch */ + } + return (i == sz) ? 1 : 0; +} + +static void +mdchecklist(FILE *listfp, struct crypt_ops *ops, uint8_t *md, size_t sz, + int *formatsucks, int *noread, int *nonmatch) +{ + int fd; + size_t bufsiz = 0; + int r; + char *line = NULL, *file, *p; + + while (getline(&line, &bufsiz, listfp) > 0) { + if (!(file = strstr(line, " "))) { + (*formatsucks)++; + continue; + } + if ((file - line) / 2 != sz) { + (*formatsucks)++; /* checksum length mismatch */ + continue; + } + *file = '\0'; + file += 2; + for (p = file; *p && *p != '\n' && *p != '\r'; p++); /* strip newline */ + *p = '\0'; + if ((fd = open(file, O_RDONLY)) < 0) { + weprintf("open %s:", file); + (*noread)++; + continue; + } + if (cryptsum(ops, fd, file, md)) { + (*noread)++; + continue; + } + r = mdcheckline(line, md, sz); + if (r == 1) { + printf("%s: OK\n", file); + } else if (r == 0) { + printf("%s: FAILED\n", file); + (*nonmatch)++; + } else { + (*formatsucks)++; + } + close(fd); + } + free(line); +} + +int +cryptcheck(int argc, char *argv[], struct crypt_ops *ops, uint8_t *md, size_t sz) +{ + FILE *fp; + int formatsucks = 0, noread = 0, nonmatch = 0, ret = 0; + + if (argc == 0) { + mdchecklist(stdin, ops, md, sz, &formatsucks, &noread, &nonmatch); + } else { + for (; *argv; argc--, argv++) { + if ((*argv)[0] == '-' && !(*argv)[1]) { + fp = stdin; + } else if (!(fp = fopen(*argv, "r"))) { + weprintf("fopen %s:", *argv); + ret = 1; + continue; + } + mdchecklist(fp, ops, md, sz, &formatsucks, &noread, &nonmatch); + if (fp != stdin) + fclose(fp); + } + } + + if (formatsucks) { + weprintf("%d lines are improperly formatted\n", formatsucks); + ret = 1; + } + if (noread) { + weprintf("%d listed file could not be read\n", noread); + ret = 1; + } + if (nonmatch) { + weprintf("%d computed checksums did NOT match\n", nonmatch); + ret = 1; + } + + return ret; +} + +int +cryptmain(int argc, char *argv[], struct crypt_ops *ops, uint8_t *md, size_t sz) +{ + int fd; + int ret = 0; + + if (argc == 0) { + if (cryptsum(ops, 0, "<stdin>", md)) + ret = 1; + else + mdprint(md, "<stdin>", sz); + } else { + for (; *argv; argc--, argv++) { + if ((*argv)[0] == '-' && !(*argv)[1]) { + *argv = "<stdin>"; + fd = 0; + } else if ((fd = open(*argv, O_RDONLY)) < 0) { + weprintf("open %s:", *argv); + ret = 1; + continue; + } + if (cryptsum(ops, fd, *argv, md)) + ret = 1; + else + mdprint(md, *argv, sz); + if (fd != 0) + close(fd); + } + } + + return ret; +} + +int +cryptsum(struct crypt_ops *ops, int fd, const char *f, uint8_t *md) +{ + uint8_t buf[BUFSIZ]; + ssize_t n; + + ops->init(ops->s); + while ((n = read(fd, buf, sizeof(buf))) > 0) + ops->update(ops->s, buf, n); + if (n < 0) { + weprintf("%s: read error:", f); + return 1; + } + ops->sum(ops->s, md); + return 0; +} + +void +mdprint(const uint8_t *md, const char *f, size_t len) +{ + size_t i; + + for (i = 0; i < len; i++) + printf("%02x", md[i]); + printf(" %s\n", f); +} diff --git a/util/sbase/libutil/ealloc.c b/util/sbase/libutil/ealloc.c new file mode 100644 index 00000000..320865da --- /dev/null +++ b/util/sbase/libutil/ealloc.c @@ -0,0 +1,88 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdlib.h> +#include <string.h> + +#include "../util.h" + +void * +ecalloc(size_t nmemb, size_t size) +{ + return encalloc(1, nmemb, size); +} + +void * +emalloc(size_t size) +{ + return enmalloc(1, size); +} + +void * +erealloc(void *p, size_t size) +{ + return enrealloc(1, p, size); +} + +char * +estrdup(const char *s) +{ + return enstrdup(1, s); +} + +char * +estrndup(const char *s, size_t n) +{ + return enstrndup(1, s, n); +} + +void * +encalloc(int status, size_t nmemb, size_t size) +{ + void *p; + + p = calloc(nmemb, size); + if (!p) + enprintf(status, "calloc: out of memory\n"); + return p; +} + +void * +enmalloc(int status, size_t size) +{ + void *p; + + p = malloc(size); + if (!p) + enprintf(status, "malloc: out of memory\n"); + return p; +} + +void * +enrealloc(int status, void *p, size_t size) +{ + p = realloc(p, size); + if (!p) + enprintf(status, "realloc: out of memory\n"); + return p; +} + +char * +enstrdup(int status, const char *s) +{ + char *p; + + p = strdup(s); + if (!p) + enprintf(status, "strdup: out of memory\n"); + return p; +} + +char * +enstrndup(int status, const char *s, size_t n) +{ + char *p; + + p = strndup(s, n); + if (!p) + enprintf(status, "strndup: out of memory\n"); + return p; +} diff --git a/util/sbase/libutil/enmasse.c b/util/sbase/libutil/enmasse.c new file mode 100644 index 00000000..a2e225ab --- /dev/null +++ b/util/sbase/libutil/enmasse.c @@ -0,0 +1,38 @@ +/* See LICENSE file for copyright and license details. */ +#include <libgen.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <unistd.h> + +#include "../util.h" + +void +enmasse(int argc, char *argv[], int (*fn)(const char *, const char *, int)) +{ + struct stat st; + char buf[PATH_MAX], *dir; + int i, len; + size_t dlen; + + if (argc == 2 && !(stat(argv[1], &st) == 0 && S_ISDIR(st.st_mode))) { + fnck(argv[0], argv[1], fn, 0); + return; + } else { + dir = (argc == 1) ? "." : argv[--argc]; + } + + for (i = 0; i < argc; i++) { + dlen = strlen(dir); + if (dlen > 0 && dir[dlen - 1] == '/') + len = snprintf(buf, sizeof(buf), "%s%s", dir, basename(argv[i])); + else + len = snprintf(buf, sizeof(buf), "%s/%s", dir, basename(argv[i])); + if (len < 0 || len >= sizeof(buf)) { + eprintf("%s/%s: filename too long\n", dir, + basename(argv[i])); + } + fnck(argv[i], buf, fn, 0); + } +} diff --git a/util/sbase/libutil/eprintf.c b/util/sbase/libutil/eprintf.c new file mode 100644 index 00000000..7197fbb9 --- /dev/null +++ b/util/sbase/libutil/eprintf.c @@ -0,0 +1,57 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "../util.h" + +char *argv0; + +void +eprintf(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + xvprintf(fmt, ap); + va_end(ap); + + exit(1); +} + +void +enprintf(int status, const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + xvprintf(fmt, ap); + va_end(ap); + + exit(status); +} + +void +weprintf(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + xvprintf(fmt, ap); + va_end(ap); +} + +void +xvprintf(const char *fmt, va_list ap) +{ + if (argv0 && strncmp(fmt, "usage", strlen("usage"))) + fprintf(stderr, "%s: ", argv0); + + vfprintf(stderr, fmt, ap); + + if (fmt[0] && fmt[strlen(fmt)-1] == ':') { + fputc(' ', stderr); + perror(NULL); + } +} diff --git a/util/sbase/libutil/eregcomp.c b/util/sbase/libutil/eregcomp.c new file mode 100644 index 00000000..02c8698c --- /dev/null +++ b/util/sbase/libutil/eregcomp.c @@ -0,0 +1,27 @@ +#include <sys/types.h> + +#include <regex.h> +#include <stdio.h> + +#include "../util.h" + +int +enregcomp(int status, regex_t *preg, const char *regex, int cflags) +{ + char errbuf[BUFSIZ] = ""; + int r; + + if ((r = regcomp(preg, regex, cflags)) == 0) + return r; + + regerror(r, preg, errbuf, sizeof(errbuf)); + enprintf(status, "invalid regex: %s\n", errbuf); + + return r; +} + +int +eregcomp(regex_t *preg, const char *regex, int cflags) +{ + return enregcomp(1, preg, regex, cflags); +} diff --git a/util/sbase/libutil/estrtod.c b/util/sbase/libutil/estrtod.c new file mode 100644 index 00000000..24e4fdce --- /dev/null +++ b/util/sbase/libutil/estrtod.c @@ -0,0 +1,18 @@ +/* See LICENSE file for copyright and license details. */ +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> + +#include "../util.h" + +double +estrtod(const char *s) +{ + char *end; + double d; + + d = strtod(s, &end); + if (end == s || *end != '\0') + eprintf("%s: not a real number\n", s); + return d; +} diff --git a/util/sbase/libutil/fnck.c b/util/sbase/libutil/fnck.c new file mode 100644 index 00000000..4f8875ba --- /dev/null +++ b/util/sbase/libutil/fnck.c @@ -0,0 +1,22 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include "../util.h" + +void +fnck(const char *a, const char *b, + int (*fn)(const char *, const char *, int), int depth) +{ + struct stat sta, stb; + + if (!stat(a, &sta) + && !stat(b, &stb) + && sta.st_dev == stb.st_dev + && sta.st_ino == stb.st_ino) { + weprintf("%s -> %s: same file\n", a, b); + return; + } + + if (fn(a, b, depth) < 0) + eprintf("%s -> %s:", a, b); +} diff --git a/util/sbase/libutil/fshut.c b/util/sbase/libutil/fshut.c new file mode 100644 index 00000000..e596f074 --- /dev/null +++ b/util/sbase/libutil/fshut.c @@ -0,0 +1,43 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <stdlib.h> + +#include "../util.h" + +int +fshut(FILE *fp, const char *fname) +{ + int ret = 0; + + /* fflush() is undefined for input streams by ISO C, + * but not POSIX 2008 if you ignore ISO C overrides. + * Leave it unchecked and rely on the following + * functions to detect errors. + */ + fflush(fp); + + if (ferror(fp) && !ret) { + weprintf("ferror %s:", fname); + ret = 1; + } + + if (fclose(fp) && !ret) { + weprintf("fclose %s:", fname); + ret = 1; + } + + return ret; +} + +void +enfshut(int status, FILE *fp, const char *fname) +{ + if (fshut(fp, fname)) + exit(status); +} + +void +efshut(FILE *fp, const char *fname) +{ + enfshut(1, fp, fname); +} diff --git a/util/sbase/libutil/getlines.c b/util/sbase/libutil/getlines.c new file mode 100644 index 00000000..cef9a612 --- /dev/null +++ b/util/sbase/libutil/getlines.c @@ -0,0 +1,32 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "../text.h" +#include "../util.h" + +void +getlines(FILE *fp, struct linebuf *b) +{ + char *line = NULL; + size_t size = 0, linelen = 0; + ssize_t len; + + while ((len = getline(&line, &size, fp)) > 0) { + if (++b->nlines > b->capacity) { + b->capacity += 512; + b->lines = ereallocarray(b->lines, b->capacity, sizeof(*b->lines)); + } + linelen = len; + b->lines[b->nlines - 1].data = memcpy(emalloc(linelen + 1), line, linelen + 1); + b->lines[b->nlines - 1].len = linelen; + } + free(line); + if (b->lines && b->nlines && linelen && b->lines[b->nlines - 1].data[linelen - 1] != '\n') { + b->lines[b->nlines - 1].data = erealloc(b->lines[b->nlines - 1].data, linelen + 2); + b->lines[b->nlines - 1].data[linelen] = '\n'; + b->lines[b->nlines - 1].data[linelen + 1] = '\0'; + b->lines[b->nlines - 1].len++; + } +} diff --git a/util/sbase/libutil/human.c b/util/sbase/libutil/human.c new file mode 100644 index 00000000..7e39ba5f --- /dev/null +++ b/util/sbase/libutil/human.c @@ -0,0 +1,25 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <string.h> +#include <stdint.h> + +#include "../util.h" + +char * +humansize(off_t n) +{ + static char buf[16]; + const char postfixes[] = "BKMGTPE"; + double size; + int i; + + for (size = n, i = 0; size >= 1024 && i < strlen(postfixes); i++) + size /= 1024; + + if (!i) + snprintf(buf, sizeof(buf), "%ju", (uintmax_t)n); + else + snprintf(buf, sizeof(buf), "%.1f%c", size, postfixes[i]); + + return buf; +} diff --git a/util/sbase/libutil/linecmp.c b/util/sbase/libutil/linecmp.c new file mode 100644 index 00000000..08fc0e3a --- /dev/null +++ b/util/sbase/libutil/linecmp.c @@ -0,0 +1,17 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <string.h> + +#include "../text.h" +#include "../util.h" + +int +linecmp(struct line *a, struct line *b) +{ + int res = 0; + + if (!(res = memcmp(a->data, b->data, MIN(a->len, b->len)))) + res = a->len - b->len; + + return res; +} diff --git a/util/sbase/libutil/md5.c b/util/sbase/libutil/md5.c new file mode 100644 index 00000000..c7483ac6 --- /dev/null +++ b/util/sbase/libutil/md5.c @@ -0,0 +1,148 @@ +/* public domain md5 implementation based on rfc1321 and libtomcrypt */ +#include <stdint.h> +#include <string.h> + +#include "../md5.h" + +static uint32_t rol(uint32_t n, int k) { return (n << k) | (n >> (32-k)); } +#define F(x,y,z) (z ^ (x & (y ^ z))) +#define G(x,y,z) (y ^ (z & (y ^ x))) +#define H(x,y,z) (x ^ y ^ z) +#define I(x,y,z) (y ^ (x | ~z)) +#define FF(a,b,c,d,w,s,t) a += F(b,c,d) + w + t; a = rol(a,s) + b +#define GG(a,b,c,d,w,s,t) a += G(b,c,d) + w + t; a = rol(a,s) + b +#define HH(a,b,c,d,w,s,t) a += H(b,c,d) + w + t; a = rol(a,s) + b +#define II(a,b,c,d,w,s,t) a += I(b,c,d) + w + t; a = rol(a,s) + b + +static const uint32_t tab[64] = { + 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501, + 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821, + 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8, + 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a, + 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c, 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, + 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665, + 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1, + 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391 +}; + +static void +processblock(struct md5 *s, const uint8_t *buf) +{ + uint32_t i, W[16], a, b, c, d; + + for (i = 0; i < 16; i++) { + W[i] = buf[4*i]; + W[i] |= (uint32_t)buf[4*i+1]<<8; + W[i] |= (uint32_t)buf[4*i+2]<<16; + W[i] |= (uint32_t)buf[4*i+3]<<24; + } + + a = s->h[0]; + b = s->h[1]; + c = s->h[2]; + d = s->h[3]; + + i = 0; + while (i < 16) { + FF(a,b,c,d, W[i], 7, tab[i]); i++; + FF(d,a,b,c, W[i], 12, tab[i]); i++; + FF(c,d,a,b, W[i], 17, tab[i]); i++; + FF(b,c,d,a, W[i], 22, tab[i]); i++; + } + while (i < 32) { + GG(a,b,c,d, W[(5*i+1)%16], 5, tab[i]); i++; + GG(d,a,b,c, W[(5*i+1)%16], 9, tab[i]); i++; + GG(c,d,a,b, W[(5*i+1)%16], 14, tab[i]); i++; + GG(b,c,d,a, W[(5*i+1)%16], 20, tab[i]); i++; + } + while (i < 48) { + HH(a,b,c,d, W[(3*i+5)%16], 4, tab[i]); i++; + HH(d,a,b,c, W[(3*i+5)%16], 11, tab[i]); i++; + HH(c,d,a,b, W[(3*i+5)%16], 16, tab[i]); i++; + HH(b,c,d,a, W[(3*i+5)%16], 23, tab[i]); i++; + } + while (i < 64) { + II(a,b,c,d, W[7*i%16], 6, tab[i]); i++; + II(d,a,b,c, W[7*i%16], 10, tab[i]); i++; + II(c,d,a,b, W[7*i%16], 15, tab[i]); i++; + II(b,c,d,a, W[7*i%16], 21, tab[i]); i++; + } + + s->h[0] += a; + s->h[1] += b; + s->h[2] += c; + s->h[3] += d; +} + +static void +pad(struct md5 *s) +{ + unsigned r = s->len % 64; + + s->buf[r++] = 0x80; + if (r > 56) { + memset(s->buf + r, 0, 64 - r); + r = 0; + processblock(s, s->buf); + } + memset(s->buf + r, 0, 56 - r); + s->len *= 8; + s->buf[56] = s->len; + s->buf[57] = s->len >> 8; + s->buf[58] = s->len >> 16; + s->buf[59] = s->len >> 24; + s->buf[60] = s->len >> 32; + s->buf[61] = s->len >> 40; + s->buf[62] = s->len >> 48; + s->buf[63] = s->len >> 56; + processblock(s, s->buf); +} + +void +md5_init(void *ctx) +{ + struct md5 *s = ctx; + s->len = 0; + s->h[0] = 0x67452301; + s->h[1] = 0xefcdab89; + s->h[2] = 0x98badcfe; + s->h[3] = 0x10325476; +} + +void +md5_sum(void *ctx, uint8_t md[MD5_DIGEST_LENGTH]) +{ + struct md5 *s = ctx; + int i; + + pad(s); + for (i = 0; i < 4; i++) { + md[4*i] = s->h[i]; + md[4*i+1] = s->h[i] >> 8; + md[4*i+2] = s->h[i] >> 16; + md[4*i+3] = s->h[i] >> 24; + } +} + +void +md5_update(void *ctx, const void *m, unsigned long len) +{ + struct md5 *s = ctx; + const uint8_t *p = m; + unsigned r = s->len % 64; + + s->len += len; + if (r) { + if (len < 64 - r) { + memcpy(s->buf + r, p, len); + return; + } + memcpy(s->buf + r, p, 64 - r); + len -= 64 - r; + p += 64 - r; + processblock(s, s->buf); + } + for (; len >= 64; len -= 64, p += 64) + processblock(s, p); + memcpy(s->buf, p, len); +} diff --git a/util/sbase/libutil/memmem.c b/util/sbase/libutil/memmem.c new file mode 100644 index 00000000..7dfef34b --- /dev/null +++ b/util/sbase/libutil/memmem.c @@ -0,0 +1,66 @@ +/* $OpenBSD: memmem.c,v 1.4 2015/08/31 02:53:57 guenther Exp $ */ + +/* + * Copyright (c) 2005 Pascal Gloor <pascal.gloor@spale.com> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <string.h> + +#include "../util.h" + +/* + * Find the first occurrence of the byte string s in byte string l. + */ + +void * +memmem(const void *l, size_t l_len, const void *s, size_t s_len) +{ + const char *cur, *last; + const char *cl = l; + const char *cs = s; + + /* a zero length needle should just return the haystack */ + if (s_len == 0) + return (void *)cl; + + /* "s" must be smaller or equal to "l" */ + if (l_len < s_len) + return NULL; + + /* special case where s_len == 1 */ + if (s_len == 1) + return memchr(l, *cs, l_len); + + /* the last position where its possible to find "s" in "l" */ + last = cl + l_len - s_len; + + for (cur = cl; cur <= last; cur++) + if (cur[0] == cs[0] && memcmp(cur, cs, s_len) == 0) + return (void *)cur; + + return NULL; +} diff --git a/util/sbase/libutil/mkdirp.c b/util/sbase/libutil/mkdirp.c new file mode 100644 index 00000000..c3c678c0 --- /dev/null +++ b/util/sbase/libutil/mkdirp.c @@ -0,0 +1,39 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include <errno.h> +#include <limits.h> + +#include "../util.h" + +int +mkdirp(const char *path, mode_t mode, mode_t pmode) +{ + char tmp[PATH_MAX], *p; + struct stat st; + + if (stat(path, &st) == 0) { + if (S_ISDIR(st.st_mode)) + return 0; + errno = ENOTDIR; + weprintf("%s:", path); + return -1; + } + + estrlcpy(tmp, path, sizeof(tmp)); + for (p = tmp + (tmp[0] == '/'); *p; p++) { + if (*p != '/') + continue; + *p = '\0'; + if (mkdir(tmp, pmode) < 0 && errno != EEXIST) { + weprintf("mkdir %s:", tmp); + return -1; + } + *p = '/'; + } + if (mkdir(tmp, mode) < 0 && errno != EEXIST) { + weprintf("mkdir %s:", tmp); + return -1; + } + return 0; +} diff --git a/util/sbase/libutil/mode.c b/util/sbase/libutil/mode.c new file mode 100644 index 00000000..2754be79 --- /dev/null +++ b/util/sbase/libutil/mode.c @@ -0,0 +1,152 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <unistd.h> + +#include "../util.h" + +mode_t +getumask(void) +{ + mode_t mask = umask(0); + umask(mask); + return mask; +} + +mode_t +parsemode(const char *str, mode_t mode, mode_t mask) +{ + char *end; + const char *p = str; + int octal, op; + mode_t who, perm, clear; + + octal = strtol(str, &end, 8); + if (*end == '\0') { + if (octal < 0 || octal > 07777) + eprintf("%s: invalid mode\n", str); + return octal; + } +next: + /* first, determine which bits we will be modifying */ + for (who = 0; *p; p++) { + switch (*p) { + /* masks */ + case 'u': + who |= S_IRWXU|S_ISUID; + continue; + case 'g': + who |= S_IRWXG|S_ISGID; + continue; + case 'o': + who |= S_IRWXO|S_ISVTX; + continue; + case 'a': + who |= S_IRWXU|S_ISUID|S_IRWXG|S_ISGID|S_IRWXO|S_ISVTX; + continue; + } + break; + } + if (who) { + clear = who; + } else { + clear = S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO; + who = ~mask; + } + while (*p) { + switch (*p) { + /* opers */ + case '=': + case '+': + case '-': + op = (int)*p; + break; + default: + eprintf("%s: invalid mode\n", str); + } + + perm = 0; + switch (*++p) { + /* copy */ + case 'u': + if (mode & S_IRUSR) + perm |= S_IRUSR|S_IRGRP|S_IROTH; + if (mode & S_IWUSR) + perm |= S_IWUSR|S_IWGRP|S_IWOTH; + if (mode & S_IXUSR) + perm |= S_IXUSR|S_IXGRP|S_IXOTH; + if (mode & S_ISUID) + perm |= S_ISUID|S_ISGID; + p++; + break; + case 'g': + if (mode & S_IRGRP) + perm |= S_IRUSR|S_IRGRP|S_IROTH; + if (mode & S_IWGRP) + perm |= S_IWUSR|S_IWGRP|S_IWOTH; + if (mode & S_IXGRP) + perm |= S_IXUSR|S_IXGRP|S_IXOTH; + if (mode & S_ISGID) + perm |= S_ISUID|S_ISGID; + p++; + break; + case 'o': + if (mode & S_IROTH) + perm |= S_IRUSR|S_IRGRP|S_IROTH; + if (mode & S_IWOTH) + perm |= S_IWUSR|S_IWGRP|S_IWOTH; + if (mode & S_IXOTH) + perm |= S_IXUSR|S_IXGRP|S_IXOTH; + p++; + break; + default: + for (; *p; p++) { + switch (*p) { + /* modes */ + case 'r': + perm |= S_IRUSR|S_IRGRP|S_IROTH; + break; + case 'w': + perm |= S_IWUSR|S_IWGRP|S_IWOTH; + break; + case 'x': + perm |= S_IXUSR|S_IXGRP|S_IXOTH; + break; + case 'X': + if (S_ISDIR(mode) || mode & (S_IXUSR|S_IXGRP|S_IXOTH)) + perm |= S_IXUSR|S_IXGRP|S_IXOTH; + break; + case 's': + perm |= S_ISUID|S_ISGID; + break; + case 't': + perm |= S_ISVTX; + break; + default: + goto apply; + } + } + } + +apply: + /* apply */ + switch (op) { + case '=': + mode &= ~clear; + /* fallthrough */ + case '+': + mode |= perm & who; + break; + case '-': + mode &= ~(perm & who); + break; + } + /* if we hit a comma, move on to the next clause */ + if (*p == ',') { + p++; + goto next; + } + } + return mode & ~S_IFMT; +} diff --git a/util/sbase/libutil/parseoffset.c b/util/sbase/libutil/parseoffset.c new file mode 100644 index 00000000..362a7829 --- /dev/null +++ b/util/sbase/libutil/parseoffset.c @@ -0,0 +1,61 @@ +/* See LICENSE file for copyright and license details. */ +#include <ctype.h> +#include <errno.h> +#include <inttypes.h> +#include <stdlib.h> +#include <string.h> + +#include "../util.h" + +off_t +parseoffset(const char *str) +{ + off_t res, scale = 1; + char *end; + + /* strictly check what strtol() usually would let pass */ + if (!str || !*str || isspace(*str) || *str == '+' || *str == '-') { + weprintf("parseoffset %s: invalid value\n", str); + return -1; + } + + errno = 0; + res = strtol(str, &end, 0); + if (errno) { + weprintf("parseoffset %s: invalid value\n", str); + return -1; + } + if (res < 0) { + weprintf("parseoffset %s: negative value\n", str); + return -1; + } + + /* suffix */ + if (*end) { + switch (toupper((int)*end)) { + case 'B': + scale = 512L; + break; + case 'K': + scale = 1024L; + break; + case 'M': + scale = 1024L * 1024L; + break; + case 'G': + scale = 1024L * 1024L * 1024L; + break; + default: + weprintf("parseoffset %s: invalid suffix '%s'\n", str, end); + return -1; + } + } + + /* prevent overflow */ + if (res > (SSIZE_MAX / scale)) { + weprintf("parseoffset %s: out of range\n", str); + return -1; + } + + return res * scale; +} diff --git a/util/sbase/libutil/putword.c b/util/sbase/libutil/putword.c new file mode 100644 index 00000000..80a9860a --- /dev/null +++ b/util/sbase/libutil/putword.c @@ -0,0 +1,16 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> + +#include "../util.h" + +void +putword(FILE *fp, const char *s) +{ + static int first = 1; + + if (!first) + fputc(' ', fp); + + fputs(s, fp); + first = 0; +} diff --git a/util/sbase/libutil/reallocarray.c b/util/sbase/libutil/reallocarray.c new file mode 100644 index 00000000..31ff6c31 --- /dev/null +++ b/util/sbase/libutil/reallocarray.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2008 Otto Moerbeek <otto@drijf.net> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <sys/types.h> +#include <errno.h> +#include <stdint.h> +#include <stdlib.h> + +#include "../util.h" + +/* + * This is sqrt(SIZE_MAX+1), as s1*s2 <= SIZE_MAX + * if both s1 < MUL_NO_OVERFLOW and s2 < MUL_NO_OVERFLOW + */ +#define MUL_NO_OVERFLOW (1UL << (sizeof(size_t) * 4)) + +void * +reallocarray(void *optr, size_t nmemb, size_t size) +{ + if ((nmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) && + nmemb > 0 && SIZE_MAX / nmemb < size) { + errno = ENOMEM; + return NULL; + } + return realloc(optr, size * nmemb); +} + +void * +ereallocarray(void *optr, size_t nmemb, size_t size) +{ + return enreallocarray(1, optr, nmemb, size); +} + +void * +enreallocarray(int status, void *optr, size_t nmemb, size_t size) +{ + void *p; + + if (!(p = reallocarray(optr, nmemb, size))) + enprintf(status, "reallocarray: out of memory\n"); + + return p; +} diff --git a/util/sbase/libutil/recurse.c b/util/sbase/libutil/recurse.c new file mode 100644 index 00000000..e66efaf5 --- /dev/null +++ b/util/sbase/libutil/recurse.c @@ -0,0 +1,108 @@ +/* See LICENSE file for copyright and license details. */ +#include <dirent.h> +#include <errno.h> +#include <fcntl.h> +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <sys/types.h> +#include <unistd.h> + +#include "../fs.h" +#include "../util.h" + +int recurse_status = 0; + +void +recurse(int dirfd, const char *name, void *data, struct recursor *r) +{ + struct dirent *d; + struct history *new, *h; + struct stat st, dst; + DIR *dp; + int flags = 0, fd; + size_t pathlen = r->pathlen; + + if (dirfd == AT_FDCWD) + pathlen = estrlcpy(r->path, name, sizeof(r->path)); + + if (r->follow == 'P' || (r->follow == 'H' && r->depth)) + flags |= AT_SYMLINK_NOFOLLOW; + + if (fstatat(dirfd, name, &st, flags) < 0) { + if (!(r->flags & SILENT)) { + weprintf("stat %s:", r->path); + recurse_status = 1; + } + return; + } + if (!S_ISDIR(st.st_mode)) { + r->fn(dirfd, name, &st, data, r); + return; + } + + new = emalloc(sizeof(struct history)); + new->prev = r->hist; + r->hist = new; + new->dev = st.st_dev; + new->ino = st.st_ino; + + for (h = new->prev; h; h = h->prev) + if (h->ino == st.st_ino && h->dev == st.st_dev) + return; + + if (!r->depth && (r->flags & DIRFIRST)) + r->fn(dirfd, name, &st, data, r); + + if (!r->maxdepth || r->depth + 1 < r->maxdepth) { + fd = openat(dirfd, name, O_RDONLY | O_CLOEXEC | O_DIRECTORY); + if (fd < 0) { + weprintf("open %s:", r->path); + recurse_status = 1; + } + if (!(dp = fdopendir(fd))) { + if (!(r->flags & SILENT)) { + weprintf("fdopendir:"); + recurse_status = 1; + } + return; + } + if (r->path[pathlen - 1] != '/') + r->path[pathlen++] = '/'; + if (r->follow == 'H') + flags |= AT_SYMLINK_NOFOLLOW; + while ((d = readdir(dp))) { + if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, "..")) + continue; + r->pathlen = pathlen + estrlcpy(r->path + pathlen, d->d_name, sizeof(r->path) - pathlen); + if (fstatat(fd, d->d_name, &dst, flags) < 0) { + if (!(r->flags & SILENT)) { + weprintf("stat %s:", r->path); + recurse_status = 1; + } + } else if ((r->flags & SAMEDEV) && dst.st_dev != st.st_dev) { + continue; + } else { + r->depth++; + r->fn(fd, d->d_name, &dst, data, r); + r->depth--; + } + } + r->path[pathlen - 1] = '\0'; + r->pathlen = pathlen - 1; + closedir(dp); + } + + if (!r->depth) { + if (!(r->flags & DIRFIRST)) + r->fn(dirfd, name, &st, data, r); + + while (r->hist) { + h = r->hist; + r->hist = r->hist->prev; + free(h); + } + } +} diff --git a/util/sbase/libutil/rm.c b/util/sbase/libutil/rm.c new file mode 100644 index 00000000..fb99840d --- /dev/null +++ b/util/sbase/libutil/rm.c @@ -0,0 +1,49 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include <errno.h> +#include <fcntl.h> +#include <stdio.h> +#include <unistd.h> + +#include "../fs.h" +#include "../util.h" + +int rm_status = 0; + +void +rm(int dirfd, const char *name, struct stat *st, void *data, struct recursor *r) +{ + int quiet, ask, write, flags, ignore; + + ignore = r->flags & IGNORE; + quiet = r->flags & SILENT; + ask = r->flags & CONFIRM; + write = faccessat(dirfd, name, W_OK, 0) == 0; + flags = 0; + + if (S_ISDIR(st->st_mode) && r->maxdepth) { + errno = EISDIR; + goto err; + } + + if (!quiet && (!write && isatty(0) || ask)) { + if (!confirm("remove file '%s'", r->path)); + return; + } + + if (S_ISDIR(st->st_mode)) { + flags = AT_REMOVEDIR; + recurse(dirfd, name, NULL, r); + } + + if (unlinkat(dirfd, name, flags) < 0) + goto err; + return; + +err: + if (!ignore) { + weprintf("cannot remove '%s':", r->path); + rm_status = 1; + } +} diff --git a/util/sbase/libutil/sha1.c b/util/sbase/libutil/sha1.c new file mode 100644 index 00000000..3d76a1be --- /dev/null +++ b/util/sbase/libutil/sha1.c @@ -0,0 +1,144 @@ +/* public domain sha1 implementation based on rfc3174 and libtomcrypt */ +#include <stdint.h> +#include <string.h> + +#include "../sha1.h" + +static uint32_t rol(uint32_t n, int k) { return (n << k) | (n >> (32-k)); } +#define F0(b,c,d) (d ^ (b & (c ^ d))) +#define F1(b,c,d) (b ^ c ^ d) +#define F2(b,c,d) ((b & c) | (d & (b | c))) +#define F3(b,c,d) (b ^ c ^ d) +#define G0(a,b,c,d,e,i) e += rol(a,5)+F0(b,c,d)+W[i]+0x5A827999; b = rol(b,30) +#define G1(a,b,c,d,e,i) e += rol(a,5)+F1(b,c,d)+W[i]+0x6ED9EBA1; b = rol(b,30) +#define G2(a,b,c,d,e,i) e += rol(a,5)+F2(b,c,d)+W[i]+0x8F1BBCDC; b = rol(b,30) +#define G3(a,b,c,d,e,i) e += rol(a,5)+F3(b,c,d)+W[i]+0xCA62C1D6; b = rol(b,30) + +static void +processblock(struct sha1 *s, const uint8_t *buf) +{ + uint32_t W[80], a, b, c, d, e; + int i; + + for (i = 0; i < 16; i++) { + W[i] = (uint32_t)buf[4*i]<<24; + W[i] |= (uint32_t)buf[4*i+1]<<16; + W[i] |= (uint32_t)buf[4*i+2]<<8; + W[i] |= buf[4*i+3]; + } + for (; i < 80; i++) + W[i] = rol(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1); + a = s->h[0]; + b = s->h[1]; + c = s->h[2]; + d = s->h[3]; + e = s->h[4]; + for (i = 0; i < 20; ) { + G0(a,b,c,d,e,i++); + G0(e,a,b,c,d,i++); + G0(d,e,a,b,c,i++); + G0(c,d,e,a,b,i++); + G0(b,c,d,e,a,i++); + } + while (i < 40) { + G1(a,b,c,d,e,i++); + G1(e,a,b,c,d,i++); + G1(d,e,a,b,c,i++); + G1(c,d,e,a,b,i++); + G1(b,c,d,e,a,i++); + } + while (i < 60) { + G2(a,b,c,d,e,i++); + G2(e,a,b,c,d,i++); + G2(d,e,a,b,c,i++); + G2(c,d,e,a,b,i++); + G2(b,c,d,e,a,i++); + } + while (i < 80) { + G3(a,b,c,d,e,i++); + G3(e,a,b,c,d,i++); + G3(d,e,a,b,c,i++); + G3(c,d,e,a,b,i++); + G3(b,c,d,e,a,i++); + } + s->h[0] += a; + s->h[1] += b; + s->h[2] += c; + s->h[3] += d; + s->h[4] += e; +} + +static void +pad(struct sha1 *s) +{ + unsigned r = s->len % 64; + + s->buf[r++] = 0x80; + if (r > 56) { + memset(s->buf + r, 0, 64 - r); + r = 0; + processblock(s, s->buf); + } + memset(s->buf + r, 0, 56 - r); + s->len *= 8; + s->buf[56] = s->len >> 56; + s->buf[57] = s->len >> 48; + s->buf[58] = s->len >> 40; + s->buf[59] = s->len >> 32; + s->buf[60] = s->len >> 24; + s->buf[61] = s->len >> 16; + s->buf[62] = s->len >> 8; + s->buf[63] = s->len; + processblock(s, s->buf); +} + +void +sha1_init(void *ctx) +{ + struct sha1 *s = ctx; + + s->len = 0; + s->h[0] = 0x67452301; + s->h[1] = 0xEFCDAB89; + s->h[2] = 0x98BADCFE; + s->h[3] = 0x10325476; + s->h[4] = 0xC3D2E1F0; +} + +void +sha1_sum(void *ctx, uint8_t md[SHA1_DIGEST_LENGTH]) +{ + struct sha1 *s = ctx; + int i; + + pad(s); + for (i = 0; i < 5; i++) { + md[4*i] = s->h[i] >> 24; + md[4*i+1] = s->h[i] >> 16; + md[4*i+2] = s->h[i] >> 8; + md[4*i+3] = s->h[i]; + } +} + +void +sha1_update(void *ctx, const void *m, unsigned long len) +{ + struct sha1 *s = ctx; + const uint8_t *p = m; + unsigned r = s->len % 64; + + s->len += len; + if (r) { + if (len < 64 - r) { + memcpy(s->buf + r, p, len); + return; + } + memcpy(s->buf + r, p, 64 - r); + len -= 64 - r; + p += 64 - r; + processblock(s, s->buf); + } + for (; len >= 64; len -= 64, p += 64) + processblock(s, p); + memcpy(s->buf, p, len); +} diff --git a/util/sbase/libutil/sha224.c b/util/sbase/libutil/sha224.c new file mode 100644 index 00000000..fce520f5 --- /dev/null +++ b/util/sbase/libutil/sha224.c @@ -0,0 +1,26 @@ +/* public domain sha224 implementation based on fips180-3 */ +#include <stdint.h> +#include "../sha224.h" + +extern void sha256_sum_n(void *, uint8_t *, int n); + +void +sha224_init(void *ctx) +{ + struct sha224 *s = ctx; + s->len = 0; + s->h[0] = 0xc1059ed8; + s->h[1] = 0x367cd507; + s->h[2] = 0x3070dd17; + s->h[3] = 0xf70e5939; + s->h[4] = 0xffc00b31; + s->h[5] = 0x68581511; + s->h[6] = 0x64f98fa7; + s->h[7] = 0xbefa4fa4; +} + +void +sha224_sum(void *ctx, uint8_t md[SHA224_DIGEST_LENGTH]) +{ + sha256_sum_n(ctx, md, 8); +} diff --git a/util/sbase/libutil/sha256.c b/util/sbase/libutil/sha256.c new file mode 100644 index 00000000..266cfecb --- /dev/null +++ b/util/sbase/libutil/sha256.c @@ -0,0 +1,154 @@ +/* public domain sha256 implementation based on fips180-3 */ +#include <ctype.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "../sha256.h" + +static uint32_t ror(uint32_t n, int k) { return (n >> k) | (n << (32-k)); } +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) ((x & y) | (z & (x | y))) +#define S0(x) (ror(x,2) ^ ror(x,13) ^ ror(x,22)) +#define S1(x) (ror(x,6) ^ ror(x,11) ^ ror(x,25)) +#define R0(x) (ror(x,7) ^ ror(x,18) ^ (x>>3)) +#define R1(x) (ror(x,17) ^ ror(x,19) ^ (x>>10)) + +static const uint32_t K[64] = { +0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, +0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, +0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, +0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, +0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, +0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, +0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, +0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 +}; + +static void +processblock(struct sha256 *s, const uint8_t *buf) +{ + uint32_t W[64], t1, t2, a, b, c, d, e, f, g, h; + int i; + + for (i = 0; i < 16; i++) { + W[i] = (uint32_t)buf[4*i]<<24; + W[i] |= (uint32_t)buf[4*i+1]<<16; + W[i] |= (uint32_t)buf[4*i+2]<<8; + W[i] |= buf[4*i+3]; + } + for (; i < 64; i++) + W[i] = R1(W[i-2]) + W[i-7] + R0(W[i-15]) + W[i-16]; + a = s->h[0]; + b = s->h[1]; + c = s->h[2]; + d = s->h[3]; + e = s->h[4]; + f = s->h[5]; + g = s->h[6]; + h = s->h[7]; + for (i = 0; i < 64; i++) { + t1 = h + S1(e) + Ch(e,f,g) + K[i] + W[i]; + t2 = S0(a) + Maj(a,b,c); + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + } + s->h[0] += a; + s->h[1] += b; + s->h[2] += c; + s->h[3] += d; + s->h[4] += e; + s->h[5] += f; + s->h[6] += g; + s->h[7] += h; +} + +static void +pad(struct sha256 *s) +{ + unsigned r = s->len % 64; + + s->buf[r++] = 0x80; + if (r > 56) { + memset(s->buf + r, 0, 64 - r); + r = 0; + processblock(s, s->buf); + } + memset(s->buf + r, 0, 56 - r); + s->len *= 8; + s->buf[56] = s->len >> 56; + s->buf[57] = s->len >> 48; + s->buf[58] = s->len >> 40; + s->buf[59] = s->len >> 32; + s->buf[60] = s->len >> 24; + s->buf[61] = s->len >> 16; + s->buf[62] = s->len >> 8; + s->buf[63] = s->len; + processblock(s, s->buf); +} + +void +sha256_init(void *ctx) +{ + struct sha256 *s = ctx; + s->len = 0; + s->h[0] = 0x6a09e667; + s->h[1] = 0xbb67ae85; + s->h[2] = 0x3c6ef372; + s->h[3] = 0xa54ff53a; + s->h[4] = 0x510e527f; + s->h[5] = 0x9b05688c; + s->h[6] = 0x1f83d9ab; + s->h[7] = 0x5be0cd19; +} + +void +sha256_sum_n(void *ctx, uint8_t *md, int n) +{ + struct sha256 *s = ctx; + int i; + + pad(s); + for (i = 0; i < n; i++) { + md[4*i] = s->h[i] >> 24; + md[4*i+1] = s->h[i] >> 16; + md[4*i+2] = s->h[i] >> 8; + md[4*i+3] = s->h[i]; + } +} + +void +sha256_sum(void *ctx, uint8_t md[SHA256_DIGEST_LENGTH]) +{ + sha256_sum_n(ctx, md, 8); +} + +void +sha256_update(void *ctx, const void *m, unsigned long len) +{ + struct sha256 *s = ctx; + const uint8_t *p = m; + unsigned r = s->len % 64; + + s->len += len; + if (r) { + if (len < 64 - r) { + memcpy(s->buf + r, p, len); + return; + } + memcpy(s->buf + r, p, 64 - r); + len -= 64 - r; + p += 64 - r; + processblock(s, s->buf); + } + for (; len >= 64; len -= 64, p += 64) + processblock(s, p); + memcpy(s->buf, p, len); +} diff --git a/util/sbase/libutil/sha384.c b/util/sbase/libutil/sha384.c new file mode 100644 index 00000000..0a0e7777 --- /dev/null +++ b/util/sbase/libutil/sha384.c @@ -0,0 +1,26 @@ +/* public domain sha384 implementation based on fips180-3 */ +#include <stdint.h> +#include "../sha384.h" + +extern void sha512_sum_n(void *, uint8_t *, int n); + +void +sha384_init(void *ctx) +{ + struct sha384 *s = ctx; + s->len = 0; + s->h[0] = 0xcbbb9d5dc1059ed8ULL; + s->h[1] = 0x629a292a367cd507ULL; + s->h[2] = 0x9159015a3070dd17ULL; + s->h[3] = 0x152fecd8f70e5939ULL; + s->h[4] = 0x67332667ffc00b31ULL; + s->h[5] = 0x8eb44a8768581511ULL; + s->h[6] = 0xdb0c2e0d64f98fa7ULL; + s->h[7] = 0x47b5481dbefa4fa4ULL; +} + +void +sha384_sum(void *ctx, uint8_t md[SHA384_DIGEST_LENGTH]) +{ + sha512_sum_n(ctx, md, 6); +} diff --git a/util/sbase/libutil/sha512-224.c b/util/sbase/libutil/sha512-224.c new file mode 100644 index 00000000..a5636c13 --- /dev/null +++ b/util/sbase/libutil/sha512-224.c @@ -0,0 +1,26 @@ +/* public domain sha512/224 implementation based on fips180-3 */ +#include <stdint.h> +#include "../sha512-224.h" + +extern void sha512_sum_n(void *, uint8_t *, int n); + +void +sha512_224_init(void *ctx) +{ + struct sha512_224 *s = ctx; + s->len = 0; + s->h[0] = 0x8c3d37c819544da2ULL; + s->h[1] = 0x73e1996689dcd4d6ULL; + s->h[2] = 0x1dfab7ae32ff9c82ULL; + s->h[3] = 0x679dd514582f9fcfULL; + s->h[4] = 0x0f6d2b697bd44da8ULL; + s->h[5] = 0x77e36f7304c48942ULL; + s->h[6] = 0x3f9d85a86a1d36c8ULL; + s->h[7] = 0x1112e6ad91d692a1ULL; +} + +void +sha512_224_sum(void *ctx, uint8_t md[SHA512_224_DIGEST_LENGTH]) +{ + sha512_sum_n(ctx, md, 4); +} diff --git a/util/sbase/libutil/sha512-256.c b/util/sbase/libutil/sha512-256.c new file mode 100644 index 00000000..d4b84495 --- /dev/null +++ b/util/sbase/libutil/sha512-256.c @@ -0,0 +1,26 @@ +/* public domain sha512/256 implementation based on fips180-3 */ +#include <stdint.h> +#include "../sha512-256.h" + +extern void sha512_sum_n(void *, uint8_t *, int n); + +void +sha512_256_init(void *ctx) +{ + struct sha512_256 *s = ctx; + s->len = 0; + s->h[0] = 0x22312194fc2bf72cULL; + s->h[1] = 0x9f555fa3c84c64c2ULL; + s->h[2] = 0x2393b86b6f53b151ULL; + s->h[3] = 0x963877195940eabdULL; + s->h[4] = 0x96283ee2a88effe3ULL; + s->h[5] = 0xbe5e1e2553863992ULL; + s->h[6] = 0x2b0199fc2c85b8aaULL; + s->h[7] = 0x0eb72ddc81c52ca2ULL; +} + +void +sha512_256_sum(void *ctx, uint8_t md[SHA512_256_DIGEST_LENGTH]) +{ + sha512_sum_n(ctx, md, 4); +} diff --git a/util/sbase/libutil/sha512.c b/util/sbase/libutil/sha512.c new file mode 100644 index 00000000..25264c78 --- /dev/null +++ b/util/sbase/libutil/sha512.c @@ -0,0 +1,175 @@ +/* public domain sha256 implementation based on fips180-3 */ + +#include <ctype.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "../sha512.h" + +static uint64_t ror(uint64_t n, int k) { return (n >> k) | (n << (64-k)); } +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) ((x & y) | (z & (x | y))) +#define S0(x) (ror(x,28) ^ ror(x,34) ^ ror(x,39)) +#define S1(x) (ror(x,14) ^ ror(x,18) ^ ror(x,41)) +#define R0(x) (ror(x,1) ^ ror(x,8) ^ (x>>7)) +#define R1(x) (ror(x,19) ^ ror(x,61) ^ (x>>6)) + +static const uint64_t K[80] = { +0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, 0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL, +0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, +0xd807aa98a3030242ULL, 0x12835b0145706fbeULL, 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL, +0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, 0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL, +0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, +0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL, 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL, +0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, 0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL, +0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL, 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, +0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL, 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL, +0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, 0x81c2c92e47edaee6ULL, 0x92722c851482353bULL, +0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, +0xd192e819d6ef5218ULL, 0xd69906245565a910ULL, 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL, +0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, 0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL, +0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL, 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, +0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL, 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL, +0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, 0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL, +0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, +0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL, 0x113f9804bef90daeULL, 0x1b710b35131c471bULL, +0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, 0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL, +0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL, 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL +}; + +static void +processblock(struct sha512 *s, const uint8_t *buf) +{ + uint64_t W[80], t1, t2, a, b, c, d, e, f, g, h; + int i; + + for (i = 0; i < 16; i++) { + W[i] = (uint64_t)buf[8*i]<<56; + W[i] |= (uint64_t)buf[8*i+1]<<48; + W[i] |= (uint64_t)buf[8*i+2]<<40; + W[i] |= (uint64_t)buf[8*i+3]<<32; + W[i] |= (uint64_t)buf[8*i+4]<<24; + W[i] |= (uint64_t)buf[8*i+5]<<16; + W[i] |= (uint64_t)buf[8*i+6]<<8; + W[i] |= buf[8*i+7]; + } + for (; i < 80; i++) + W[i] = R1(W[i-2]) + W[i-7] + R0(W[i-15]) + W[i-16]; + a = s->h[0]; + b = s->h[1]; + c = s->h[2]; + d = s->h[3]; + e = s->h[4]; + f = s->h[5]; + g = s->h[6]; + h = s->h[7]; + for (i = 0; i < 80; i++) { + t1 = h + S1(e) + Ch(e,f,g) + K[i] + W[i]; + t2 = S0(a) + Maj(a,b,c); + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + } + s->h[0] += a; + s->h[1] += b; + s->h[2] += c; + s->h[3] += d; + s->h[4] += e; + s->h[5] += f; + s->h[6] += g; + s->h[7] += h; +} + +static void +pad(struct sha512 *s) +{ + unsigned r = s->len % 128; + + s->buf[r++] = 0x80; + if (r > 112) { + memset(s->buf + r, 0, 128 - r); + r = 0; + processblock(s, s->buf); + } + memset(s->buf + r, 0, 120 - r); + s->len *= 8; + s->buf[120] = s->len >> 56; + s->buf[121] = s->len >> 48; + s->buf[122] = s->len >> 40; + s->buf[123] = s->len >> 32; + s->buf[124] = s->len >> 24; + s->buf[125] = s->len >> 16; + s->buf[126] = s->len >> 8; + s->buf[127] = s->len; + processblock(s, s->buf); +} + +void +sha512_init(void *ctx) +{ + struct sha512 *s = ctx; + s->len = 0; + s->h[0] = 0x6a09e667f3bcc908ULL; + s->h[1] = 0xbb67ae8584caa73bULL; + s->h[2] = 0x3c6ef372fe94f82bULL; + s->h[3] = 0xa54ff53a5f1d36f1ULL; + s->h[4] = 0x510e527fade682d1ULL; + s->h[5] = 0x9b05688c2b3e6c1fULL; + s->h[6] = 0x1f83d9abfb41bd6bULL; + s->h[7] = 0x5be0cd19137e2179ULL; +} + +void +sha512_sum_n(void *ctx, uint8_t *md, int n) +{ + struct sha512 *s = ctx; + int i; + + pad(s); + for (i = 0; i < n; i++) { + md[8*i] = s->h[i] >> 56; + md[8*i+1] = s->h[i] >> 48; + md[8*i+2] = s->h[i] >> 40; + md[8*i+3] = s->h[i] >> 32; + md[8*i+4] = s->h[i] >> 24; + md[8*i+5] = s->h[i] >> 16; + md[8*i+6] = s->h[i] >> 8; + md[8*i+7] = s->h[i]; + } +} + +void +sha512_sum(void *ctx, uint8_t md[SHA512_DIGEST_LENGTH]) +{ + sha512_sum_n(ctx, md, 8); +} + +void +sha512_update(void *ctx, const void *m, unsigned long len) +{ + struct sha512 *s = ctx; + const uint8_t *p = m; + unsigned r = s->len % 128; + + s->len += len; + if (r) { + if (len < 128 - r) { + memcpy(s->buf + r, p, len); + return; + } + memcpy(s->buf + r, p, 128 - r); + len -= 128 - r; + p += 128 - r; + processblock(s, s->buf); + } + for (; len >= 128; len -= 128, p += 128) + processblock(s, p); + memcpy(s->buf, p, len); +} diff --git a/util/sbase/libutil/strcasestr.c b/util/sbase/libutil/strcasestr.c new file mode 100644 index 00000000..26eb6bbd --- /dev/null +++ b/util/sbase/libutil/strcasestr.c @@ -0,0 +1,38 @@ +/* + * Copyright 2005-2014 Rich Felker, et al. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +#include <string.h> +#include <strings.h> + +#include "../util.h" + +char * +strcasestr(const char *h, const char *n) +{ + size_t l = strlen(n); + + for (; *h; h++) + if (!strncasecmp(h, n, l)) + return (char *)h; + + return 0; +} diff --git a/util/sbase/libutil/strlcat.c b/util/sbase/libutil/strlcat.c new file mode 100644 index 00000000..bf263b87 --- /dev/null +++ b/util/sbase/libutil/strlcat.c @@ -0,0 +1,63 @@ +/* + * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <string.h> +#include <sys/types.h> + +#include "../util.h" + +/* + * Appends src to string dst of size siz (unlike strncat, siz is the + * full size of dst, not space left). At most siz-1 characters + * will be copied. Always NUL terminates (unless siz <= strlen(dst)). + * Returns strlen(src) + MIN(siz, strlen(initial dst)). + * If retval >= siz, truncation occurred. + */ +size_t +strlcat(char *dst, const char *src, size_t siz) +{ + char *d = dst; + const char *s = src; + size_t n = siz; + size_t dlen; + /* Find the end of dst and adjust bytes left but don't go past end */ + while (n-- != 0 && *d != '\0') + d++; + dlen = d - dst; + n = siz - dlen; + if (n == 0) + return(dlen + strlen(s)); + while (*s != '\0') { + if (n != 1) { + *d++ = *s; + n--; + } + s++; + } + *d = '\0'; + return(dlen + (s - src)); /* count does not include NUL */ +} + +size_t +estrlcat(char *dst, const char *src, size_t siz) +{ + size_t ret; + + if ((ret = strlcat(dst, src, siz)) >= siz) + eprintf("strlcat: input string too long\n"); + + return ret; +} diff --git a/util/sbase/libutil/strlcpy.c b/util/sbase/libutil/strlcpy.c new file mode 100644 index 00000000..44b618a0 --- /dev/null +++ b/util/sbase/libutil/strlcpy.c @@ -0,0 +1,59 @@ +/* + * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <string.h> +#include <sys/types.h> + +#include "../util.h" + +/* + * Copy src to string dst of size siz. At most siz-1 characters + * will be copied. Always NUL terminates (unless siz == 0). + * Returns strlen(src); if retval >= siz, truncation occurred. + */ +size_t +strlcpy(char *dst, const char *src, size_t siz) +{ + char *d = dst; + const char *s = src; + size_t n = siz; + /* Copy as many bytes as will fit */ + if (n != 0) { + while (--n != 0) { + if ((*d++ = *s++) == '\0') + break; + } + } + /* Not enough room in dst, add NUL and traverse rest of src */ + if (n == 0) { + if (siz != 0) + *d = '\0'; /* NUL-terminate dst */ + while (*s++) + ; + } + return(s - src - 1); /* count does not include NUL */ +} + +size_t +estrlcpy(char *dst, const char *src, size_t siz) +{ + size_t ret; + + if ((ret = strlcpy(dst, src, siz)) >= siz) + eprintf("strlcpy: input string too long\n"); + + return ret; +} diff --git a/util/sbase/libutil/strnsubst.c b/util/sbase/libutil/strnsubst.c new file mode 100644 index 00000000..2da54aba --- /dev/null +++ b/util/sbase/libutil/strnsubst.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2002 J. Mallett. All rights reserved. + * You may do whatever you want with this file as long as + * the above copyright and this notice remain intact, along + * with the following statement: + * For the man who taught me vi, and who got too old, too young. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "../util.h" + +/* + * Replaces str with a string consisting of str with match replaced with + * replstr as many times as can be done before the constructed string is + * maxsize bytes large. It does not free the string pointed to by str, it + * is up to the calling program to be sure that the original contents of + * str as well as the new contents are handled in an appropriate manner. + * If replstr is NULL, then that internally is changed to a nil-string, so + * that we can still pretend to do somewhat meaningful substitution. + * No value is returned. + */ +void +strnsubst(char **str, const char *match, const char *replstr, size_t maxsize) +{ + char *s1, *s2, *this; + size_t matchlen, s2len; + int n; + + if ((s1 = *str) == NULL) + return; + s2 = emalloc(maxsize); + + if (replstr == NULL) + replstr = ""; + + if (match == NULL || *match == '\0' || strlen(s1) >= maxsize) { + strlcpy(s2, s1, maxsize); + goto done; + } + + *s2 = '\0'; + s2len = 0; + matchlen = strlen(match); + for (;;) { + if ((this = strstr(s1, match)) == NULL) + break; + n = snprintf(s2 + s2len, maxsize - s2len, "%.*s%s", + (int)(this - s1), s1, replstr); + if (n == -1 || n + s2len + strlen(this + matchlen) >= maxsize) + break; /* out of room */ + s2len += n; + s1 = this + matchlen; + } + strlcpy(s2 + s2len, s1, maxsize - s2len); +done: + *str = s2; + return; +} diff --git a/util/sbase/libutil/strsep.c b/util/sbase/libutil/strsep.c new file mode 100644 index 00000000..d9f06444 --- /dev/null +++ b/util/sbase/libutil/strsep.c @@ -0,0 +1,37 @@ +/* + * Copyright 2005-2014 Rich Felker, et al. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +#include <string.h> + +#include "../util.h" + +char * +strsep(char **str, const char *sep) +{ + char *s = *str, *end; + if (!s) return NULL; + end = s + strcspn(s, sep); + if (*end) *end++ = 0; + else end = 0; + *str = end; + return s; +} diff --git a/util/sbase/libutil/strtonum.c b/util/sbase/libutil/strtonum.c new file mode 100644 index 00000000..c0ac401f --- /dev/null +++ b/util/sbase/libutil/strtonum.c @@ -0,0 +1,85 @@ +/* $OpenBSD: strtonum.c,v 1.7 2013/04/17 18:40:58 tedu Exp $ */ + +/* + * Copyright (c) 2004 Ted Unangst and Todd Miller + * All rights reserved. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <errno.h> +#include <limits.h> +#include <stdlib.h> + +#include "../util.h" + +#define INVALID 1 +#define TOOSMALL 2 +#define TOOLARGE 3 + +long long +strtonum(const char *numstr, long long minval, long long maxval, + const char **errstrp) +{ + long long ll = 0; + int error = 0; + char *ep; + struct errval { + const char *errstr; + int err; + } ev[4] = { + { NULL, 0 }, + { "invalid", EINVAL }, + { "too small", ERANGE }, + { "too large", ERANGE }, + }; + + ev[0].err = errno; + errno = 0; + if (minval > maxval) { + error = INVALID; + } else { + ll = strtoll(numstr, &ep, 10); + if (numstr == ep || *ep != '\0') + error = INVALID; + else if ((ll == LLONG_MIN && errno == ERANGE) || ll < minval) + error = TOOSMALL; + else if ((ll == LLONG_MAX && errno == ERANGE) || ll > maxval) + error = TOOLARGE; + } + if (errstrp != NULL) + *errstrp = ev[error].errstr; + errno = ev[error].err; + if (error) + ll = 0; + + return (ll); +} + +long long +enstrtonum(int status, const char *numstr, long long minval, long long maxval) +{ + const char *errstr; + long long ll; + + ll = strtonum(numstr, minval, maxval, &errstr); + if (errstr) + enprintf(status, "strtonum %s: %s\n", numstr, errstr); + return ll; +} + +long long +estrtonum(const char *numstr, long long minval, long long maxval) +{ + return enstrtonum(1, numstr, minval, maxval); +} diff --git a/util/sbase/libutil/unescape.c b/util/sbase/libutil/unescape.c new file mode 100644 index 00000000..b8f75ca9 --- /dev/null +++ b/util/sbase/libutil/unescape.c @@ -0,0 +1,58 @@ +/* See LICENSE file for copyright and license details. */ +#include <ctype.h> +#include <string.h> + +#include "../util.h" + +#define is_odigit(c) ('0' <= c && c <= '7') + +size_t +unescape(char *s) +{ + static const char escapes[256] = { + ['"'] = '"', + ['\''] = '\'', + ['\\'] = '\\', + ['a'] = '\a', + ['b'] = '\b', + ['E'] = 033, + ['e'] = 033, + ['f'] = '\f', + ['n'] = '\n', + ['r'] = '\r', + ['t'] = '\t', + ['v'] = '\v' + }; + size_t m, q; + char *r, *w; + + for (r = w = s; *r;) { + if (*r != '\\') { + *w++ = *r++; + continue; + } + r++; + if (!*r) { + eprintf("null escape sequence\n"); + } else if (escapes[(unsigned char)*r]) { + *w++ = escapes[(unsigned char)*r++]; + } else if (is_odigit(*r)) { + for (q = 0, m = 3; m && is_odigit(*r); m--, r++) + q = q * 8 + (*r - '0'); + *w++ = MIN(q, 255); + } else if (*r == 'x' && isxdigit(r[1])) { + r++; + for (q = 0, m = 2; m && isxdigit(*r); m--, r++) + if (isdigit(*r)) + q = q * 16 + (*r - '0'); + else + q = q * 16 + (tolower(*r) - 'a' + 10); + *w++ = q; + } else { + eprintf("invalid escape sequence '\\%c'\n", *r); + } + } + *w = '\0'; + + return w - s; +} diff --git a/util/sbase/libutil/writeall.c b/util/sbase/libutil/writeall.c new file mode 100644 index 00000000..4725ced8 --- /dev/null +++ b/util/sbase/libutil/writeall.c @@ -0,0 +1,21 @@ +/* See LICENSE file for copyright and license details. */ +#include <unistd.h> + +#include "../util.h" + +ssize_t +writeall(int fd, const void *buf, size_t len) +{ + const char *p = buf; + ssize_t n; + + while (len) { + n = write(fd, p, len); + if (n <= 0) + return n; + p += n; + len -= n; + } + + return p - (const char *)buf; +} diff --git a/util/sbase/link.1 b/util/sbase/link.1 new file mode 100644 index 00000000..915b9d80 --- /dev/null +++ b/util/sbase/link.1 @@ -0,0 +1,16 @@ +.Dd October 8, 2015 +.Dt LINK 1 +.Os sbase +.Sh NAME +.Nm link +.Nd call the link function +.Ar target +.Ar name +.Sh DESCRIPTION +.Nm +creates a hard link +.Ar name +to +.Ar target . +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/link.c b/util/sbase/link.c new file mode 100644 index 00000000..7cee4d0f --- /dev/null +++ b/util/sbase/link.c @@ -0,0 +1,27 @@ +/* See LICENSE file for copyright and license details. */ +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s target name\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + ARGBEGIN { + default: + usage(); + } ARGEND + + if (argc != 2) + usage(); + + if (link(argv[0], argv[1]) < 0) + eprintf("link:"); + + return 0; +} diff --git a/util/sbase/ln.1 b/util/sbase/ln.1 new file mode 100644 index 00000000..057b5a09 --- /dev/null +++ b/util/sbase/ln.1 @@ -0,0 +1,61 @@ +.Dd October 8, 2015 +.Dt LN 1 +.Os sbase +.Sh NAME +.Nm ln +.Nd link files +.Sh SYNOPSIS +.Nm +.Op Fl f +.Op Fl L | Fl P | Fl s +.Ar target +.Op Ar name +.Nm +.Op Fl f +.Op Fl L | Fl P | Fl s +.Ar target ... +.Ar directory +.Sh DESCRIPTION +.Nm +creates a hard link +.Ar name +to +.Ar target . +If no +.Ar name +is given, a hard link to +.Ar target +is created in the current directory. +If more than one +.Ar target +is given, +.Nm +hardlinks them in the existing +.Ar directory . +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl f +If +.Ar name +exists and is not a +.Ar target , +remove it to allow the link. +.It Fl L | Fl P +If +.Ar target +is a symbolic link, create a hard link to the (referenced file) | +(symbolic link itself). The former is the default. +.It Fl s +Create symbolic links instead of hard links. +Disables +.Fl L +and +.Fl P , +because their purpose does not apply to symbolic links. +.El +.Sh SEE ALSO +.Xr cp 1 , +.Xr link 2 , +.Xr symlink 2 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/ln.c b/util/sbase/ln.c new file mode 100644 index 00000000..f62068a1 --- /dev/null +++ b/util/sbase/ln.c @@ -0,0 +1,103 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include <errno.h> +#include <fcntl.h> +#include <libgen.h> +#include <string.h> +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-f] [-L | -P | -s] target [name]\n" + " %s [-f] [-L | -P | -s] target ... dir\n", argv0, argv0); +} + +int +main(int argc, char *argv[]) +{ + char *targetdir = ".", *target = NULL; + int ret = 0, sflag = 0, fflag = 0, dirfd = AT_FDCWD, + hastarget = 0, flags = AT_SYMLINK_FOLLOW; + struct stat st, tst; + + ARGBEGIN { + case 'f': + fflag = 1; + break; + case 'L': + flags |= AT_SYMLINK_FOLLOW; + break; + case 'P': + flags &= ~AT_SYMLINK_FOLLOW; + break; + case 's': + sflag = 1; + break; + default: + usage(); + } ARGEND + + if (!argc) + usage(); + + if (argc > 1) { + if (!stat(argv[argc - 1], &st) && S_ISDIR(st.st_mode)) { + if ((dirfd = open(argv[argc - 1], O_RDONLY)) < 0) + eprintf("open %s:", argv[argc - 1]); + targetdir = argv[argc - 1]; + if (targetdir[strlen(targetdir) - 1] == '/') + targetdir[strlen(targetdir) - 1] = '\0'; + } else if (argc == 2) { + hastarget = 1; + target = argv[argc - 1]; + } else { + eprintf("%s: not a directory\n", argv[argc - 1]); + } + argv[argc - 1] = NULL; + argc--; + } + + for (; *argv; argc--, argv++) { + if (!hastarget) + target = basename(*argv); + + if (!sflag) { + if (stat(*argv, &st) < 0) { + weprintf("stat %s:", *argv); + ret = 1; + continue; + } else if (fstatat(dirfd, target, &tst, AT_SYMLINK_NOFOLLOW) < 0) { + if (errno != ENOENT) { + weprintf("fstatat %s %s:", targetdir, target); + ret = 1; + continue; + } + } else if (st.st_dev == tst.st_dev && st.st_ino == tst.st_ino) { + if (!fflag) { + weprintf("%s and %s/%s are the same file\n", + *argv, targetdir, target); + ret = 1; + } + continue; + } + } + + if (fflag && unlinkat(dirfd, target, 0) < 0 && errno != ENOENT) { + weprintf("unlinkat %s %s:", targetdir, target); + ret = 1; + continue; + } + if ((sflag ? symlinkat(*argv, dirfd, target) : + linkat(AT_FDCWD, *argv, dirfd, target, flags)) < 0) { + weprintf("%s %s <- %s/%s:", sflag ? "symlinkat" : "linkat", + *argv, targetdir, target); + ret = 1; + } + } + + return ret; +} diff --git a/util/sbase/logger.1 b/util/sbase/logger.1 new file mode 100644 index 00000000..4624a163 --- /dev/null +++ b/util/sbase/logger.1 @@ -0,0 +1,52 @@ +.Dd October 8, 2015 +.Dt LOGGER 1 +.Os sbase +.Sh NAME +.Nm logger +.Nd make entries in the system log +.Sh SYNOPSIS +.Nm +.Op Fl is +.Op Fl p Ar priority +.Op Fl t Ar tag +.Op Ar message ... +.Sh DESCRIPTION +.Nm +provides a shell command interface to the +.Xr syslog 3 +system log module and writes each +.Ar message +to the log. +If no +.Ar message +is given, +.Nm +logs stdin. +.Sh OPTIONS +.Bl -tag -width xxxxxxxxxxxx +.It Fl i +Add the logger process ID to each line in the log. +.It Fl p Ar priority +Set the message +.Ar priority +given symbolically as a +.Dq facility.level +pair. +The default is +.Dq user.notice . +.It Fl s +Also log to stderr. +.It Fl t Ar tag +Add +.Ar tag +to each line in the log. +.El +.Sh SEE ALSO +.Xr syslogd 1 , +.Xr syslog 3 +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Op Fl ipst +flags are an extensions to that specification. diff --git a/util/sbase/logger.c b/util/sbase/logger.c new file mode 100644 index 00000000..603da04f --- /dev/null +++ b/util/sbase/logger.c @@ -0,0 +1,91 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <strings.h> +#define SYSLOG_NAMES +#include <syslog.h> +#include <unistd.h> + +#include "util.h" + +static int +decodetable(CODE *table, char *name) +{ + CODE *c; + + for (c = table; c->c_name; c++) + if (!strcasecmp(name, c->c_name)) + return c->c_val; + eprintf("invalid priority name: %s\n", name); + + return -1; /* not reached */ +} + +static int +decodepri(char *pri) +{ + char *lev, *fac = pri; + + if (!(lev = strchr(pri, '.'))) + eprintf("invalid priority name: %s\n", pri); + *lev++ = '\0'; + if (!*lev) + eprintf("invalid priority name: %s\n", pri); + + return (decodetable(facilitynames, fac) & LOG_FACMASK) | + (decodetable(prioritynames, lev) & LOG_PRIMASK); +} + +static void +usage(void) +{ + eprintf("usage: %s [-is] [-p priority] [-t tag] [message ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + size_t sz; + int logflags = 0, priority = LOG_NOTICE, i; + char *buf = NULL, *tag = NULL; + + ARGBEGIN { + case 'i': + logflags |= LOG_PID; + break; + case 'p': + priority = decodepri(EARGF(usage())); + break; + case 's': + logflags |= LOG_PERROR; + break; + case 't': + tag = EARGF(usage()); + break; + default: + usage(); + } ARGEND + + openlog(tag ? tag : getlogin(), logflags, 0); + + if (!argc) { + while (getline(&buf, &sz, stdin) > 0) + syslog(priority, "%s", buf); + } else { + for (i = 0, sz = 0; i < argc; i++) + sz += strlen(argv[i]); + sz += argc; + buf = ecalloc(1, sz); + for (i = 0; i < argc; i++) { + estrlcat(buf, argv[i], sz); + if (i + 1 < argc) + estrlcat(buf, " ", sz); + } + syslog(priority, "%s", buf); + } + + closelog(); + + return fshut(stdin, "<stdin>"); +} diff --git a/util/sbase/logname.1 b/util/sbase/logname.1 new file mode 100644 index 00000000..1c1f16fd --- /dev/null +++ b/util/sbase/logname.1 @@ -0,0 +1,13 @@ +.Dd October 8, 2015 +.Dt LOGNAME 1 +.Os sbase +.Sh NAME +.Nm logname +.Nd show login name +.Sh SYNOPSIS +.Nm +.Sh DESCRIPTION +.Nm +writes the login name of the current user to stdout. +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/logname.c b/util/sbase/logname.c new file mode 100644 index 00000000..8eb8eea5 --- /dev/null +++ b/util/sbase/logname.c @@ -0,0 +1,29 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + char *login; + + argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0; + + if (argc) + usage(); + + if ((login = getlogin())) + puts(login); + else + eprintf("no login name\n"); + + return fshut(stdout, "<stdout>"); +} diff --git a/util/sbase/ls.1 b/util/sbase/ls.1 new file mode 100644 index 00000000..26a41e62 --- /dev/null +++ b/util/sbase/ls.1 @@ -0,0 +1,96 @@ +.Dd October 8, 2015 +.Dt LS 1 +.Os sbase +.Sh NAME +.Nm ls +.Nd list directory contents +.Sh SYNOPSIS +.Nm +.Op Fl iqr +.Op Fl ln +.Op Fl A | a +.Op Fl 1 +.Op Fl h | F | p +.Op Fl H | L +.Op Fl R | d +.Op Fl S | f | t | U +.Op Fl c | u +.Op Ar file ... +.Sh DESCRIPTION +.Nm +lists each given file, and the contents of each given directory. +If no files are given the current directory is listed. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl A +List all entries except for '.' and '..'. +.It Fl a +Show hidden files (those beginning with '.'). +.It Fl c +Use time file's status was last changed instead of last +modification time for sorting or printing. +.It Fl d +List directories themselves, not their contents. +.It Fl F +Append a file type indicator to all special files. +.It Fl f +Like +.Fl U +but turns on +.Fl a +and disables +.Fl r , +.Fl S +and +.Fl t . +.It Fl H +List information about the targets of symbolic links specified on the command +line instead of the links themselves. +.It Fl h +Show filesizes in human\-readable format. +.It Fl i +Print the index number of each file. +.It Fl L +List information about the targets of symbolic links instead of the links +themselves. +.It Fl l +List detailed information about each file, including their type, permissions, +links, owner, group, size or major and minor numbers if the file is a +character/block device, and last file status/modification time. +.It Fl n +List detailed information about each file, including their type, permissions, +links, owner, group, size or major and minor numbers if the file is a +character/block device, and last file status/modification time, but with +numeric IDs. +.It Fl p +Append a file type indicator to directories. +.It Fl q +Replace non-printable characters in filenames with '?'. +.It Fl R +List directory content recursively. +The +.Fl 1 +flag is set implicitly. +.It Fl r +Reverse the sort order. +.It Fl S +Sort files by size (in decreasing order). +.It Fl t +Sort files by last file status/modification time instead of by name. +.It Fl U +Keep the list unsorted. +.It Fl u +Use file's last access time instead of last modification time for +sorting or printing. +.El +.Sh SEE ALSO +.Xr stat 2 +.Sh STANDARDS +POSIX.1-2013. +Except for the +.Op Fl Ckmpsx +flags. +.Pp +The +.Op Fl hU +flags are an extension to that specification. diff --git a/util/sbase/ls.c b/util/sbase/ls.c new file mode 100644 index 00000000..aa95fef2 --- /dev/null +++ b/util/sbase/ls.c @@ -0,0 +1,489 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> +#include <sys/types.h> +#ifndef major +#include <sys/sysmacros.h> +#endif + +#include <dirent.h> +#include <grp.h> +#include <pwd.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <unistd.h> + +#include "utf.h" +#include "util.h" + +struct entry { + char *name; + mode_t mode, tmode; + nlink_t nlink; + uid_t uid; + gid_t gid; + off_t size; + struct timespec t; + dev_t dev; + dev_t rdev; + ino_t ino, tino; +}; + +static struct { + dev_t dev; + ino_t ino; +} tree[PATH_MAX]; + +static int ret = 0; +static int Aflag = 0; +static int aflag = 0; +static int cflag = 0; +static int dflag = 0; +static int Fflag = 0; +static int fflag = 0; +static int Hflag = 0; +static int hflag = 0; +static int iflag = 0; +static int Lflag = 0; +static int lflag = 0; +static int nflag = 0; +static int pflag = 0; +static int qflag = 0; +static int Rflag = 0; +static int rflag = 0; +static int Uflag = 0; +static int uflag = 0; +static int first = 1; +static char sort = 0; +static int showdirs; + +static void ls(const char *, const struct entry *, int); + +static void +mkent(struct entry *ent, char *path, int dostat, int follow) +{ + struct stat st; + + ent->name = path; + if (!dostat) + return; + if ((follow ? stat : lstat)(path, &st) < 0) + eprintf("%s %s:", follow ? "stat" : "lstat", path); + ent->mode = st.st_mode; + ent->nlink = st.st_nlink; + ent->uid = st.st_uid; + ent->gid = st.st_gid; + ent->size = st.st_size; + if (cflag) + ent->t = st.st_ctim; + else if (uflag) + ent->t = st.st_atim; + else + ent->t = st.st_mtim; + ent->dev = st.st_dev; + ent->rdev = st.st_rdev; + ent->ino = st.st_ino; + if (S_ISLNK(ent->mode)) { + if (stat(path, &st) == 0) { + ent->tmode = st.st_mode; + ent->dev = st.st_dev; + ent->tino = st.st_ino; + } else { + ent->tmode = ent->tino = 0; + } + } +} + +static char * +indicator(mode_t mode) +{ + if (pflag || Fflag) + if (S_ISDIR(mode)) + return "/"; + + if (Fflag) { + if (S_ISLNK(mode)) + return "@"; + else if (S_ISFIFO(mode)) + return "|"; + else if (S_ISSOCK(mode)) + return "="; + else if (mode & S_IXUSR || mode & S_IXGRP || mode & S_IXOTH) + return "*"; + } + + return ""; +} + +static void +printname(const char *name) +{ + const char *c; + Rune r; + size_t l; + + for (c = name; *c; c += l) { + l = chartorune(&r, c); + if (!qflag || isprintrune(r)) + fwrite(c, 1, l, stdout); + else + putchar('?'); + } +} + +static void +output(const struct entry *ent) +{ + struct group *gr; + struct passwd *pw; + struct tm *tm; + ssize_t len; + char *fmt, buf[BUFSIZ], pwname[_SC_LOGIN_NAME_MAX], + grname[_SC_LOGIN_NAME_MAX], mode[] = "----------"; + + if (iflag) + printf("%lu ", (unsigned long)ent->ino); + if (!lflag) { + printname(ent->name); + puts(indicator(ent->mode)); + return; + } + if (S_ISREG(ent->mode)) + mode[0] = '-'; + else if (S_ISBLK(ent->mode)) + mode[0] = 'b'; + else if (S_ISCHR(ent->mode)) + mode[0] = 'c'; + else if (S_ISDIR(ent->mode)) + mode[0] = 'd'; + else if (S_ISFIFO(ent->mode)) + mode[0] = 'p'; + else if (S_ISLNK(ent->mode)) + mode[0] = 'l'; + else if (S_ISSOCK(ent->mode)) + mode[0] = 's'; + else + mode[0] = '?'; + + if (ent->mode & S_IRUSR) mode[1] = 'r'; + if (ent->mode & S_IWUSR) mode[2] = 'w'; + if (ent->mode & S_IXUSR) mode[3] = 'x'; + if (ent->mode & S_IRGRP) mode[4] = 'r'; + if (ent->mode & S_IWGRP) mode[5] = 'w'; + if (ent->mode & S_IXGRP) mode[6] = 'x'; + if (ent->mode & S_IROTH) mode[7] = 'r'; + if (ent->mode & S_IWOTH) mode[8] = 'w'; + if (ent->mode & S_IXOTH) mode[9] = 'x'; + + if (ent->mode & S_ISUID) mode[3] = (mode[3] == 'x') ? 's' : 'S'; + if (ent->mode & S_ISGID) mode[6] = (mode[6] == 'x') ? 's' : 'S'; + if (ent->mode & S_ISVTX) mode[9] = (mode[9] == 'x') ? 't' : 'T'; + + if (!nflag && (pw = getpwuid(ent->uid))) + snprintf(pwname, sizeof(pwname), "%s", pw->pw_name); + else + snprintf(pwname, sizeof(pwname), "%d", ent->uid); + + if (!nflag && (gr = getgrgid(ent->gid))) + snprintf(grname, sizeof(grname), "%s", gr->gr_name); + else + snprintf(grname, sizeof(grname), "%d", ent->gid); + + if (time(NULL) > ent->t.tv_sec + (180 * 24 * 60 * 60)) /* 6 months ago? */ + fmt = "%b %d %Y"; + else + fmt = "%b %d %H:%M"; + + if ((tm = localtime(&ent->t.tv_sec))) + strftime(buf, sizeof(buf), fmt, tm); + else + snprintf(buf, sizeof(buf), "%lld", (long long)(ent->t.tv_sec)); + printf("%s %4ld %-8.8s %-8.8s ", mode, (long)ent->nlink, pwname, grname); + + if (S_ISBLK(ent->mode) || S_ISCHR(ent->mode)) + printf("%4u, %4u ", major(ent->rdev), minor(ent->rdev)); + else if (hflag) + printf("%10s ", humansize(ent->size)); + else + printf("%10lu ", (unsigned long)ent->size); + printf("%s ", buf); + printname(ent->name); + fputs(indicator(ent->mode), stdout); + if (S_ISLNK(ent->mode)) { + if ((len = readlink(ent->name, buf, sizeof(buf) - 1)) < 0) + eprintf("readlink %s:", ent->name); + buf[len] = '\0'; + printf(" -> %s%s", buf, indicator(ent->tmode)); + } + putchar('\n'); +} + +static int +entcmp(const void *va, const void *vb) +{ + int cmp = 0; + const struct entry *a = va, *b = vb; + + switch (sort) { + case 'S': + cmp = b->size - a->size; + break; + case 't': + if (!(cmp = b->t.tv_sec - a->t.tv_sec)) + cmp = b->t.tv_nsec - a->t.tv_nsec; + break; + } + + if (!cmp) + cmp = strcmp(a->name, b->name); + + return rflag ? 0 - cmp : cmp; +} + +static void +lsdir(const char *path, const struct entry *dir) +{ + DIR *dp; + struct entry *ent, *ents = NULL; + struct dirent *d; + size_t i, n = 0; + char prefix[PATH_MAX]; + + if (!(dp = opendir(dir->name))) { + ret = 1; + weprintf("opendir %s%s:", path, dir->name); + return; + } + if (chdir(dir->name) < 0) + eprintf("chdir %s:", dir->name); + + while ((d = readdir(dp))) { + if (d->d_name[0] == '.' && !aflag && !Aflag) + continue; + else if (Aflag) + if (strcmp(d->d_name, ".") == 0 || + strcmp(d->d_name, "..") == 0) + continue; + + ents = ereallocarray(ents, ++n, sizeof(*ents)); + mkent(&ents[n - 1], estrdup(d->d_name), Fflag || iflag || + lflag || pflag || Rflag || sort, Lflag); + } + + closedir(dp); + + if (!Uflag) + qsort(ents, n, sizeof(*ents), entcmp); + + if (path[0] || showdirs) { + fputs(path, stdout); + printname(dir->name); + puts(":"); + } + for (i = 0; i < n; i++) + output(&ents[i]); + + if (Rflag) { + if (snprintf(prefix, PATH_MAX, "%s%s/", path, dir->name) >= + PATH_MAX) + eprintf("path too long: %s%s\n", path, dir->name); + + for (i = 0; i < n; i++) { + ent = &ents[i]; + if (strcmp(ent->name, ".") == 0 || + strcmp(ent->name, "..") == 0) + continue; + if (S_ISLNK(ent->mode) && S_ISDIR(ent->tmode) && !Lflag) + continue; + + ls(prefix, ent, 1); + } + } + + for (i = 0; i < n; ++i) + free(ents[i].name); + free(ents); +} + +static int +visit(const struct entry *ent) +{ + dev_t dev; + ino_t ino; + int i; + + dev = ent->dev; + ino = S_ISLNK(ent->mode) ? ent->tino : ent->ino; + + for (i = 0; i < PATH_MAX && tree[i].ino; ++i) { + if (ino == tree[i].ino && dev == tree[i].dev) + return -1; + } + + tree[i].ino = ino; + tree[i].dev = dev; + + return i; +} + +static void +ls(const char *path, const struct entry *ent, int listdir) +{ + int treeind; + char cwd[PATH_MAX]; + + if (!listdir) { + output(ent); + } else if (S_ISDIR(ent->mode) || + (S_ISLNK(ent->mode) && S_ISDIR(ent->tmode))) { + if ((treeind = visit(ent)) < 0) { + ret = 1; + weprintf("%s%s: Already visited\n", path, ent->name); + return; + } + + if (!getcwd(cwd, PATH_MAX)) + eprintf("getcwd:"); + + if (first) + first = 0; + else + putchar('\n'); + + lsdir(path, ent); + tree[treeind].ino = 0; + + if (chdir(cwd) < 0) + eprintf("chdir %s:", cwd); + } +} + +static void +usage(void) +{ + eprintf("usage: %s [-1AacdFfHhiLlnpqRrtUu] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + struct entry ent, *dents, *fents; + size_t i, ds, fs; + + ARGBEGIN { + case '1': + /* force output to 1 entry per line */ + qflag = 1; + break; + case 'A': + Aflag = 1; + break; + case 'a': + aflag = 1; + break; + case 'c': + cflag = 1; + uflag = 0; + break; + case 'd': + dflag = 1; + break; + case 'f': + aflag = 1; + fflag = 1; + Uflag = 1; + break; + case 'F': + Fflag = 1; + break; + case 'H': + Hflag = 1; + break; + case 'h': + hflag = 1; + break; + case 'i': + iflag = 1; + break; + case 'L': + Lflag = 1; + break; + case 'l': + lflag = 1; + break; + case 'n': + lflag = 1; + nflag = 1; + break; + case 'p': + pflag = 1; + break; + case 'q': + qflag = 1; + break; + case 'R': + Rflag = 1; + break; + case 'r': + rflag = 1; + break; + case 'S': + sort = 'S'; + break; + case 't': + sort = 't'; + break; + case 'U': + Uflag = 1; + break; + case 'u': + uflag = 1; + cflag = 0; + break; + default: + usage(); + } ARGEND + + switch (argc) { + case 0: /* fallthrough */ + *--argv = ".", ++argc; + case 1: + mkent(&ent, argv[0], 1, Hflag || Lflag); + ls("", &ent, (!dflag && S_ISDIR(ent.mode)) || + (S_ISLNK(ent.mode) && S_ISDIR(ent.tmode) && + !(dflag || Fflag || lflag))); + + break; + default: + for (i = ds = fs = 0, fents = dents = NULL; i < argc; ++i) { + mkent(&ent, argv[i], 1, Hflag || Lflag); + + if ((!dflag && S_ISDIR(ent.mode)) || + (S_ISLNK(ent.mode) && S_ISDIR(ent.tmode) && + !(dflag || Fflag || lflag))) { + dents = ereallocarray(dents, ++ds, sizeof(*dents)); + memcpy(&dents[ds - 1], &ent, sizeof(ent)); + } else { + fents = ereallocarray(fents, ++fs, sizeof(*fents)); + memcpy(&fents[fs - 1], &ent, sizeof(ent)); + } + } + + showdirs = ds > 1 || (ds && fs); + + qsort(fents, fs, sizeof(ent), entcmp); + qsort(dents, ds, sizeof(ent), entcmp); + + for (i = 0; i < fs; ++i) + ls("", &fents[i], 0); + free(fents); + if (fs && ds) + putchar('\n'); + for (i = 0; i < ds; ++i) + ls("", &dents[i], 1); + free(dents); + } + + return (fshut(stdout, "<stdout>") | ret); +} diff --git a/util/sbase/md5.h b/util/sbase/md5.h new file mode 100644 index 00000000..0b5005e9 --- /dev/null +++ b/util/sbase/md5.h @@ -0,0 +1,18 @@ +/* public domain md5 implementation based on rfc1321 and libtomcrypt */ + +struct md5 { + uint64_t len; /* processed message length */ + uint32_t h[4]; /* hash state */ + uint8_t buf[64]; /* message block buffer */ +}; + +enum { MD5_DIGEST_LENGTH = 16 }; + +/* reset state */ +void md5_init(void *ctx); +/* process message */ +void md5_update(void *ctx, const void *m, unsigned long len); +/* get message digest */ +/* state is ruined after sum, keep a copy if multiple sum is needed */ +/* part of the message might be left in s, zero it if secrecy is needed */ +void md5_sum(void *ctx, uint8_t md[MD5_DIGEST_LENGTH]); diff --git a/util/sbase/md5sum.1 b/util/sbase/md5sum.1 new file mode 100644 index 00000000..79a37cfe --- /dev/null +++ b/util/sbase/md5sum.1 @@ -0,0 +1,32 @@ +.Dd October 8, 2015 +.Dt MD5SUM 1 +.Os sbase +.Sh NAME +.Nm md5sum +.Nd compute or check MD5 message digests +.Sh SYNOPSIS +.Nm +.Op Fl c +.Op Ar file ... +.Sh DESCRIPTION +.Nm +writes MD5 (128-bit) checksums of each +.Ar file +to stdout. +If no +.Ar file +is given +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl c +Read list of MD5 checksums from each +.Ar file +and check them. +If no +.Ar file +is given +.Nm +reads from stdin. +.El diff --git a/util/sbase/md5sum.c b/util/sbase/md5sum.c new file mode 100644 index 00000000..224b20ed --- /dev/null +++ b/util/sbase/md5sum.c @@ -0,0 +1,46 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <stdlib.h> +#include <stdint.h> + +#include "crypt.h" +#include "md5.h" +#include "util.h" + +static struct md5 s; +struct crypt_ops md5_ops = { + md5_init, + md5_update, + md5_sum, + &s, +}; + +static void +usage(void) +{ + eprintf("usage: %s [-c] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int ret = 0, (*cryptfunc)(int, char **, struct crypt_ops *, uint8_t *, size_t) = cryptmain; + uint8_t md[MD5_DIGEST_LENGTH]; + + ARGBEGIN { + case 'b': + case 't': + /* ignore */ + break; + case 'c': + cryptfunc = cryptcheck; + break; + default: + usage(); + } ARGEND + + ret |= cryptfunc(argc, argv, &md5_ops, md, sizeof(md)); + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/mkdir.1 b/util/sbase/mkdir.1 new file mode 100644 index 00000000..ec842d5b --- /dev/null +++ b/util/sbase/mkdir.1 @@ -0,0 +1,34 @@ +.Dd October 8, 2015 +.Dt MKDIR 1 +.Os sbase +.Sh NAME +.Nm mkdir +.Nd create directories +.Sh SYNOPSIS +.Nm +.Op Fl p +.Op Fl m Ar mode +.Ar name ... +.Sh DESCRIPTION +.Nm +creates a directory for each +.Ar name +if it does not already exist. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl m +Set the file +.Ar mode +of newly created directories. +See +.Xr chmod 1 . +.It Fl p +Also create necessary parent directories and +do not fail if +.Ar name +already exists. +.El +.Sh SEE ALSO +.Xr mkdir 2 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/mkdir.c b/util/sbase/mkdir.c new file mode 100644 index 00000000..3e20b1ae --- /dev/null +++ b/util/sbase/mkdir.c @@ -0,0 +1,49 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include <errno.h> +#include <stdlib.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-p] [-m mode] name ...\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + mode_t mode, mask; + int pflag = 0, ret = 0; + + mask = umask(0); + mode = 0777 & ~mask; + + ARGBEGIN { + case 'p': + pflag = 1; + break; + case 'm': + mode = parsemode(EARGF(usage()), 0777, mask); + break; + default: + usage(); + } ARGEND + + if (!argc) + usage(); + + for (; *argv; argc--, argv++) { + if (pflag) { + if (mkdirp(*argv, mode, 0777 & (~mask | 0300)) < 0) + ret = 1; + } else if (mkdir(*argv, mode) < 0) { + weprintf("mkdir %s:", *argv); + ret = 1; + } + } + + return ret; +} diff --git a/util/sbase/mkfifo.1 b/util/sbase/mkfifo.1 new file mode 100644 index 00000000..58b724aa --- /dev/null +++ b/util/sbase/mkfifo.1 @@ -0,0 +1,28 @@ +.Dd October 8, 2015 +.Dt MKFIFO 1 +.Os sbase +.Sh NAME +.Nm mkfifo +.Nd create named pipes +.Sh SYNOPSIS +.Nm +.Op Fl m Ar mode +.Ar name ... +.Sh DESCRIPTION +.Nm +creates a named pipe for each +.Ar name +if it does not already exist. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl m +Set the file +.Ar mode +of newly created named pipes. +See +.Xr chmod 1 . +.El +.Sh SEE ALSO +.Xr mkfifo 3 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/mkfifo.c b/util/sbase/mkfifo.c new file mode 100644 index 00000000..2470a09d --- /dev/null +++ b/util/sbase/mkfifo.c @@ -0,0 +1,39 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include <stdlib.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-m mode] name ...\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + mode_t mode = 0666; + int ret = 0; + + ARGBEGIN { + case 'm': + mode = parsemode(EARGF(usage()), mode, umask(0)); + break; + default: + usage(); + } ARGEND + + if (!argc) + usage(); + + for (; *argv; argc--, argv++) { + if (mkfifo(*argv, mode) < 0) { + weprintf("mkfifo %s:", *argv); + ret = 1; + } + } + + return ret; +} diff --git a/util/sbase/mknod.1 b/util/sbase/mknod.1 new file mode 100644 index 00000000..1206549c --- /dev/null +++ b/util/sbase/mknod.1 @@ -0,0 +1,44 @@ +.Dd February 2, 2015 +.Dt MKNOD 1 +.Os sbase +.Sh NAME +.Nm mknod +.Nd create a special device file +.Sh SYNOPSIS +.Nm +.Op Fl m Ar mode +.Ar name +.Cm b Ns | Ns Cm c Ns | Ns Cm u +.Ar major +.Ar minor +.Nm +.Op Fl m Ar mode +.Ar name +.Cm p +.Sh DESCRIPTION +.Nm +creates a special file named +.Ar name . +.Pp +The following special file types are supported: +.Bl -tag -width Ds +.It Cm b +A block device. +.It Cm c | u +A character device. +.It Cm p +A named pipe. +.El +.Pp +Block and character devices are created with major number +.Ar major , +and minor number +.Ar minor . +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl m +Set the mode of the new file based on the octal value of +.Ar mode . +.El +.Sh SEE ALSO +.Xr mknod 2 diff --git a/util/sbase/mknod.c b/util/sbase/mknod.c new file mode 100644 index 00000000..a519ecb2 --- /dev/null +++ b/util/sbase/mknod.c @@ -0,0 +1,72 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> +#include <sys/types.h> +#ifndef makedev +#include <sys/sysmacros.h> +#endif + +#include <fcntl.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-m mode] name b|c|u major minor\n" + " %s [-m mode] name p\n", + argv0, argv0); +} + +int +main(int argc, char *argv[]) +{ + mode_t mode = 0666; + dev_t dev; + + ARGBEGIN { + case 'm': + mode = parsemode(EARGF(usage()), mode, umask(0)); + break; + default: + usage(); + } ARGEND; + + if (argc < 2) + usage(); + + if (strlen(argv[1]) != 1) + goto invalid; + switch (argv[1][0]) { + case 'b': + mode |= S_IFBLK; + break; + case 'u': + case 'c': + mode |= S_IFCHR; + break; + case 'p': + mode |= S_IFIFO; + break; + default: + invalid: + eprintf("invalid type '%s'\n", argv[1]); + } + + if (S_ISFIFO(mode)) { + if (argc != 2) + usage(); + dev = 0; + } else { + if (argc != 4) + usage(); + dev = makedev(estrtonum(argv[2], 0, LLONG_MAX), estrtonum(argv[3], 0, LLONG_MAX)); + } + + if (mknod(argv[0], mode, dev) == -1) + eprintf("mknod %s:", argv[0]); + return 0; +} diff --git a/util/sbase/mktemp.1 b/util/sbase/mktemp.1 new file mode 100644 index 00000000..59e27d8e --- /dev/null +++ b/util/sbase/mktemp.1 @@ -0,0 +1,50 @@ +.Dd October 8, 2015 +.Dt MKTEMP 1 +.Os sbase +.Sh NAME +.Nm mktemp +.Nd create temporary file or directory +.Sh SYNOPSIS +.Nm +.Op Fl dqtu +.Op Fl p Ar directory +.Op Ar template +.Sh DESCRIPTION +.Nm +creates a temporary file by generating a unique filename with +.Ar template , +which has to have at least six 'X's appended to it. +If no +.Ar template +is specified, a default of 'tmp.XXXXXXXXXX' is used and the +tmpdir set to '/tmp' or, if set, the TMPDIR environment variable. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl d +Create a temporary directory instead of a file. +.It Fl p Ar directory +Use the specified +.Ar directory +as a prefix when generating the temporary filename. +The directory will be overridden by the user's +.Ev TMPDIR +environment variable if it is set. +This option implies the +.Fl t +flag (see below). +.It Fl q +Fail silently if an error occurs. +.It Fl t +Generate a path rooted in a temporary directory. +.It Fl u +Unlink file before +.Nm +exits. +This is slightly better than +.Xr mktemp 3 +but still introduces a race condition. +Use of this option is not encouraged. +.El +.Sh SEE ALSO +.Xr mkdtemp 3 , +.Xr mkstemp 3 diff --git a/util/sbase/mktemp.c b/util/sbase/mktemp.c new file mode 100644 index 00000000..a3076ba2 --- /dev/null +++ b/util/sbase/mktemp.c @@ -0,0 +1,92 @@ +/* See LICENSE file for copyright and license details. */ +#include <libgen.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-dqtu] [-p directory] [template]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int dflag = 0, pflag = 0, qflag = 0, tflag = 0, uflag = 0, fd; + char *template = "tmp.XXXXXXXXXX", *tmpdir = "", *pdir, + *p, path[PATH_MAX], tmp[PATH_MAX]; + size_t len; + + ARGBEGIN { + case 'd': + dflag = 1; + break; + case 'p': + pflag = 1; + pdir = EARGF(usage()); + break; + case 'q': + qflag = 1; + break; + case 't': + tflag = 1; + break; + case 'u': + uflag = 1; + break; + default: + usage(); + } ARGEND + + if (argc > 1) + usage(); + else if (argc == 1) + template = argv[0]; + + if (!argc || pflag || tflag) { + if ((p = getenv("TMPDIR"))) + tmpdir = p; + else if (pflag) + tmpdir = pdir; + else + tmpdir = "/tmp"; + } + + len = estrlcpy(path, tmpdir, sizeof(path)); + if (path[0] && path[len - 1] != '/') + estrlcat(path, "/", sizeof(path)); + + estrlcpy(tmp, template, sizeof(tmp)); + p = dirname(tmp); + if (!(p[0] == '.' && p[1] == '\0')) { + if (tflag && !pflag) + eprintf("template must not contain directory separators in -t mode\n"); + } + estrlcat(path, template, sizeof(path)); + + if (dflag) { + if (!mkdtemp(path)) { + if (!qflag) + eprintf("mkdtemp %s:", path); + return 1; + } + } else { + if ((fd = mkstemp(path)) < 0) { + if (!qflag) + eprintf("mkstemp %s:", path); + return 1; + } + if (close(fd)) + eprintf("close %s:", path); + } + if (uflag) + unlink(path); + puts(path); + + efshut(stdout, "<stdout>"); + return 0; +} diff --git a/util/sbase/mv.1 b/util/sbase/mv.1 new file mode 100644 index 00000000..7fb95273 --- /dev/null +++ b/util/sbase/mv.1 @@ -0,0 +1,36 @@ +.Dd October 8, 2015 +.Dt MV 1 +.Os sbase +.Sh NAME +.Nm mv +.Nd move files and directories +.Sh SYNOPSIS +.Nm +.Op Fl f +.Ar source ... +.Ar dest +.Sh DESCRIPTION +.Nm +moves each +.Ar source +to +.Ar dest . +If only one +.Ar source +is given and +.Ar dest +is not a directory, +.Nm +overwrites the latter with the former. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl f +Do not prompt before overwriting. +.Ar dest . +Prompting has not been implemented yet. +.El +.Sh STANDARDS +POSIX.1-2013. +Except for the unsupported +.Fl i +flag. diff --git a/util/sbase/mv.c b/util/sbase/mv.c new file mode 100644 index 00000000..d24c77f5 --- /dev/null +++ b/util/sbase/mv.c @@ -0,0 +1,68 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include <errno.h> +#include <fcntl.h> +#include <stdio.h> + +#include "fs.h" +#include "util.h" + +static int mv_status = 0; + +static int +mv(const char *s1, const char *s2, int depth) +{ + struct recursor r = { .fn = rm, .follow = 'P', .flags = SILENT }; + + if (!rename(s1, s2)) + return 0; + if (errno == EXDEV) { + cp_aflag = cp_rflag = cp_pflag = 1; + cp_follow = 'P'; + cp_status = 0; + rm_status = 0; + cp(s1, s2, depth); + if (cp_status == 0) + recurse(AT_FDCWD, s1, NULL, &r); + if (cp_status || rm_status) + mv_status = 1; + } else { + weprintf("%s -> %s:", s1, s2); + mv_status = 1; + } + + return 0; +} + +static void +usage(void) +{ + eprintf("usage: %s [-f] source ... dest\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + struct stat st; + + ARGBEGIN { + case 'f': + break; + default: + usage(); + } ARGEND + + if (argc < 2) + usage(); + + if (argc > 2) { + if (stat(argv[argc - 1], &st) < 0) + eprintf("stat %s:", argv[argc - 1]); + if (!S_ISDIR(st.st_mode)) + eprintf("%s: not a directory\n", argv[argc - 1]); + } + enmasse(argc, argv, mv); + + return mv_status; +} diff --git a/util/sbase/nice.1 b/util/sbase/nice.1 new file mode 100644 index 00000000..18bbe585 --- /dev/null +++ b/util/sbase/nice.1 @@ -0,0 +1,36 @@ +.Dd October 8, 2015 +.Dt NICE 1 +.Os sbase +.Sh NAME +.Nm nice +.Nd run command with altered niceness +.Sh SYNOPSIS +.Nm +.Op Fl n Ar inc +.Ar cmd +.Op Ar arg ... +.Sh DESCRIPTION +.Nm +runs +.Ar cmd +with the current niceness plus +.Ar inc . +A negative niceness is reserved to the superuser. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl n Ar inc +Change niceness by +.Ar inc , +ranging from +.Sy -20 +(highest priority) +to +.Sy +20 +(lowest priority). +Default is 10. +.El +.Sh SEE ALSO +.Xr nice 2 , +.Xr renice 2 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/nice.c b/util/sbase/nice.c new file mode 100644 index 00000000..d036e26c --- /dev/null +++ b/util/sbase/nice.c @@ -0,0 +1,56 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/resource.h> + +#include <errno.h> +#include <stdlib.h> +#include <unistd.h> + +#include "util.h" + +#ifndef PRIO_MIN +#define PRIO_MIN -NZERO +#endif + +#ifndef PRIO_MAX +#define PRIO_MAX (NZERO-1) +#endif + +static void +usage(void) +{ + eprintf("usage: %s [-n inc] cmd [arg ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int val = 10, r, savederrno; + + ARGBEGIN { + case 'n': + val = estrtonum(EARGF(usage()), PRIO_MIN, PRIO_MAX); + break; + default: + usage(); + break; + } ARGEND + + if (!argc) + usage(); + + errno = 0; + r = getpriority(PRIO_PROCESS, 0); + if (errno) + weprintf("getpriority:"); + else + val += r; + LIMIT(val, PRIO_MIN, PRIO_MAX); + if (setpriority(PRIO_PROCESS, 0, val) < 0) + weprintf("setpriority:"); + + execvp(argv[0], argv); + savederrno = errno; + weprintf("execvp %s:", argv[0]); + + _exit(126 + (savederrno == ENOENT)); +} diff --git a/util/sbase/nl.1 b/util/sbase/nl.1 new file mode 100644 index 00000000..26975421 --- /dev/null +++ b/util/sbase/nl.1 @@ -0,0 +1,116 @@ +.Dd May 15, 2020 +.Dt NL 1 +.Os sbase +.Sh NAME +.Nm nl +.Nd line numbering filter +.Sh SYNOPSIS +.Nm +.Op Fl p +.Op Fl b Ar type +.Op Fl d Ar delim +.Op Fl f Ar type +.Op Fl h Ar type +.Op Fl i Ar num +.Op Fl l Ar num +.Op Fl n Ar format +.Op Fl s Ar sep +.Op Fl v Ar num +.Op Fl w Ar num +.Op Ar file +.Sh DESCRIPTION +.Nm +reads lines from +.Ar file +and writes them to stdout, numbering non-empty lines. +If no +.Ar file +is given +.Nm +reads from stdin. +.Pp +.Nm +treats the input text as a collection of logical pages divided into +logical page sections. +Each logical page consists of a header section, a body +section and a footer section. +Sections may be empty. +The start of each section is indicated by a single delimiting line, one of: +.Bl -column "\e:\e:\e: " "header " -offset indent +.It Em "Line" Ta Em "Start of" +.It \e:\e:\e: header +.It \e:\e: body +.It \e: footer +.El +.Pp +If the input text contains no delimiting line then all of the input text +belongs to a single logical page body section. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl p +Do not reset line number for logical pages. +.It Fl h Ar type | Fl b Ar type | Fl f Ar type +Define which lines to number in the head | body | footer section: +.Bl -tag -width pstringXX +.It a +All lines. +.It n +No lines. +.It t +Only non-empty lines. +This is the default. +.It p Ns Ar expr +Only lines matching +.Ar expr +according to +.Xr regex 7 or +.Xr re_format 7 . +.El +.It Fl d Ar delim +Set +.Ar delim +as the delimiter for logical pages. +If +.Ar delim +is only one character, +.Nm +appends ":" to it. +The default is "\e:". +.It Fl i Ar num +Set the increment between numbered lines to +.Ar num . +.It Fl l Ar num +Set the number of adjacent blank lines to be considered as one to +.Ar num . +The default is 1. +.It Fl n Ar format +Set the line number output +.Ar format +to one of: +.Bl -tag -width pstringXX +.It ln +Left justified. +.It rn +Right justified. +This is the default. +.It rz +Right justified with leading zeroes. +.El +.It Fl s Ar sep +Use +.Ar sep +to separate line numbers and lines. +The default is "\et". +.It Fl v Ar num +Start counting lines from +.Ar num . +The default is 1. +.It Fl w Ar num +Set the width of the line number to +.Ar num . +The default is 6. +.El +.Sh SEE ALSO +.Xr pr 1 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/nl.c b/util/sbase/nl.c new file mode 100644 index 00000000..9a289b02 --- /dev/null +++ b/util/sbase/nl.c @@ -0,0 +1,212 @@ +/* See LICENSE file for copyright and license details. */ +#include <limits.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "text.h" +#include "utf.h" +#include "util.h" + +static size_t startnum = 1; +static size_t incr = 1; +static size_t blines = 1; +static size_t delimlen = 2; +static size_t seplen = 1; +static int width = 6; +static int pflag = 0; +static char type[] = { 'n', 't', 'n' }; /* footer, body, header */ +static char *delim = "\\:"; +static char format[6] = "%*ld"; +static char *sep = "\t"; +static regex_t preg[3]; + +static int +getsection(struct line *l, int *section) +{ + size_t i; + int sectionchanged = 0, newsection = *section; + + for (i = 0; (l->len - i) >= delimlen && + !memcmp(l->data + i, delim, delimlen); i += delimlen) { + if (!sectionchanged) { + sectionchanged = 1; + newsection = 0; + } else { + newsection = (newsection + 1) % 3; + } + } + + if (!(l->len - i) || l->data[i] == '\n') + *section = newsection; + else + sectionchanged = 0; + + return sectionchanged; +} + +static void +nl(const char *fname, FILE *fp) +{ + static struct line line; + static size_t size; + size_t number = startnum, bl = 1; + ssize_t len; + int donumber, oldsection, section = 1; + + while ((len = getline(&line.data, &size, fp)) > 0) { + line.len = len; + donumber = 0; + oldsection = section; + + if (getsection(&line, §ion)) { + if ((section >= oldsection) && !pflag) + number = startnum; + continue; + } + + switch (type[section]) { + case 't': + if (line.data[0] != '\n') + donumber = 1; + break; + case 'p': + if (!regexec(preg + section, line.data, 0, NULL, 0)) + donumber = 1; + break; + case 'a': + if (line.data[0] == '\n' && bl < blines) { + ++bl; + } else { + donumber = 1; + bl = 1; + } + } + + if (donumber) { + printf(format, width, number); + fwrite(sep, 1, seplen, stdout); + number += incr; + } + fwrite(line.data, 1, line.len, stdout); + } + free(line.data); + if (ferror(fp)) + eprintf("getline %s:", fname); +} + +static void +usage(void) +{ + eprintf("usage: %s [-p] [-b type] [-d delim] [-f type]\n" + " [-h type] [-i num] [-l num] [-n format]\n" + " [-s sep] [-v num] [-w num] [file]\n", argv0); +} + +static char +getlinetype(char *type, regex_t *preg) +{ + if (type[0] == 'p') + eregcomp(preg, type + 1, REG_NOSUB); + else if (!type[0] || !strchr("ant", type[0])) + usage(); + + return type[0]; +} + +int +main(int argc, char *argv[]) +{ + FILE *fp = NULL; + size_t s; + int ret = 0; + char *d, *formattype, *formatblit; + + ARGBEGIN { + case 'd': + switch (utflen((d = EARGF(usage())))) { + case 0: + eprintf("empty logical page delimiter\n"); + case 1: + s = strlen(d); + delim = emalloc(s + 1 + 1); + estrlcpy(delim, d, s + 1 + 1); + estrlcat(delim, ":", s + 1 + 1); + delimlen = s + 1; + break; + default: + delim = d; + delimlen = strlen(delim); + break; + } + break; + case 'f': + type[0] = getlinetype(EARGF(usage()), preg); + break; + case 'b': + type[1] = getlinetype(EARGF(usage()), preg + 1); + break; + case 'h': + type[2] = getlinetype(EARGF(usage()), preg + 2); + break; + case 'i': + incr = estrtonum(EARGF(usage()), 0, MIN(LLONG_MAX, SIZE_MAX)); + break; + case 'l': + blines = estrtonum(EARGF(usage()), 0, MIN(LLONG_MAX, SIZE_MAX)); + break; + case 'n': + formattype = EARGF(usage()); + estrlcpy(format, "%", sizeof(format)); + + if (!strcmp(formattype, "ln")) { + formatblit = "-"; + } else if (!strcmp(formattype, "rn")) { + formatblit = ""; + } else if (!strcmp(formattype, "rz")) { + formatblit = "0"; + } else { + eprintf("%s: bad format\n", formattype); + } + + estrlcat(format, formatblit, sizeof(format)); + estrlcat(format, "*ld", sizeof(format)); + break; + case 'p': + pflag = 1; + break; + case 's': + sep = EARGF(usage()); + seplen = unescape(sep); + break; + case 'v': + startnum = estrtonum(EARGF(usage()), 0, MIN(LLONG_MAX, SIZE_MAX)); + break; + case 'w': + width = estrtonum(EARGF(usage()), 1, INT_MAX); + break; + default: + usage(); + } ARGEND + + if (argc > 1) + usage(); + + if (!argc) { + nl("<stdin>", stdin); + } else { + if (!strcmp(argv[0], "-")) { + argv[0] = "<stdin>"; + fp = stdin; + } else if (!(fp = fopen(argv[0], "r"))) { + eprintf("fopen %s:", argv[0]); + } + nl(argv[0], fp); + } + + ret |= fp && fp != stdin && fshut(fp, argv[0]); + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/nohup.1 b/util/sbase/nohup.1 new file mode 100644 index 00000000..48a8fad6 --- /dev/null +++ b/util/sbase/nohup.1 @@ -0,0 +1,40 @@ +.Dd October 8, 2015 +.Dt NOHUP 1 +.Os sbase +.Sh NAME +.Nm nohup +.Nd run command immune to hangups +.Sh SYNOPSIS +.Nm +.Ar cmd +.Op Ar arg ... +.Sh DESCRIPTION +.Nm +runs +.Ar cmd +with the +.Em HUP +signal set to be ignored. +.Pp +If stdout is a terminal, it is appended to +.Em nohup.out +in the current working directory. +If stderr is a terminal, it is redirected to stdout. +.Sh EXIT STATUS +.Bl -tag -width Ds +.It 0 +.Ar cmd +executed successfully. +.It 1 +Internal error. +.It 126 +.Ar cmd +was found but could not be executed. +.It 127 +.Ar cmd +could not be found. +.El +.Sh SEE ALSO +.Xr signal 7 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/nohup.c b/util/sbase/nohup.c new file mode 100644 index 00000000..5c1bf448 --- /dev/null +++ b/util/sbase/nohup.c @@ -0,0 +1,48 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include <errno.h> +#include <fcntl.h> +#include <signal.h> +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s cmd [arg ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int fd, savederrno; + + ARGBEGIN { + default: + usage(); + } ARGEND + + if (!argc) + usage(); + + if (signal(SIGHUP, SIG_IGN) == SIG_ERR) + enprintf(127, "signal HUP:"); + + if (isatty(STDOUT_FILENO)) { + if ((fd = open("nohup.out", O_WRONLY | O_APPEND | O_CREAT, S_IRUSR | S_IWUSR)) < 0) + enprintf(127, "open nohup.out:"); + if (dup2(fd, STDOUT_FILENO) < 0) + enprintf(127, "dup2:"); + close(fd); + } + if (isatty(STDERR_FILENO) && dup2(STDOUT_FILENO, STDERR_FILENO) < 0) + enprintf(127, "dup2:"); + + execvp(argv[0], argv); + savederrno = errno; + weprintf("execvp %s:", argv[0]); + + _exit(126 + (savederrno == ENOENT)); +} diff --git a/util/sbase/od.1 b/util/sbase/od.1 new file mode 100644 index 00000000..622093f5 --- /dev/null +++ b/util/sbase/od.1 @@ -0,0 +1,80 @@ +.Dd October 25, 2015 +.Dt OD 1 +.Os sbase +.Sh NAME +.Nm od +.Nd octal dump +.Sh SYNOPSIS +.Nm +.Op Fl bdosvx +.Op Fl A Ar addrformat +.Op Fl E | e +.Op Fl j Ar skip +.Op Fl t Ar outputformat... +.Op Ar file ... +.Sh DESCRIPTION +.Nm +writes an octal dump of each +.Ar file +to stdout. +If no +.Ar file +is given +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl A Ar addressformat +.Ar addressformat +is one of d|o|x|n and sets the address to be +either in \fId\fRecimal, \fIo\fRctal, he\fIx\fRadecimal or \fIn\fRot +printed at all. +The default is octal. +.It Fl E | e +Force Little Endian +.Fl ( e ) +or Big Endian +.Fl ( E ) +system-independently. +.It Fl b +Equivalent to +.Fl t o1 . +.It Fl d +Equivalent to +.Fl t u2 . +.It Fl j Ar skip +Ignore the first +.Ar skip +bytes of input. +.It Fl o +Equivalent to +.Fl t o2 . +.It Fl s +Equivalent to +.Fl t d2 . +.It Fl t Ar outputformat +.Ar outputformat +is a list of a|c|d|o|u|x followed by a digit or C|S|I|L and sets +the content to be in n\fIa\fRmed character, \fIc\fRharacter, signed +\fId\fRecimal, \fIo\fRctal, \fIu\fRnsigned decimal, or +he\fIx\fRadecimal format, processing the given amount of bytes or the length +of \fIC\fRhar, \fIS\fRhort, \fII\fRnteger or \fIL\fRong. +The default is octal with 4 bytes. +.It Fl v +Always set. +Write all input data, including duplicate lines. +.It Fl x +Equivalent to +.Fl t x2 . +.El +.Sh STANDARDS +POSIX.1-2013. +Except that the +.Op Fl v +flag is always enabled and the 'd' parameter for the +.Op Fl t +flag is interpreted as 'u'. +.Pp +The +.Op Ee +flags are an extension to that specification. diff --git a/util/sbase/od.c b/util/sbase/od.c new file mode 100644 index 00000000..0b1c5c60 --- /dev/null +++ b/util/sbase/od.c @@ -0,0 +1,332 @@ +/* See LICENSE file for copyright and license details. */ +#include <ctype.h> +#include <fcntl.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "queue.h" +#include "util.h" + +struct type { + unsigned char format; + unsigned int len; + TAILQ_ENTRY(type) entry; +}; + +static TAILQ_HEAD(head, type) head = TAILQ_HEAD_INITIALIZER(head); +static unsigned char addr_format = 'o'; +static off_t skip = 0; +static off_t max = -1; +static size_t linelen = 1; +static int big_endian; + +static void +printaddress(off_t addr) +{ + char fmt[] = "%07j#"; + + if (addr_format == 'n') { + fputc(' ', stdout); + } else { + fmt[4] = addr_format; + printf(fmt, (intmax_t)addr); + } +} + +static void +printchunk(const unsigned char *s, unsigned char format, size_t len) +{ + long long res, basefac; + size_t i; + char fmt[] = " %#*ll#"; + unsigned char c; + + const char *namedict[] = { + "nul", "soh", "stx", "etx", "eot", "enq", "ack", + "bel", "bs", "ht", "nl", "vt", "ff", "cr", + "so", "si", "dle", "dc1", "dc2", "dc3", "dc4", + "nak", "syn", "etb", "can", "em", "sub", "esc", + "fs", "gs", "rs", "us", "sp", + }; + const char *escdict[] = { + ['\0'] = "\\0", ['\a'] = "\\a", + ['\b'] = "\\b", ['\t'] = "\\t", + ['\n'] = "\\n", ['\v'] = "\\v", + ['\f'] = "\\f", ['\r'] = "\\r", + }; + + switch (format) { + case 'a': + c = *s & ~128; /* clear high bit as required by standard */ + if (c < LEN(namedict) || c == 127) { + printf(" %3s", (c == 127) ? "del" : namedict[c]); + } else { + printf(" %3c", c); + } + break; + case 'c': + if (strchr("\a\b\t\n\v\f\r\0", *s)) { + printf(" %3s", escdict[*s]); + } else if (!isprint(*s)) { + printf(" %3o", *s); + } else { + printf(" %3c", *s); + } + break; + default: + if (big_endian) { + for (res = 0, basefac = 1, i = len; i; i--) { + res += s[i - 1] * basefac; + basefac <<= 8; + } + } else { + for (res = 0, basefac = 1, i = 0; i < len; i++) { + res += s[i] * basefac; + basefac <<= 8; + } + } + fmt[2] = big_endian ? '-' : ' '; + fmt[6] = format; + printf(fmt, (int)(3 * len + len - 1), res); + } +} + +static void +printline(const unsigned char *line, size_t len, off_t addr) +{ + struct type *t = NULL; + size_t i; + int first = 1; + unsigned char *tmp; + + if (TAILQ_EMPTY(&head)) + goto once; + TAILQ_FOREACH(t, &head, entry) { +once: + if (first) { + printaddress(addr); + first = 0; + } else { + printf("%*c", (addr_format == 'n') ? 1 : 7, ' '); + } + for (i = 0; i < len; i += MIN(len - i, t ? t->len : 4)) { + if (len - i < (t ? t->len : 4)) { + tmp = ecalloc(t ? t->len : 4, 1); + memcpy(tmp, line + i, len - i); + printchunk(tmp, t ? t->format : 'o', + t ? t->len : 4); + free(tmp); + } else { + printchunk(line + i, t ? t->format : 'o', + t ? t->len : 4); + } + } + fputc('\n', stdout); + if (TAILQ_EMPTY(&head) || (!len && !first)) + break; + } +} + +static int +od(int fd, char *fname, int last) +{ + static unsigned char *line; + static size_t lineoff; + static off_t addr; + unsigned char buf[BUFSIZ]; + size_t i, size = sizeof(buf); + ssize_t n; + + while (skip - addr > 0) { + n = read(fd, buf, MIN(skip - addr, sizeof(buf))); + if (n < 0) + weprintf("read %s:", fname); + if (n <= 0) + return n; + addr += n; + } + if (!line) + line = emalloc(linelen); + + for (;;) { + if (max >= 0) + size = MIN(max - (addr - skip), size); + if ((n = read(fd, buf, size)) <= 0) + break; + for (i = 0; i < n; i++, addr++) { + line[lineoff++] = buf[i]; + if (lineoff == linelen) { + printline(line, lineoff, addr - lineoff + 1); + lineoff = 0; + } + } + } + if (n < 0) { + weprintf("read %s:", fname); + return n; + } + if (lineoff && last) + printline(line, lineoff, addr - lineoff); + if (last) + printline((unsigned char *)"", 0, addr); + return 0; +} + +static int +lcm(unsigned int a, unsigned int b) +{ + unsigned int c, d, e; + + for (c = a, d = b; c ;) { + e = c; + c = d % c; + d = e; + } + + return a / d * b; +} + +static void +addtype(char format, int len) +{ + struct type *t; + + t = emalloc(sizeof(*t)); + t->format = format; + t->len = len; + TAILQ_INSERT_TAIL(&head, t, entry); +} + +static void +usage(void) +{ + eprintf("usage: %s [-bdosvx] [-A addressformat] [-E | -e] [-j skip] " + "[-t outputformat] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int fd; + struct type *t; + int ret = 0, len; + char *s; + + big_endian = (*(uint16_t *)"\0\xff" == 0xff); + + ARGBEGIN { + case 'A': + s = EARGF(usage()); + if (strlen(s) != 1 || !strchr("doxn", s[0])) + usage(); + addr_format = s[0]; + break; + case 'b': + addtype('o', 1); + break; + case 'd': + addtype('u', 2); + break; + case 'E': + case 'e': + big_endian = (ARGC() == 'E'); + break; + case 'j': + if ((skip = parseoffset(EARGF(usage()))) < 0) + usage(); + break; + case 'N': + if ((max = parseoffset(EARGF(usage()))) < 0) + usage(); + break; + case 'o': + addtype('o', 2); + break; + case 's': + addtype('d', 2); + break; + case 't': + s = EARGF(usage()); + for (; *s; s++) { + switch (*s) { + case 'a': + case 'c': + addtype(*s, 1); + break; + case 'd': + case 'o': + case 'u': + case 'x': + /* todo: allow multiple digits */ + if (*(s+1) > '0' && *(s+1) <= '9') { + len = *(s+1) - '0'; + } else { + switch (*(s+1)) { + case 'C': + len = sizeof(char); + break; + case 'S': + len = sizeof(short); + break; + case 'I': + len = sizeof(int); + break; + case 'L': + len = sizeof(long); + break; + default: + len = sizeof(int); + } + } + addtype(*s++, len); + break; + default: + usage(); + } + } + break; + case 'v': + /* always set - use uniq(1) to handle duplicate lines */ + break; + case 'x': + addtype('x', 2); + break; + default: + usage(); + } ARGEND + + /* line length is lcm of type lengths and >= 16 by doubling */ + TAILQ_FOREACH(t, &head, entry) + linelen = lcm(linelen, t->len); + if (TAILQ_EMPTY(&head)) + linelen = 16; + while (linelen < 16) + linelen *= 2; + + if (!argc) { + if (od(0, "<stdin>", 1) < 0) + ret = 1; + } else { + for (; *argv; argc--, argv++) { + if (!strcmp(*argv, "-")) { + *argv = "<stdin>"; + fd = 0; + } else if ((fd = open(*argv, O_RDONLY)) < 0) { + weprintf("open %s:", *argv); + ret = 1; + continue; + } + if (od(fd, *argv, (!*(argv + 1))) < 0) + ret = 1; + if (fd != 0) + close(fd); + } + } + + ret |= fshut(stdout, "<stdout>") | fshut(stderr, "<stderr>"); + + return ret; +} diff --git a/util/sbase/paste.1 b/util/sbase/paste.1 new file mode 100644 index 00000000..7b26130f --- /dev/null +++ b/util/sbase/paste.1 @@ -0,0 +1,47 @@ +.Dd October 8, 2015 +.Dt PASTE 1 +.Os sbase +.Sh NAME +.Nm paste +.Nd merge lines of files in parallel or sequentially +.Sh SYNOPSIS +.Nm +.Op Fl s +.Op Fl d Ar list +.Ar file ... +.Sh DESCRIPTION +.Nm +reads single lines from each +.Ar file +and writes them into one line, replacing +.Sy \en +with +.Sy \et +except from the last +.Ar file . +This process is repeated until each +.Ar file +is starved, treating zero-reads as empty lines along the way. +.Pp +If +.Ar file +is '-', +.Nm +interprets it as stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl d Ar list +Replace +.Sy \en +with escaped characters from +.Ar list +by cycling through it. +.It Fl s +Read each +.Ar file +sequentially instead of in parallel. +.El +.Sh SEE ALSO +.Xr cut 1 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/paste.c b/util/sbase/paste.c new file mode 100644 index 00000000..4fa9fc5a --- /dev/null +++ b/util/sbase/paste.c @@ -0,0 +1,144 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdlib.h> +#include <string.h> + +#include "utf.h" +#include "util.h" + +struct fdescr { + FILE *fp; + const char *name; +}; + +static void +sequential(struct fdescr *dsc, int fdescrlen, Rune *delim, size_t delimlen) +{ + Rune c, last; + size_t i, d; + + for (i = 0; i < fdescrlen; i++) { + d = 0; + last = 0; + + while (efgetrune(&c, dsc[i].fp, dsc[i].name)) { + if (last == '\n') { + if (delim[d] != '\0') + efputrune(&delim[d], stdout, "<stdout>"); + d = (d + 1) % delimlen; + } + + if (c != '\n') + efputrune(&c, stdout, "<stdout>"); + last = c; + } + + if (last == '\n') + efputrune(&last, stdout, "<stdout>"); + } +} + +static void +parallel(struct fdescr *dsc, int fdescrlen, Rune *delim, size_t delimlen) +{ + Rune c, d; + size_t i, m; + ssize_t last; + +nextline: + last = -1; + + for (i = 0; i < fdescrlen; i++) { + d = delim[i % delimlen]; + c = 0; + + while (efgetrune(&c, dsc[i].fp, dsc[i].name)) { + for (m = last + 1; m < i; m++) { + if (delim[m % delimlen] != '\0') + efputrune(&delim[m % delimlen], stdout, "<stdout>"); + } + last = i; + if (c == '\n') { + if (i != fdescrlen - 1) + c = d; + efputrune(&c, stdout, "<stdout>"); + break; + } + efputrune(&c, stdout, "<stdout>"); + } + + if (c == 0 && last != -1) { + if (i == fdescrlen - 1) + putchar('\n'); + else if (d != '\0') + efputrune(&d, stdout, "<stdout>"); + last++; + } + } + if (last != -1) + goto nextline; +} + +static void +usage(void) +{ + eprintf("usage: %s [-s] [-d list] file ...\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + struct fdescr *dsc; + Rune *delim_rune = NULL; + size_t delim_runelen, i, delim_bytelen = 1; + int seq = 0, ret = 0; + char *delim = "\t"; + + ARGBEGIN { + case 's': + seq = 1; + break; + case 'd': + delim = EARGF(usage()); + delim_bytelen = unescape(delim); + break; + default: + usage(); + } ARGEND + + if (!argc) + usage(); + + /* populate delimiters */ + delim_rune = ereallocarray(NULL, + utfmemlen(delim, delim_bytelen) + 1, sizeof(*delim_rune)); + if (!(delim_runelen = utfntorunestr(delim, delim_bytelen, delim_rune))) { + usage(); + } + + /* populate file list */ + dsc = ereallocarray(NULL, argc, sizeof(*dsc)); + + for (i = 0; i < argc; i++) { + if (!strcmp(argv[i], "-")) { + argv[i] = "<stdin>"; + dsc[i].fp = stdin; + } else if (!(dsc[i].fp = fopen(argv[i], "r"))) { + eprintf("fopen %s:", argv[i]); + } + dsc[i].name = argv[i]; + } + + if (seq) { + sequential(dsc, argc, delim_rune, delim_runelen); + } else { + parallel(dsc, argc, delim_rune, delim_runelen); + } + + for (i = 0; i < argc; i++) + if (dsc[i].fp != stdin && fshut(dsc[i].fp, argv[i])) + ret |= fshut(dsc[i].fp, argv[i]); + + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/pathchk.1 b/util/sbase/pathchk.1 new file mode 100644 index 00000000..e0b69b65 --- /dev/null +++ b/util/sbase/pathchk.1 @@ -0,0 +1,31 @@ +.Dd February 3, 2016 +.Dt PATHCHK 1 +.Os sbase +.Sh NAME +.Nm pathchk +.Nd validate filename validity or portability +.Sh SYNOPSIS +.Nm +.Op Fl p +.Op Fl P +.Ar file Ar ... +.Sh DESCRIPTION +.Nm +checks that filenames are valid for the system, +and optional on other POSIX systems. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl p +Check for most POSIX systems. +.It Fl P +Check for empty pathnames and leading hythens. +.El +.Sh EXIT STATUS +.Bl -tag -width Ds +.It 0 +All pathname operands passed all of the checks. +.It > 0 +An error occurred. +.El +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/pathchk.c b/util/sbase/pathchk.c new file mode 100644 index 00000000..b6b0c91c --- /dev/null +++ b/util/sbase/pathchk.c @@ -0,0 +1,104 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include <errno.h> +#include <limits.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "util.h" + +#define PORTABLE_CHARACTER_SET "0123456789._-qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM" +/* If your system supports more other characters, but not all non-NUL characters, define SYSTEM_CHARACTER_SET. */ + +static int most = 0; +static int extra = 0; + +static int +pathchk(char *filename) +{ + char *invalid, *invalid_end, *p, *q; + const char *character_set; + size_t len, maxlen; + struct stat st; + + /* Empty? */ + if (extra && !*filename) + eprintf("empty filename\n"); + + /* Leading hyphen? */ + if (extra && ((*filename == '-') || strstr(filename, "/-"))) + eprintf("%s: leading '-' in component of filename\n", filename); + + /* Nonportable character? */ +#ifdef SYSTEM_CHARACTER_SET + character_set = "/"SYSTEM_CHARACTER_SET; +#else + character_set = 0; +#endif + if (most) + character_set = "/"PORTABLE_CHARACTER_SET; + if (character_set && *(invalid = filename + strspn(filename, character_set))) { + for (invalid_end = invalid + 1; *invalid_end & 0x80; invalid_end++); + p = estrdup(filename); + *invalid_end = 0; + eprintf("%s: nonportable character '%s'\n", p, invalid); + } + + /* Symlink error? Non-searchable directory? */ + if (lstat(filename, &st) && errno != ENOENT) { + /* lstat rather than stat, so that if filename is a bad symlink, but + * all parents are OK, no error will be detected. */ + eprintf("%s:", filename); + } + + /* Too long pathname? */ + maxlen = most ? _POSIX_PATH_MAX : PATH_MAX; + if (strlen(filename) >= maxlen) + eprintf("%s: is longer than %zu bytes\n", filename, maxlen); + + /* Too long component? */ + maxlen = most ? _POSIX_NAME_MAX : NAME_MAX; + for (p = filename; p; p = q) { + q = strchr(p, '/'); + len = q ? (size_t)(q++ - p) : strlen(p); + if (len > maxlen) + eprintf("%s: includes component longer than %zu bytes\n", + filename, maxlen); + } + + return 0; +} + +static void +usage(void) +{ + eprintf("usage: %s [-pP] filename...\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int ret = 0; + + ARGBEGIN { + case 'p': + most = 1; + break; + case 'P': + extra = 1; + break; + default: + usage(); + } ARGEND + + if (!argc) + usage(); + + for (; argc--; argv++) + ret |= pathchk(*argv); + + return ret; +} diff --git a/util/sbase/printenv.1 b/util/sbase/printenv.1 new file mode 100644 index 00000000..24c410be --- /dev/null +++ b/util/sbase/printenv.1 @@ -0,0 +1,30 @@ +.Dd March 30, 2016 +.Dt PRINTENV 1 +.Os sbase +.Sh NAME +.Nm printenv +.Nd print the environment or values of variables +.Sh SYNOPSIS +.Nm +.Op Ar var ... +.Sh DESCRIPTION +.Nm +prints the entire environment as key=value pairs if no +.Ar var +is given. +Otherwise, +.Nm +prints only the value of each +.Ar var +one per line in the order specified. +.Sh EXIT STATUS +.Bl -tag -width Ds +.It 0 +Successful completion. +.It 1 +One or more queried variables were not found. +.It > 1 +An error occurred. +.El +.Sh SEE ALSO +.Xr env 1 diff --git a/util/sbase/printenv.c b/util/sbase/printenv.c new file mode 100644 index 00000000..19b5b7d2 --- /dev/null +++ b/util/sbase/printenv.c @@ -0,0 +1,39 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <stdlib.h> + +#include "util.h" + +extern char **environ; + +static void +usage(void) +{ + eprintf("usage: %s [var ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + char *var; + int ret = 0; + + ARGBEGIN { + default: + usage(); + } ARGEND + + if (!argc) { + for (; *environ; environ++) + puts(*environ); + } else { + for (; *argv; argc--, argv++) { + if ((var = getenv(*argv))) + puts(var); + else + ret = 1; + } + } + + return fshut(stdout, "<stdout>") ? 2 : ret; +} diff --git a/util/sbase/printf.1 b/util/sbase/printf.1 new file mode 100644 index 00000000..67456e47 --- /dev/null +++ b/util/sbase/printf.1 @@ -0,0 +1,33 @@ +.Dd October 8, 2015 +.Dt PRINTF 1 +.Os sbase +.Sh NAME +.Nm printf +.Nd print formatted data +.Sh SYNOPSIS +.Nm +.Ar format +.Op Ar arg ... +.Sh DESCRIPTION +.Nm +writes formatted data according to +.Ar format +using each +.Ar arg +until drained. +.Pp +.Nm +interprets the standard escape sequences \e\e, \e', \e", \ea, \eb, \ee, +\ef, \en, \er, \et, \ev, \exH[H], \eO[OOO], the sequence \ec, which +terminates further output if it's found inside +.Ar format +or a %b format string, the format specification %b for an unescaped string and +all C +.Xr printf 3 +format specifications ending with csdiouxXaAeEfFgG, including variable width +and precision. +.Sh STANDARDS +POSIX.1-2013. +.Pp +The possibility of specifying 4-digit octals is an extension to that +specification. diff --git a/util/sbase/printf.c b/util/sbase/printf.c new file mode 100644 index 00000000..039dac71 --- /dev/null +++ b/util/sbase/printf.c @@ -0,0 +1,188 @@ +/* See LICENSE file for copyright and license details. */ +#include <ctype.h> +#include <errno.h> +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "utf.h" +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s format [arg ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + Rune *rarg; + size_t i, j, argi, lastargi, formatlen, blen; + long long num; + double dou; + int cooldown = 0, width, precision, ret = 0; + char *format, *tmp, *arg, *fmt, flag; + + argv0 = argv[0]; + if (argc < 2) + usage(); + + format = argv[1]; + if ((tmp = strstr(format, "\\c"))) { + *tmp = 0; + cooldown = 1; + } + formatlen = unescape(format); + if (formatlen == 0) + return 0; + lastargi = 0; + for (i = 0, argi = 2; !cooldown || i < formatlen; i++, i = cooldown ? i : (i % formatlen)) { + if (i == 0) { + if (lastargi == argi) + break; + lastargi = argi; + } + if (format[i] != '%') { + putchar(format[i]); + continue; + } + + /* flag */ + for (flag = '\0', i++; strchr("#-+ 0", format[i]); i++) { + flag = format[i]; + } + + /* field width */ + width = -1; + if (format[i] == '*') { + if (argi < argc) + width = estrtonum(argv[argi++], 0, INT_MAX); + else + cooldown = 1; + i++; + } else { + j = i; + for (; strchr("+-0123456789", format[i]); i++); + if (j != i) { + tmp = estrndup(format + j, i - j); + width = estrtonum(tmp, 0, INT_MAX); + free(tmp); + } else { + width = 0; + } + } + + /* field precision */ + precision = -1; + if (format[i] == '.') { + if (format[++i] == '*') { + if (argi < argc) + precision = estrtonum(argv[argi++], 0, INT_MAX); + else + cooldown = 1; + i++; + } else { + j = i; + for (; strchr("+-0123456789", format[i]); i++); + if (j != i) { + tmp = estrndup(format + j, i - j); + precision = estrtonum(tmp, 0, INT_MAX); + free(tmp); + } else { + precision = 0; + } + } + } + + if (format[i] != '%') { + if (argi < argc) + arg = argv[argi++]; + else { + arg = ""; + cooldown = 1; + } + } else { + putchar('%'); + continue; + } + + switch (format[i]) { + case 'b': + if ((tmp = strstr(arg, "\\c"))) { + *tmp = 0; + blen = unescape(arg); + fwrite(arg, sizeof(*arg), blen, stdout); + return 0; + } + blen = unescape(arg); + fwrite(arg, sizeof(*arg), blen, stdout); + break; + case 'c': + unescape(arg); + rarg = ereallocarray(NULL, utflen(arg) + 1, sizeof(*rarg)); + utftorunestr(arg, rarg); + efputrune(rarg, stdout, "<stdout>"); + free(rarg); + break; + case 's': + fmt = estrdup(flag ? "%#*.*s" : "%*.*s"); + if (flag) + fmt[1] = flag; + printf(fmt, width, precision, arg); + free(fmt); + break; + case 'd': case 'i': case 'o': case 'u': case 'x': case 'X': + for (j = 0; isspace(arg[j]); j++); + if (arg[j] == '\'' || arg[j] == '\"') { + arg += j + 1; + unescape(arg); + rarg = ereallocarray(NULL, utflen(arg) + 1, sizeof(*rarg)); + utftorunestr(arg, rarg); + num = rarg[0]; + } else if (arg[0]) { + errno = 0; + if (format[i] == 'd' || format[i] == 'i') + num = strtol(arg, &tmp, 0); + else + num = strtoul(arg, &tmp, 0); + + if (tmp == arg || *tmp != '\0') { + ret = 1; + weprintf("%%%c %s: conversion error\n", + format[i], arg); + } + if (errno == ERANGE) { + ret = 1; + weprintf("%%%c %s: out of range\n", + format[i], arg); + } + } else { + num = 0; + } + fmt = estrdup(flag ? "%#*.*ll#" : "%*.*ll#"); + if (flag) + fmt[1] = flag; + fmt[flag ? 7 : 6] = format[i]; + printf(fmt, width, precision, num); + free(fmt); + break; + case 'a': case 'A': case 'e': case 'E': case 'f': case 'F': case 'g': case 'G': + fmt = estrdup(flag ? "%#*.*#" : "%*.*#"); + if (flag) + fmt[1] = flag; + fmt[flag ? 5 : 4] = format[i]; + dou = (strlen(arg) > 0) ? estrtod(arg) : 0; + printf(fmt, width, precision, dou); + free(fmt); + break; + default: + eprintf("Invalid format specifier '%c'.\n", format[i]); + } + if (argi >= argc) + cooldown = 1; + } + + return fshut(stdout, "<stdout>") | ret; +} diff --git a/util/sbase/pwd.1 b/util/sbase/pwd.1 new file mode 100644 index 00000000..71b9d2a8 --- /dev/null +++ b/util/sbase/pwd.1 @@ -0,0 +1,29 @@ +.Dd October 8, 2015 +.Dt PWD 1 +.Os sbase +.Sh NAME +.Nm pwd +.Nd print working directory +.Sh SYNOPSIS +.Nm +.Op Fl L | Fl P +.Sh DESCRIPTION +.Nm +prints the path of the current working directory. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl L +Logical path, uses $PWD. +This is the default. +.It Fl P +Physical path, avoids all symlinks. +.El +.Sh ENVIRONMENT +.Bl -tag -width PWD +.It Ev PWD +The logical path to the current working directory. +.El +.Sh SEE ALSO +.Xr getcwd 3 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/pwd.c b/util/sbase/pwd.c new file mode 100644 index 00000000..c6a4497f --- /dev/null +++ b/util/sbase/pwd.c @@ -0,0 +1,50 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +#include "util.h" + +static const char * +getpwd(const char *cwd) +{ + const char *pwd; + struct stat cst, pst; + + if (!(pwd = getenv("PWD")) || pwd[0] != '/' || stat(pwd, &pst) < 0) + return cwd; + if (stat(cwd, &cst) < 0) + eprintf("stat %s:", cwd); + + return (pst.st_dev == cst.st_dev && pst.st_ino == cst.st_ino) ? pwd : cwd; +} + +static void +usage(void) +{ + eprintf("usage: %s [-LP]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + char cwd[PATH_MAX]; + char mode = 'L'; + + ARGBEGIN { + case 'L': + case 'P': + mode = ARGC(); + break; + default: + usage(); + } ARGEND + + if (!getcwd(cwd, sizeof(cwd))) + eprintf("getcwd:"); + puts((mode == 'L') ? getpwd(cwd) : cwd); + + return fshut(stdout, "<stdout>"); +} diff --git a/util/sbase/queue.h b/util/sbase/queue.h new file mode 100644 index 00000000..f8f09bf1 --- /dev/null +++ b/util/sbase/queue.h @@ -0,0 +1,648 @@ +/* $OpenBSD: queue.h,v 1.38 2013/07/03 15:05:21 fgsch Exp $ */ +/* $NetBSD: queue.h,v 1.11 1996/05/16 05:17:14 mycroft Exp $ */ + +/* + * Copyright (c) 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)queue.h 8.5 (Berkeley) 8/20/94 + */ + +#ifndef _SYS_QUEUE_H_ +#define _SYS_QUEUE_H_ + +/* + * This file defines five types of data structures: singly-linked lists, + * lists, simple queues, tail queues, and circular queues. + * + * + * A singly-linked list is headed by a single forward pointer. The elements + * are singly linked for minimum space and pointer manipulation overhead at + * the expense of O(n) removal for arbitrary elements. New elements can be + * added to the list after an existing element or at the head of the list. + * Elements being removed from the head of the list should use the explicit + * macro for this purpose for optimum efficiency. A singly-linked list may + * only be traversed in the forward direction. Singly-linked lists are ideal + * for applications with large datasets and few or no removals or for + * implementing a LIFO queue. + * + * A list is headed by a single forward pointer (or an array of forward + * pointers for a hash table header). The elements are doubly linked + * so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before + * or after an existing element or at the head of the list. A list + * may only be traversed in the forward direction. + * + * A simple queue is headed by a pair of pointers, one the head of the + * list and the other to the tail of the list. The elements are singly + * linked to save space, so elements can only be removed from the + * head of the list. New elements can be added to the list before or after + * an existing element, at the head of the list, or at the end of the + * list. A simple queue may only be traversed in the forward direction. + * + * A tail queue is headed by a pair of pointers, one to the head of the + * list and the other to the tail of the list. The elements are doubly + * linked so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before or + * after an existing element, at the head of the list, or at the end of + * the list. A tail queue may be traversed in either direction. + * + * A circle queue is headed by a pair of pointers, one to the head of the + * list and the other to the tail of the list. The elements are doubly + * linked so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before or after + * an existing element, at the head of the list, or at the end of the list. + * A circle queue may be traversed in either direction, but has a more + * complex end of list detection. + * + * For details on the use of these macros, see the queue(3) manual page. + */ + +#if defined(QUEUE_MACRO_DEBUG) || (defined(_KERNEL) && defined(DIAGNOSTIC)) +#define _Q_INVALIDATE(a) (a) = ((void *)-1) +#else +#define _Q_INVALIDATE(a) +#endif + +/* + * Singly-linked List definitions. + */ +#define SLIST_HEAD(name, type) \ +struct name { \ + struct type *slh_first; /* first element */ \ +} + +#define SLIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define SLIST_ENTRY(type) \ +struct { \ + struct type *sle_next; /* next element */ \ +} + +/* + * Singly-linked List access methods. + */ +#define SLIST_FIRST(head) ((head)->slh_first) +#define SLIST_END(head) NULL +#define SLIST_EMPTY(head) (SLIST_FIRST(head) == SLIST_END(head)) +#define SLIST_NEXT(elm, field) ((elm)->field.sle_next) + +#define SLIST_FOREACH(var, head, field) \ + for((var) = SLIST_FIRST(head); \ + (var) != SLIST_END(head); \ + (var) = SLIST_NEXT(var, field)) + +#define SLIST_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = SLIST_FIRST(head); \ + (var) && ((tvar) = SLIST_NEXT(var, field), 1); \ + (var) = (tvar)) + +/* + * Singly-linked List functions. + */ +#define SLIST_INIT(head) { \ + SLIST_FIRST(head) = SLIST_END(head); \ +} + +#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ + (elm)->field.sle_next = (slistelm)->field.sle_next; \ + (slistelm)->field.sle_next = (elm); \ +} while (0) + +#define SLIST_INSERT_HEAD(head, elm, field) do { \ + (elm)->field.sle_next = (head)->slh_first; \ + (head)->slh_first = (elm); \ +} while (0) + +#define SLIST_REMOVE_AFTER(elm, field) do { \ + (elm)->field.sle_next = (elm)->field.sle_next->field.sle_next; \ +} while (0) + +#define SLIST_REMOVE_HEAD(head, field) do { \ + (head)->slh_first = (head)->slh_first->field.sle_next; \ +} while (0) + +#define SLIST_REMOVE(head, elm, type, field) do { \ + if ((head)->slh_first == (elm)) { \ + SLIST_REMOVE_HEAD((head), field); \ + } else { \ + struct type *curelm = (head)->slh_first; \ + \ + while (curelm->field.sle_next != (elm)) \ + curelm = curelm->field.sle_next; \ + curelm->field.sle_next = \ + curelm->field.sle_next->field.sle_next; \ + _Q_INVALIDATE((elm)->field.sle_next); \ + } \ +} while (0) + +/* + * List definitions. + */ +#define LIST_HEAD(name, type) \ +struct name { \ + struct type *lh_first; /* first element */ \ +} + +#define LIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define LIST_ENTRY(type) \ +struct { \ + struct type *le_next; /* next element */ \ + struct type **le_prev; /* address of previous next element */ \ +} + +/* + * List access methods + */ +#define LIST_FIRST(head) ((head)->lh_first) +#define LIST_END(head) NULL +#define LIST_EMPTY(head) (LIST_FIRST(head) == LIST_END(head)) +#define LIST_NEXT(elm, field) ((elm)->field.le_next) + +#define LIST_FOREACH(var, head, field) \ + for((var) = LIST_FIRST(head); \ + (var)!= LIST_END(head); \ + (var) = LIST_NEXT(var, field)) + +#define LIST_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = LIST_FIRST(head); \ + (var) && ((tvar) = LIST_NEXT(var, field), 1); \ + (var) = (tvar)) + +/* + * List functions. + */ +#define LIST_INIT(head) do { \ + LIST_FIRST(head) = LIST_END(head); \ +} while (0) + +#define LIST_INSERT_AFTER(listelm, elm, field) do { \ + if (((elm)->field.le_next = (listelm)->field.le_next) != NULL) \ + (listelm)->field.le_next->field.le_prev = \ + &(elm)->field.le_next; \ + (listelm)->field.le_next = (elm); \ + (elm)->field.le_prev = &(listelm)->field.le_next; \ +} while (0) + +#define LIST_INSERT_BEFORE(listelm, elm, field) do { \ + (elm)->field.le_prev = (listelm)->field.le_prev; \ + (elm)->field.le_next = (listelm); \ + *(listelm)->field.le_prev = (elm); \ + (listelm)->field.le_prev = &(elm)->field.le_next; \ +} while (0) + +#define LIST_INSERT_HEAD(head, elm, field) do { \ + if (((elm)->field.le_next = (head)->lh_first) != NULL) \ + (head)->lh_first->field.le_prev = &(elm)->field.le_next;\ + (head)->lh_first = (elm); \ + (elm)->field.le_prev = &(head)->lh_first; \ +} while (0) + +#define LIST_REMOVE(elm, field) do { \ + if ((elm)->field.le_next != NULL) \ + (elm)->field.le_next->field.le_prev = \ + (elm)->field.le_prev; \ + *(elm)->field.le_prev = (elm)->field.le_next; \ + _Q_INVALIDATE((elm)->field.le_prev); \ + _Q_INVALIDATE((elm)->field.le_next); \ +} while (0) + +#define LIST_REPLACE(elm, elm2, field) do { \ + if (((elm2)->field.le_next = (elm)->field.le_next) != NULL) \ + (elm2)->field.le_next->field.le_prev = \ + &(elm2)->field.le_next; \ + (elm2)->field.le_prev = (elm)->field.le_prev; \ + *(elm2)->field.le_prev = (elm2); \ + _Q_INVALIDATE((elm)->field.le_prev); \ + _Q_INVALIDATE((elm)->field.le_next); \ +} while (0) + +/* + * Simple queue definitions. + */ +#define SIMPLEQ_HEAD(name, type) \ +struct name { \ + struct type *sqh_first; /* first element */ \ + struct type **sqh_last; /* addr of last next element */ \ +} + +#define SIMPLEQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).sqh_first } + +#define SIMPLEQ_ENTRY(type) \ +struct { \ + struct type *sqe_next; /* next element */ \ +} + +/* + * Simple queue access methods. + */ +#define SIMPLEQ_FIRST(head) ((head)->sqh_first) +#define SIMPLEQ_END(head) NULL +#define SIMPLEQ_EMPTY(head) (SIMPLEQ_FIRST(head) == SIMPLEQ_END(head)) +#define SIMPLEQ_NEXT(elm, field) ((elm)->field.sqe_next) + +#define SIMPLEQ_FOREACH(var, head, field) \ + for((var) = SIMPLEQ_FIRST(head); \ + (var) != SIMPLEQ_END(head); \ + (var) = SIMPLEQ_NEXT(var, field)) + +#define SIMPLEQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = SIMPLEQ_FIRST(head); \ + (var) && ((tvar) = SIMPLEQ_NEXT(var, field), 1); \ + (var) = (tvar)) + +/* + * Simple queue functions. + */ +#define SIMPLEQ_INIT(head) do { \ + (head)->sqh_first = NULL; \ + (head)->sqh_last = &(head)->sqh_first; \ +} while (0) + +#define SIMPLEQ_INSERT_HEAD(head, elm, field) do { \ + if (((elm)->field.sqe_next = (head)->sqh_first) == NULL) \ + (head)->sqh_last = &(elm)->field.sqe_next; \ + (head)->sqh_first = (elm); \ +} while (0) + +#define SIMPLEQ_INSERT_TAIL(head, elm, field) do { \ + (elm)->field.sqe_next = NULL; \ + *(head)->sqh_last = (elm); \ + (head)->sqh_last = &(elm)->field.sqe_next; \ +} while (0) + +#define SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ + if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL)\ + (head)->sqh_last = &(elm)->field.sqe_next; \ + (listelm)->field.sqe_next = (elm); \ +} while (0) + +#define SIMPLEQ_REMOVE_HEAD(head, field) do { \ + if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL) \ + (head)->sqh_last = &(head)->sqh_first; \ +} while (0) + +#define SIMPLEQ_REMOVE_AFTER(head, elm, field) do { \ + if (((elm)->field.sqe_next = (elm)->field.sqe_next->field.sqe_next) \ + == NULL) \ + (head)->sqh_last = &(elm)->field.sqe_next; \ +} while (0) + +/* + * XOR Simple queue definitions. + */ +#define XSIMPLEQ_HEAD(name, type) \ +struct name { \ + struct type *sqx_first; /* first element */ \ + struct type **sqx_last; /* addr of last next element */ \ + unsigned long sqx_cookie; \ +} + +#define XSIMPLEQ_ENTRY(type) \ +struct { \ + struct type *sqx_next; /* next element */ \ +} + +/* + * XOR Simple queue access methods. + */ +#define XSIMPLEQ_XOR(head, ptr) ((__typeof(ptr))((head)->sqx_cookie ^ \ + (unsigned long)(ptr))) +#define XSIMPLEQ_FIRST(head) XSIMPLEQ_XOR(head, ((head)->sqx_first)) +#define XSIMPLEQ_END(head) NULL +#define XSIMPLEQ_EMPTY(head) (XSIMPLEQ_FIRST(head) == XSIMPLEQ_END(head)) +#define XSIMPLEQ_NEXT(head, elm, field) XSIMPLEQ_XOR(head, ((elm)->field.sqx_next)) + + +#define XSIMPLEQ_FOREACH(var, head, field) \ + for ((var) = XSIMPLEQ_FIRST(head); \ + (var) != XSIMPLEQ_END(head); \ + (var) = XSIMPLEQ_NEXT(head, var, field)) + +#define XSIMPLEQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = XSIMPLEQ_FIRST(head); \ + (var) && ((tvar) = XSIMPLEQ_NEXT(head, var, field), 1); \ + (var) = (tvar)) + +/* + * XOR Simple queue functions. + */ +#define XSIMPLEQ_INIT(head) do { \ + arc4random_buf(&(head)->sqx_cookie, sizeof((head)->sqx_cookie)); \ + (head)->sqx_first = XSIMPLEQ_XOR(head, NULL); \ + (head)->sqx_last = XSIMPLEQ_XOR(head, &(head)->sqx_first); \ +} while (0) + +#define XSIMPLEQ_INSERT_HEAD(head, elm, field) do { \ + if (((elm)->field.sqx_next = (head)->sqx_first) == \ + XSIMPLEQ_XOR(head, NULL)) \ + (head)->sqx_last = XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \ + (head)->sqx_first = XSIMPLEQ_XOR(head, (elm)); \ +} while (0) + +#define XSIMPLEQ_INSERT_TAIL(head, elm, field) do { \ + (elm)->field.sqx_next = XSIMPLEQ_XOR(head, NULL); \ + *(XSIMPLEQ_XOR(head, (head)->sqx_last)) = XSIMPLEQ_XOR(head, (elm)); \ + (head)->sqx_last = XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \ +} while (0) + +#define XSIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ + if (((elm)->field.sqx_next = (listelm)->field.sqx_next) == \ + XSIMPLEQ_XOR(head, NULL)) \ + (head)->sqx_last = XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \ + (listelm)->field.sqx_next = XSIMPLEQ_XOR(head, (elm)); \ +} while (0) + +#define XSIMPLEQ_REMOVE_HEAD(head, field) do { \ + if (((head)->sqx_first = XSIMPLEQ_XOR(head, \ + (head)->sqx_first)->field.sqx_next) == XSIMPLEQ_XOR(head, NULL)) \ + (head)->sqx_last = XSIMPLEQ_XOR(head, &(head)->sqx_first); \ +} while (0) + +#define XSIMPLEQ_REMOVE_AFTER(head, elm, field) do { \ + if (((elm)->field.sqx_next = XSIMPLEQ_XOR(head, \ + (elm)->field.sqx_next)->field.sqx_next) \ + == XSIMPLEQ_XOR(head, NULL)) \ + (head)->sqx_last = \ + XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \ +} while (0) + + +/* + * Tail queue definitions. + */ +#define TAILQ_HEAD(name, type) \ +struct name { \ + struct type *tqh_first; /* first element */ \ + struct type **tqh_last; /* addr of last next element */ \ +} + +#define TAILQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).tqh_first } + +#define TAILQ_ENTRY(type) \ +struct { \ + struct type *tqe_next; /* next element */ \ + struct type **tqe_prev; /* address of previous next element */ \ +} + +/* + * tail queue access methods + */ +#define TAILQ_FIRST(head) ((head)->tqh_first) +#define TAILQ_END(head) NULL +#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) +#define TAILQ_LAST(head, headname) \ + (*(((struct headname *)((head)->tqh_last))->tqh_last)) +/* XXX */ +#define TAILQ_PREV(elm, headname, field) \ + (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) +#define TAILQ_EMPTY(head) \ + (TAILQ_FIRST(head) == TAILQ_END(head)) + +#define TAILQ_FOREACH(var, head, field) \ + for((var) = TAILQ_FIRST(head); \ + (var) != TAILQ_END(head); \ + (var) = TAILQ_NEXT(var, field)) + +#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = TAILQ_FIRST(head); \ + (var) != TAILQ_END(head) && \ + ((tvar) = TAILQ_NEXT(var, field), 1); \ + (var) = (tvar)) + + +#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ + for((var) = TAILQ_LAST(head, headname); \ + (var) != TAILQ_END(head); \ + (var) = TAILQ_PREV(var, headname, field)) + +#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ + for ((var) = TAILQ_LAST(head, headname); \ + (var) != TAILQ_END(head) && \ + ((tvar) = TAILQ_PREV(var, headname, field), 1); \ + (var) = (tvar)) + +/* + * Tail queue functions. + */ +#define TAILQ_INIT(head) do { \ + (head)->tqh_first = NULL; \ + (head)->tqh_last = &(head)->tqh_first; \ +} while (0) + +#define TAILQ_INSERT_HEAD(head, elm, field) do { \ + if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \ + (head)->tqh_first->field.tqe_prev = \ + &(elm)->field.tqe_next; \ + else \ + (head)->tqh_last = &(elm)->field.tqe_next; \ + (head)->tqh_first = (elm); \ + (elm)->field.tqe_prev = &(head)->tqh_first; \ +} while (0) + +#define TAILQ_INSERT_TAIL(head, elm, field) do { \ + (elm)->field.tqe_next = NULL; \ + (elm)->field.tqe_prev = (head)->tqh_last; \ + *(head)->tqh_last = (elm); \ + (head)->tqh_last = &(elm)->field.tqe_next; \ +} while (0) + +#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ + if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\ + (elm)->field.tqe_next->field.tqe_prev = \ + &(elm)->field.tqe_next; \ + else \ + (head)->tqh_last = &(elm)->field.tqe_next; \ + (listelm)->field.tqe_next = (elm); \ + (elm)->field.tqe_prev = &(listelm)->field.tqe_next; \ +} while (0) + +#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ + (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ + (elm)->field.tqe_next = (listelm); \ + *(listelm)->field.tqe_prev = (elm); \ + (listelm)->field.tqe_prev = &(elm)->field.tqe_next; \ +} while (0) + +#define TAILQ_REMOVE(head, elm, field) do { \ + if (((elm)->field.tqe_next) != NULL) \ + (elm)->field.tqe_next->field.tqe_prev = \ + (elm)->field.tqe_prev; \ + else \ + (head)->tqh_last = (elm)->field.tqe_prev; \ + *(elm)->field.tqe_prev = (elm)->field.tqe_next; \ + _Q_INVALIDATE((elm)->field.tqe_prev); \ + _Q_INVALIDATE((elm)->field.tqe_next); \ +} while (0) + +#define TAILQ_REPLACE(head, elm, elm2, field) do { \ + if (((elm2)->field.tqe_next = (elm)->field.tqe_next) != NULL) \ + (elm2)->field.tqe_next->field.tqe_prev = \ + &(elm2)->field.tqe_next; \ + else \ + (head)->tqh_last = &(elm2)->field.tqe_next; \ + (elm2)->field.tqe_prev = (elm)->field.tqe_prev; \ + *(elm2)->field.tqe_prev = (elm2); \ + _Q_INVALIDATE((elm)->field.tqe_prev); \ + _Q_INVALIDATE((elm)->field.tqe_next); \ +} while (0) + +/* + * Circular queue definitions. + */ +#define CIRCLEQ_HEAD(name, type) \ +struct name { \ + struct type *cqh_first; /* first element */ \ + struct type *cqh_last; /* last element */ \ +} + +#define CIRCLEQ_HEAD_INITIALIZER(head) \ + { CIRCLEQ_END(&head), CIRCLEQ_END(&head) } + +#define CIRCLEQ_ENTRY(type) \ +struct { \ + struct type *cqe_next; /* next element */ \ + struct type *cqe_prev; /* previous element */ \ +} + +/* + * Circular queue access methods + */ +#define CIRCLEQ_FIRST(head) ((head)->cqh_first) +#define CIRCLEQ_LAST(head) ((head)->cqh_last) +#define CIRCLEQ_END(head) ((void *)(head)) +#define CIRCLEQ_NEXT(elm, field) ((elm)->field.cqe_next) +#define CIRCLEQ_PREV(elm, field) ((elm)->field.cqe_prev) +#define CIRCLEQ_EMPTY(head) \ + (CIRCLEQ_FIRST(head) == CIRCLEQ_END(head)) + +#define CIRCLEQ_FOREACH(var, head, field) \ + for((var) = CIRCLEQ_FIRST(head); \ + (var) != CIRCLEQ_END(head); \ + (var) = CIRCLEQ_NEXT(var, field)) + +#define CIRCLEQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = CIRCLEQ_FIRST(head); \ + (var) != CIRCLEQ_END(head) && \ + ((tvar) = CIRCLEQ_NEXT(var, field), 1); \ + (var) = (tvar)) + +#define CIRCLEQ_FOREACH_REVERSE(var, head, field) \ + for((var) = CIRCLEQ_LAST(head); \ + (var) != CIRCLEQ_END(head); \ + (var) = CIRCLEQ_PREV(var, field)) + +#define CIRCLEQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ + for ((var) = CIRCLEQ_LAST(head, headname); \ + (var) != CIRCLEQ_END(head) && \ + ((tvar) = CIRCLEQ_PREV(var, headname, field), 1); \ + (var) = (tvar)) + +/* + * Circular queue functions. + */ +#define CIRCLEQ_INIT(head) do { \ + (head)->cqh_first = CIRCLEQ_END(head); \ + (head)->cqh_last = CIRCLEQ_END(head); \ +} while (0) + +#define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ + (elm)->field.cqe_next = (listelm)->field.cqe_next; \ + (elm)->field.cqe_prev = (listelm); \ + if ((listelm)->field.cqe_next == CIRCLEQ_END(head)) \ + (head)->cqh_last = (elm); \ + else \ + (listelm)->field.cqe_next->field.cqe_prev = (elm); \ + (listelm)->field.cqe_next = (elm); \ +} while (0) + +#define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \ + (elm)->field.cqe_next = (listelm); \ + (elm)->field.cqe_prev = (listelm)->field.cqe_prev; \ + if ((listelm)->field.cqe_prev == CIRCLEQ_END(head)) \ + (head)->cqh_first = (elm); \ + else \ + (listelm)->field.cqe_prev->field.cqe_next = (elm); \ + (listelm)->field.cqe_prev = (elm); \ +} while (0) + +#define CIRCLEQ_INSERT_HEAD(head, elm, field) do { \ + (elm)->field.cqe_next = (head)->cqh_first; \ + (elm)->field.cqe_prev = CIRCLEQ_END(head); \ + if ((head)->cqh_last == CIRCLEQ_END(head)) \ + (head)->cqh_last = (elm); \ + else \ + (head)->cqh_first->field.cqe_prev = (elm); \ + (head)->cqh_first = (elm); \ +} while (0) + +#define CIRCLEQ_INSERT_TAIL(head, elm, field) do { \ + (elm)->field.cqe_next = CIRCLEQ_END(head); \ + (elm)->field.cqe_prev = (head)->cqh_last; \ + if ((head)->cqh_first == CIRCLEQ_END(head)) \ + (head)->cqh_first = (elm); \ + else \ + (head)->cqh_last->field.cqe_next = (elm); \ + (head)->cqh_last = (elm); \ +} while (0) + +#define CIRCLEQ_REMOVE(head, elm, field) do { \ + if ((elm)->field.cqe_next == CIRCLEQ_END(head)) \ + (head)->cqh_last = (elm)->field.cqe_prev; \ + else \ + (elm)->field.cqe_next->field.cqe_prev = \ + (elm)->field.cqe_prev; \ + if ((elm)->field.cqe_prev == CIRCLEQ_END(head)) \ + (head)->cqh_first = (elm)->field.cqe_next; \ + else \ + (elm)->field.cqe_prev->field.cqe_next = \ + (elm)->field.cqe_next; \ + _Q_INVALIDATE((elm)->field.cqe_prev); \ + _Q_INVALIDATE((elm)->field.cqe_next); \ +} while (0) + +#define CIRCLEQ_REPLACE(head, elm, elm2, field) do { \ + if (((elm2)->field.cqe_next = (elm)->field.cqe_next) == \ + CIRCLEQ_END(head)) \ + (head)->cqh_last = (elm2); \ + else \ + (elm2)->field.cqe_next->field.cqe_prev = (elm2); \ + if (((elm2)->field.cqe_prev = (elm)->field.cqe_prev) == \ + CIRCLEQ_END(head)) \ + (head)->cqh_first = (elm2); \ + else \ + (elm2)->field.cqe_prev->field.cqe_next = (elm2); \ + _Q_INVALIDATE((elm)->field.cqe_prev); \ + _Q_INVALIDATE((elm)->field.cqe_next); \ +} while (0) + +#endif /* !_SYS_QUEUE_H_ */ diff --git a/util/sbase/readlink.1 b/util/sbase/readlink.1 new file mode 100644 index 00000000..ac19710d --- /dev/null +++ b/util/sbase/readlink.1 @@ -0,0 +1,32 @@ +.Dd November 16, 2015 +.Dt READLINK 1 +.Os sbase +.Sh NAME +.Nm readlink +.Nd print symbolic link target or canonical file name +.Sh SYNOPSIS +.Nm +.Op Fl f +.Op Fl n +.Ar path +.Sh DESCRIPTION +.Nm +writes the target of +.Ar path , +if it is a symbolic link, to stdout. +If not, +.Nm +exits with a non-zero return value. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl f +Canonicalize +.Ar path , +which needn't be a symlink, +by recursively following every symlink in its path components. +.It Fl n +Do not print the terminating newline. +.El +.Sh SEE ALSO +.Xr readlink 2 , +.Xr realpath 3 diff --git a/util/sbase/readlink.c b/util/sbase/readlink.c new file mode 100644 index 00000000..d059584f --- /dev/null +++ b/util/sbase/readlink.c @@ -0,0 +1,54 @@ +/* See LICENSE file for copyright and license details. */ +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-fn] path\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + char buf[PATH_MAX]; + ssize_t n; + int nflag = 0, fflag = 0; + + ARGBEGIN { + case 'f': + fflag = ARGC(); + break; + case 'n': + nflag = 1; + break; + default: + usage(); + } ARGEND + + if (argc != 1) + usage(); + + if (strlen(argv[0]) >= PATH_MAX) + eprintf("path too long\n"); + + if (fflag) { + if (!realpath(argv[0], buf)) + eprintf("realpath %s:", argv[0]); + } else { + if ((n = readlink(argv[0], buf, PATH_MAX - 1)) < 0) + eprintf("readlink %s:", argv[0]); + buf[n] = '\0'; + } + + fputs(buf, stdout); + if (!nflag) + putchar('\n'); + + return fshut(stdout, "<stdout>"); +} diff --git a/util/sbase/renice.1 b/util/sbase/renice.1 new file mode 100644 index 00000000..c3ec7f8a --- /dev/null +++ b/util/sbase/renice.1 @@ -0,0 +1,38 @@ +.Dd October 8, 2015 +.Dt RENICE 1 +.Os sbase +.Sh NAME +.Nm renice +.Nd change niceness of processes +.Sh SYNOPSIS +.Nm +.Fl n Ar num +.Op Fl g | Fl p | Fl u +.Ar id ... +.Sh DESCRIPTION +.Nm +changes the niceness of each process with the given +.Ar id . +Only the superuser can lower the niceness. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl g | Fl p | Fl u +Interpret each +.Ar id +as a process group ID | process ID | user name or ID. +The middle option is default. +.It Fl n Ar num +Change niceness by +.Ar num , +with niceness ranging from +.Sy -20 +(highest priority) +to +.Sy +20 +(lowest priority). +.El +.Sh SEE ALSO +.Xr nice 2 , +.Xr renice 2 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/renice.c b/util/sbase/renice.c new file mode 100644 index 00000000..358c5604 --- /dev/null +++ b/util/sbase/renice.c @@ -0,0 +1,93 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/resource.h> + +#include <errno.h> +#include <pwd.h> +#include <stdlib.h> + +#include "util.h" + +#ifndef PRIO_MIN +#define PRIO_MIN -NZERO +#endif + +#ifndef PRIO_MAX +#define PRIO_MAX (NZERO-1) +#endif + +static int +renice(int which, int who, long adj) +{ + errno = 0; + adj += getpriority(which, who); + if (errno) { + weprintf("getpriority %d:", who); + return 0; + } + + adj = MAX(PRIO_MIN, MIN(adj, PRIO_MAX)); + if (setpriority(which, who, (int)adj) < 0) { + weprintf("setpriority %d:", who); + return 0; + } + + return 1; +} + +static void +usage(void) +{ + eprintf("usage: %s -n num [-g | -p | -u] id ...\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + const char *adj = NULL; + long val; + int which = PRIO_PROCESS, ret = 0; + struct passwd *pw; + int who; + + ARGBEGIN { + case 'n': + adj = EARGF(usage()); + break; + case 'g': + which = PRIO_PGRP; + break; + case 'p': + which = PRIO_PROCESS; + break; + case 'u': + which = PRIO_USER; + break; + default: + usage(); + } ARGEND + + if (!argc || !adj) + usage(); + + val = estrtonum(adj, PRIO_MIN, PRIO_MAX); + for (; *argv; argc--, argv++) { + if (which == PRIO_USER) { + errno = 0; + if (!(pw = getpwnam(*argv))) { + if (errno) + weprintf("getpwnam %s:", *argv); + else + weprintf("getpwnam %s: no user found\n", *argv); + ret = 1; + continue; + } + who = pw->pw_uid; + } else { + who = estrtonum(*argv, 1, INT_MAX); + } + if (!renice(which, who, val)) + ret = 1; + } + + return ret; +} diff --git a/util/sbase/rev.1 b/util/sbase/rev.1 new file mode 100644 index 00000000..e56b920b --- /dev/null +++ b/util/sbase/rev.1 @@ -0,0 +1,22 @@ +.Dd March 26, 2016 +.Dt REV 1 +.Os sbase +.Sh NAME +.Nm rev +.Nd reverse each line +.Sh SYNOPSIS +.Nm +.Op Ar file ... +.Sh DESCRIPTION +.Nm +reads each +.Ar file +in sequence and writes it to stdout, but with all characters in each +line in reverse order. +If no +.Ar file +is given +.Nm +reads from stdin. +.Sh SEE ALSO +.Xr tac 1 diff --git a/util/sbase/rev.c b/util/sbase/rev.c new file mode 100644 index 00000000..9ac1da65 --- /dev/null +++ b/util/sbase/rev.c @@ -0,0 +1,74 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <string.h> +#include <unistd.h> + +#include "text.h" +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [file ...]\n", argv0); +} + +static void +rev(FILE *fp) +{ + static char *line = NULL; + static size_t size = 0; + size_t i; + ssize_t n; + int lf; + + while ((n = getline(&line, &size, fp)) > 0) { + lf = n && line[n - 1] == '\n'; + i = n -= lf; + for (n = 0; i--;) { + if (UTF8_POINT(line[i])) { + n++; + } else { + fwrite(line + i, 1, n + 1, stdout); + n = 0; + } + } + if (n) + fwrite(line, 1, n, stdout); + if (lf) + fputc('\n', stdout); + } +} + +int +main(int argc, char *argv[]) +{ + FILE *fp; + int ret = 0; + + ARGBEGIN { + default: + usage(); + } ARGEND + + if (!argc) { + rev(stdin); + } else { + for (; *argv; argc--, argv++) { + if (!strcmp(*argv, "-")) { + *argv = "<stdin>"; + fp = stdin; + } else if (!(fp = fopen(*argv, "r"))) { + weprintf("fopen %s:", *argv); + ret = 1; + continue; + } + rev(fp); + if (fp != stdin && fshut(fp, *argv)) + ret = 1; + } + } + + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/rm.1 b/util/sbase/rm.1 new file mode 100644 index 00000000..604407da --- /dev/null +++ b/util/sbase/rm.1 @@ -0,0 +1,37 @@ +.Dd April 24, 2025 +.Dt RM 1 +.Os sbase +.Sh NAME +.Nm rm +.Nd remove directory entries +.Sh SYNOPSIS +.Nm +.Op Fl f +.Op Fl Rr +.Ar file ... +.Sh DESCRIPTION +.Nm +removes each +.Ar file . +If +.Ar file +is a directory, it has to be empty unless +.Fl R +or +.Fl r +is specified. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl f +Do not prompt before removing +.Ar file . +Do not report when +.Ar file +doesn't exist or couldn't be removed. +.It Fl Rr +Remove directories recursively. +.El +.Sh SEE ALSO +.Xr remove 3 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/rm.c b/util/sbase/rm.c new file mode 100644 index 00000000..3adfc8cd --- /dev/null +++ b/util/sbase/rm.c @@ -0,0 +1,87 @@ +/* See LICENSE file for copyright and license details. */ +#include <fcntl.h> +#include <string.h> + +#include "fs.h" +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-f] [-iRr] file ...\n", argv0); +} + +static int +forbidden(char *path, struct stat *root) +{ + char *s, *t; + size_t n; + struct stat st; + static int w1, w2; + + n = strlen(path); + for (t = path + n; t > path && t[-1] == '/'; --t) + ; + for (s = t; s > path && s[-1] != '/'; --s) + ; + n = t - s; + if (n == 1 && *s == '.' || n == 2 && s[0] == '.' && s[1] == '.') { + if (!w1) + weprintf("\".\" and \"..\" may not be removed\n"); + w1 = 1; + return 1; + } + + if (stat(path, &st) < 0) + return 0; + if (st.st_dev == root->st_dev && st.st_ino == root->st_ino) { + if (!w2) + weprintf("\"/\" may not be removed\n"); + w2 = 1; + return 1; + } + + return 0; +} + +int +main(int argc, char *argv[]) +{ + char *s; + struct stat st; + struct recursor r = { .fn = rm, .maxdepth = 1, .follow = 'P' }; + + ARGBEGIN { + case 'f': + r.flags |= SILENT | IGNORE; + break; + case 'i': + r.flags |= CONFIRM; + break; + case 'R': + case 'r': + r.maxdepth = 0; + break; + default: + usage(); + } ARGEND + + if (!argc) { + if (!(r.flags & IGNORE)) + usage(); + else + return 0; + } + + if (stat("/", &st) < 0) + eprintf("stat root:"); + for (; *argv; argc--, argv++) { + if (forbidden(*argv, &st)) { + rm_status = 1; + continue; + } + recurse(AT_FDCWD, *argv, NULL, &r); + } + + return rm_status || recurse_status; +} diff --git a/util/sbase/rmdir.1 b/util/sbase/rmdir.1 new file mode 100644 index 00000000..b1631cf9 --- /dev/null +++ b/util/sbase/rmdir.1 @@ -0,0 +1,29 @@ +.Dd October 8, 2015 +.Dt RMDIR 1 +.Os sbase +.Sh NAME +.Nm rmdir +.Nd remove empty directories +.Sh SYNOPSIS +.Nm +.Op Fl p +.Ar dir ... +.Sh DESCRIPTION +.Nm +removes each empty +.Ar dir . +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl p +Remove +.Ar dir +and its parents in the pathname +.Ar dir . +.El +.Sh SEE ALSO +.Xr rm 1 , +.Xr unlink 1 , +.Xr rmdir 2 , +.Xr unlink 2 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/rmdir.c b/util/sbase/rmdir.c new file mode 100644 index 00000000..44224547 --- /dev/null +++ b/util/sbase/rmdir.c @@ -0,0 +1,49 @@ +/* See LICENSE file for copyright and license details. */ +#include <libgen.h> +#include <string.h> +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-p] dir ...\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int pflag = 0, ret = 0; + char *d; + + ARGBEGIN { + case 'p': + pflag = 1; + break; + default: + usage(); + } ARGEND + + if (!argc) + usage(); + + for (; *argv; argc--, argv++) { + if (rmdir(*argv) < 0) { + weprintf("rmdir %s:", *argv); + ret = 1; + } else if (pflag) { + d = dirname(*argv); + for (; strcmp(d, "/") && strcmp(d, ".") ;) { + if (rmdir(d) < 0) { + weprintf("rmdir %s:", d); + ret = 1; + break; + } + d = dirname(d); + } + } + } + + return ret; +} diff --git a/util/sbase/scripts/getconf.sh b/util/sbase/scripts/getconf.sh new file mode 100755 index 00000000..70902a30 --- /dev/null +++ b/util/sbase/scripts/getconf.sh @@ -0,0 +1,218 @@ +#!/bin/sh + +ifdef() { + printf 'static const struct var %s[] = {\n' "$1" + awk '{printf("#ifdef %s\n\t{\"%s\",\t%s},\n#endif\n", $2, $1, $2)}' + echo '};' +} + +ifdef confstr_l << EOF +PATH _CS_PATH +POSIX_V7_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS +POSIX_V7_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS +POSIX_V7_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS +POSIX_V7_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS +POSIX_V7_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS +POSIX_V7_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS +POSIX_V7_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS +POSIX_V7_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS +POSIX_V7_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS +POSIX_V7_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS +POSIX_V7_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS +POSIX_V7_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS +POSIX_V7_THREADS_CFLAGS _CS_POSIX_V7_THREADS_CFLAGS +POSIX_V7_THREADS_LDFLAGS _CS_POSIX_V7_THREADS_LDFLAGS +POSIX_V7_WIDTH_RESTRICTED_ENVS _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS +V7_ENV _CS_V7_ENV +EOF + +ifdef limits_l << EOF +_POSIX_CLOCKRES_MIN _POSIX_CLOCKRES_MIN +_POSIX_AIO_LISTIO_MAX _POSIX_AIO_LISTIO_MAX +_POSIX_AIO_MAX _POSIX_AIO_MAX +_POSIX_ARG_MAX _POSIX_ARG_MAX +_POSIX_CHILD_MAX _POSIX_CHILD_MAX +_POSIX_DELAYTIMER_MAX _POSIX_DELAYTIMER_MAX +_POSIX_HOST_NAME_MAX _POSIX_HOST_NAME_MAX +_POSIX_LINK_MAX _POSIX_LINK_MAX +_POSIX_LOGIN_NAME_MAX _POSIX_LOGIN_NAME_MAX +_POSIX_MAX_CANON _POSIX_MAX_CANON +_POSIX_MAX_INPUT _POSIX_MAX_INPUT +_POSIX_MQ_OPEN_MAX _POSIX_MQ_OPEN_MAX +_POSIX_MQ_PRIO_MAX _POSIX_MQ_PRIO_MAX +_POSIX_NAME_MAX _POSIX_NAME_MAX +_POSIX_NGROUPS_MAX _POSIX_NGROUPS_MAX +_POSIX_OPEN_MAX _POSIX_OPEN_MAX +_POSIX_PATH_MAX _POSIX_PATH_MAX +_POSIX_PIPE_BUF _POSIX_PIPE_BUF +_POSIX_RE_DUP_MAX _POSIX_RE_DUP_MAX +_POSIX_RTSIG_MAX _POSIX_RTSIG_MAX +_POSIX_SEM_NSEMS_MAX _POSIX_SEM_NSEMS_MAX +_POSIX_SEM_VALUE_MAX _POSIX_SEM_VALUE_MAX +_POSIX_SIGQUEUE_MAX _POSIX_SIGQUEUE_MAX +_POSIX_SSIZE_MAX _POSIX_SSIZE_MAX +_POSIX_SS_REPL_MAX _POSIX_SS_REPL_MAX +_POSIX_STREAM_MAX _POSIX_STREAM_MAX +_POSIX_SYMLINK_MAX _POSIX_SYMLINK_MAX +_POSIX_SYMLOOP_MAX _POSIX_SYMLOOP_MAX +_POSIX_THREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS +_POSIX_THREAD_KEYS_MAX _POSIX_THREAD_KEYS_MAX +_POSIX_THREAD_THREADS_MAX _POSIX_THREAD_THREADS_MAX +_POSIX_TIMER_MAX _POSIX_TIMER_MAX +_POSIX_TTY_NAME_MAX _POSIX_TTY_NAME_MAX +_POSIX_TZNAME_MAX _POSIX_TZNAME_MAX +_POSIX2_BC_BASE_MAX _POSIX2_BC_BASE_MAX +_POSIX2_BC_DIM_MAX _POSIX2_BC_DIM_MAX +_POSIX2_BC_SCALE_MAX _POSIX2_BC_SCALE_MAX +_POSIX2_BC_STRING_MAX _POSIX2_BC_STRING_MAX +_POSIX2_CHARCLASS_NAME_MAX _POSIX2_CHARCLASS_NAME_MAX +_POSIX2_COLL_WEIGHTS_MAX _POSIX2_COLL_WEIGHTS_MAX +_POSIX2_EXPR_NEST_MAX _POSIX2_EXPR_NEST_MAX +_POSIX2_LINE_MAX _POSIX2_LINE_MAX +_POSIX2_RE_DUP_MAX _POSIX2_RE_DUP_MAX +EOF + +ifdef sysconf_l << EOF +AIO_LISTIO_MAX _SC_AIO_LISTIO_MAX +AIO_MAX _SC_AIO_MAX +AIO_PRIO_DELTA_MAX _SC_AIO_PRIO_DELTA_MAX +ARG_MAX _SC_ARG_MAX +ATEXIT_MAX _SC_ATEXIT_MAX +BC_BASE_MAX _SC_BC_BASE_MAX +BC_DIM_MAX _SC_BC_DIM_MAX +BC_SCALE_MAX _SC_BC_SCALE_MAX +BC_STRING_MAX _SC_BC_STRING_MAX +CHILD_MAX _SC_CHILD_MAX +COLL_WEIGHTS_MAX _SC_COLL_WEIGHTS_MAX +DELAYTIMER_MAX _SC_DELAYTIMER_MAX +EXPR_NEST_MAX _SC_EXPR_NEST_MAX +HOST_NAME_MAX _SC_HOST_NAME_MAX +IOV_MAX _SC_IOV_MAX +LINE_MAX _SC_LINE_MAX +LOGIN_NAME_MAX _SC_LOGIN_NAME_MAX +NGROUPS_MAX _SC_NGROUPS_MAX +MQ_OPEN_MAX _SC_MQ_OPEN_MAX +MQ_PRIO_MAX _SC_MQ_PRIO_MAX +OPEN_MAX _SC_OPEN_MAX +_POSIX_ADVISORY_INFO _SC_ADVISORY_INFO +_POSIX_BARRIERS _SC_BARRIERS +_POSIX_ASYNCHRONOUS_IO _SC_ASYNCHRONOUS_IO +_POSIX_CLOCK_SELECTION _SC_CLOCK_SELECTION +_POSIX_CPUTIME _SC_CPUTIME +_POSIX_FSYNC _SC_FSYNC +_POSIX_IPV6 _SC_IPV6 +_POSIX_JOB_CONTROL _SC_JOB_CONTROL +_POSIX_MAPPED_FILES _SC_MAPPED_FILES +_POSIX_MEMLOCK _SC_MEMLOCK +_POSIX_MEMLOCK_RANGE _SC_MEMLOCK_RANGE +_POSIX_MEMORY_PROTECTION _SC_MEMORY_PROTECTION +_POSIX_MESSAGE_PASSING _SC_MESSAGE_PASSING +_POSIX_MONOTONIC_CLOCK _SC_MONOTONIC_CLOCK +_POSIX_PRIORITIZED_IO _SC_PRIORITIZED_IO +_POSIX_PRIORITY_SCHEDULING _SC_PRIORITY_SCHEDULING +_POSIX_RAW_SOCKETS _SC_RAW_SOCKETS +_POSIX_READER_WRITER_LOCKS _SC_READER_WRITER_LOCKS +_POSIX_REALTIME_SIGNALS _SC_REALTIME_SIGNALS +_POSIX_REGEXP _SC_REGEXP +_POSIX_SAVED_IDS _SC_SAVED_IDS +_POSIX_SEMAPHORES _SC_SEMAPHORES +_POSIX_SHARED_MEMORY_OBJECTS _SC_SHARED_MEMORY_OBJECTS +_POSIX_SHELL _SC_SHELL +_POSIX_SPAWN _SC_SPAWN +_POSIX_SPIN_LOCKS _SC_SPIN_LOCKS +_POSIX_SPORADIC_SERVER _SC_SPORADIC_SERVER +_POSIX_SS_REPL_MAX _SC_SS_REPL_MAX +_POSIX_SYNCHRONIZED_IO _SC_SYNCHRONIZED_IO +_POSIX_THREAD_ATTR_STACKADDR _SC_THREAD_ATTR_STACKADDR +_POSIX_THREAD_ATTR_STACKSIZE _SC_THREAD_ATTR_STACKSIZE +_POSIX_THREAD_CPUTIME _SC_THREAD_CPUTIME +_POSIX_THREAD_PRIO_INHERIT _SC_THREAD_PRIO_INHERIT +_POSIX_THREAD_PRIO_PROTECT _SC_THREAD_PRIO_PROTECT +_POSIX_THREAD_PRIORITY_SCHEDULING _SC_THREAD_PRIORITY_SCHEDULING +_POSIX_THREAD_PROCESS_SHARED _SC_THREAD_PROCESS_SHARED +_POSIX_THREAD_ROBUST_PRIO_INHERIT _SC_THREAD_ROBUST_PRIO_INHERIT +_POSIX_THREAD_ROBUST_PRIO_PROTECT _SC_THREAD_ROBUST_PRIO_PROTECT +_POSIX_THREAD_SAFE_FUNCTIONS _SC_THREAD_SAFE_FUNCTIONS +_POSIX_THREAD_SPORADIC_SERVER _SC_THREAD_SPORADIC_SERVER +_POSIX_THREADS _SC_THREADS +_POSIX_TIMEOUTS _SC_TIMEOUTS +_POSIX_TIMERS _SC_TIMERS +_POSIX_TRACE _SC_TRACE +_POSIX_TRACE_EVENT_FILTER _SC_TRACE_EVENT_FILTER +_POSIX_TRACE_EVENT_NAME_MAX _SC_TRACE_EVENT_NAME_MAX +_POSIX_TRACE_INHERIT _SC_TRACE_INHERIT +_POSIX_TRACE_LOG _SC_TRACE_LOG +_POSIX_TRACE_NAME_MAX _SC_TRACE_NAME_MAX +_POSIX_TRACE_SYS_MAX _SC_TRACE_SYS_MAX +_POSIX_TRACE_USER_EVENT_MAX _SC_TRACE_USER_EVENT_MAX +_POSIX_TYPED_MEMORY_OBJECTS _SC_TYPED_MEMORY_OBJECTS +_POSIX_VERSION _SC_VERSION +_POSIX_V7_ILP32_OFF32 _SC_V7_ILP32_OFF32 +_POSIX_V7_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG +_POSIX_V7_LP64_OFF64 _SC_V7_LP64_OFF64 +_POSIX_V7_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG +_POSIX2_C_BIND _SC_2_C_BIND +_POSIX2_C_DEV _SC_2_C_DEV +_POSIX2_CHAR_TERM _SC_2_CHAR_TERM +_POSIX2_FORT_DEV _SC_2_FORT_DEV +_POSIX2_FORT_RUN _SC_2_FORT_RUN +_POSIX2_LOCALEDEF _SC_2_LOCALEDEF +_POSIX2_PBS _SC_2_PBS +_POSIX2_PBS_ACCOUNTING _SC_2_PBS_ACCOUNTING +_POSIX2_PBS_CHECKPOINT _SC_2_PBS_CHECKPOINT +_POSIX2_PBS_LOCATE _SC_2_PBS_LOCATE +_POSIX2_PBS_MESSAGE _SC_2_PBS_MESSAGE +_POSIX2_PBS_TRACK _SC_2_PBS_TRACK +_POSIX2_SW_DEV _SC_2_SW_DEV +_POSIX2_UPE _SC_2_UPE +_POSIX2_VERSION _SC_2_VERSION +PAGE_SIZE _SC_PAGE_SIZE +PAGESIZE _SC_PAGESIZE +PTHREAD_DESTRUCTOR_ITERATIONS _SC_THREAD_DESTRUCTOR_ITERATIONS +PTHREAD_KEYS_MAX _SC_THREAD_KEYS_MAX +PTHREAD_STACK_MIN _SC_THREAD_STACK_MIN +PTHREAD_THREADS_MAX _SC_THREAD_THREADS_MAX +RE_DUP_MAX _SC_RE_DUP_MAX +RTSIG_MAX _SC_RTSIG_MAX +SEM_NSEMS_MAX _SC_SEM_NSEMS_MAX +SEM_VALUE_MAX _SC_SEM_VALUE_MAX +SIGQUEUE_MAX _SC_SIGQUEUE_MAX +STREAM_MAX _SC_STREAM_MAX +SYMLOOP_MAX _SC_SYMLOOP_MAX +TIMER_MAX _SC_TIMER_MAX +TTY_NAME_MAX _SC_TTY_NAME_MAX +TZNAME_MAX _SC_TZNAME_MAX +_XOPEN_CRYPT _SC_XOPEN_CRYPT +_XOPEN_ENH_I18N _SC_XOPEN_ENH_I18N +_XOPEN_REALTIME _SC_XOPEN_REALTIME +_XOPEN_REALTIME_THREADS _SC_XOPEN_REALTIME_THREADS +_XOPEN_SHM _SC_XOPEN_SHM +_XOPEN_STREAMS _SC_XOPEN_STREAMS +_XOPEN_UNIX _SC_XOPEN_UNIX +_XOPEN_UUCP _SC_XOPEN_UUCP +_XOPEN_VERSION _SC_XOPEN_VERSION +EOF + +ifdef pathconf_l << EOF +FILESIZEBITS _PC_FILESIZEBITS +LINK_MAX _PC_LINK_MAX +MAX_CANON _PC_MAX_CANON +MAX_INPUT _PC_MAX_INPUT +NAME_MAX _PC_NAME_MAX +PATH_MAX _PC_PATH_MAX +PIPE_BUF _PC_PIPE_BUF +POSIX2_SYMLINKS _PC_2_SYMLINKS +POSIX_ALLOC_SIZE_MIN _PC_ALLOC_SIZE_MIN +POSIX_REC_INCR_XFER_SIZE _PC_REC_INCR_XFER_SIZE +POSIX_REC_MAX_XFER_SIZE _PC_REC_MAX_XFER_SIZE +POSIX_REC_MIN_XFER_SIZE _PC_REC_MIN_XFER_SIZE +POSIX_REC_XFER_ALIGN _PC_REC_XFER_ALIGN +SYMLINK_MAX _PC_SYMLINK_MAX +_POSIX_CHOWN_RESTRICTED _PC_CHOWN_RESTRICTED +_POSIX_NO_TRUNC _PC_NO_TRUNC +_POSIX_VDISABLE _PC_VDISABLE +_POSIX_ASYNC_IO _PC_ASYNC_IO +_POSIX_PRIO_IO _PC_PRIO_IO +_POSIX_SYNC_IO _PC_SYNC_IO +_POSIX_TIMESTAMP_RESOLUTION _PC_TIMESTAMP_RESOLUTION +EOF diff --git a/util/sbase/scripts/install b/util/sbase/scripts/install new file mode 100755 index 00000000..ce78c1da --- /dev/null +++ b/util/sbase/scripts/install @@ -0,0 +1,21 @@ +#!/bin/sh + +set -e + +while read type src dst perm +do + case $type in + d) + mkdir -p $src + ;; + c) + cp -f $src $dst + ;; + *) + echo install: wrong entry type >&2 + exit 1 + ;; + esac + + chmod $perm $dst +done < $1 diff --git a/util/sbase/scripts/mkbox b/util/sbase/scripts/mkbox new file mode 100755 index 00000000..99e40441 --- /dev/null +++ b/util/sbase/scripts/mkbox @@ -0,0 +1,103 @@ +#!/bin/sh + +trap "rm -rf build" INT QUIT TERM + +rm -rf build +mkdir -p build + +cp *.h build + +cat > build/sbase-box.c <<EOF +#include <unistd.h> + +#include <libgen.h> +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "util.h" +#include "sbase-box.h" + +struct cmd { + char *name; + int (*fn)(int, char **); +} cmds[] = { + {"install", xinstall_main}, + {"[", test_main}, +$(grep -l ^main *.c | +while read f +do + sed -n ' + /^main/ { + s/main/'${f%.c}'_main/ + s/-/_/g + w build/'$f' + s/\(^.*\)(.*)/ {"'${f%.c}'", \1},/p + d + } + w 'build/$f $f +done) + {NULL}, +}; + +static void +install(char *path) +{ + int r; + struct cmd *bp; + char fname[FILENAME_MAX]; + + if (path == NULL) { + fputs("sbase-box [-i path] [command]\n", stderr); + exit(1); + } + + for (bp = cmds; bp->name; ++bp) { + r = snprintf(fname, sizeof(fname), "%s/%s", path, bp->name); + if (r < 0 || r >= sizeof(fname)) { + fprintf(stderr, + "sbase-box: destination path truncated for '%s'\n", + bp->name); + exit(1); + } + remove(fname); + if (symlink("sbase-box", fname) < 0) { + fprintf(stderr, + "sbase-box: %s: %s\n", + bp->name, strerror(errno)); + exit(1); + } + } +} + +int +main(int argc, char *argv[]) +{ + char *s = basename(argv[0]); + struct cmd *bp; + + if (!strcmp(s, "sbase-box") && argc > 1) { + argc--; argv++; + if (strcmp(argv[0], "-i") == 0) { + install(argv[1]); + exit(0); + } + s = basename(argv[0]); + } + + for (bp = cmds; bp->name; ++bp) { + if (strcmp(bp->name, s) == 0) + return (*bp->fn)(argc, argv); + } + + for (bp = cmds; bp->name; ++bp) + printf("%s ", bp->name); + putchar('\n'); + + return 0; +} +EOF + +sed -n 's/.* \(.*_main\).*/int \1(int, char **);/p'\ + build/sbase-box.c > build/sbase-box.h diff --git a/util/sbase/scripts/mkproto b/util/sbase/scripts/mkproto new file mode 100755 index 00000000..192fe56b --- /dev/null +++ b/util/sbase/scripts/mkproto @@ -0,0 +1,24 @@ +#!/bin/sh + +usage() +{ + echo mkproto: prefix manprefix proto>&2 + exit 1 +} + +prefix=${1?$(usage)} +manprefix=${2?$(usage)} +proto=${3?$(usage)} + +trap "rm -f scripts/proto" EXIT INT QUIT TERM + +(set -e +echo d $prefix/bin $prefix/bin 755 +find . ! -name . -prune -type f \( -perm -u+x -o -perm -g+x -o -perm o+x \) | +sed "s@.*@c & $prefix/bin/& 755@" + +echo d $manprefix/man1 $manprefix/man1 755 +find . ! -name . -prune -name '*.1' | +sed "s@.*@c & $manprefix/man1/& 644@") > $proto + +trap "" EXIT INT QUIT TERM diff --git a/util/sbase/scripts/uninstall b/util/sbase/scripts/uninstall new file mode 100755 index 00000000..e9c74f2d --- /dev/null +++ b/util/sbase/scripts/uninstall @@ -0,0 +1,32 @@ +#!/bin/sh + +set -e + +while read type src dst perm +do + case $type in + d) + echo $type $src $dst $perm + continue + ;; + c) + rm -f $dst + ;; + *) + echo uninstall: wrong entry type >&2 + exit 1 + ;; + esac +done < $1 | +sort -r | +while read type src dst perm +do + case $type in + d) + if test `ls $dst | wc -l` -eq 0 + then + rmdir $dst + fi + ;; + esac +done diff --git a/util/sbase/sed.1 b/util/sbase/sed.1 new file mode 100644 index 00000000..18981aa7 --- /dev/null +++ b/util/sbase/sed.1 @@ -0,0 +1,173 @@ +.Dd October 8, 2015 +.Dt SED 1 +.Os sbase +.Sh NAME +.Nm sed +.Nd stream editor +.Sh SYNOPSIS +.Nm +.Op Fl nrE +.Ar script +.Op Ar file ... +.Nm +.Op Fl nrE +.Fl e Ar script +.Op Fl e Ar script +.Ar ... +.Op Fl f Ar scriptfile +.Ar ... +.Op Ar file ... +.Nm +.Op Fl nrE +.Op Fl e Ar script +.Ar ... +.Fl f Ar scriptfile +.Op Fl f Ar scriptfile +.Ar ... +.Op Ar file ... +.Sh DESCRIPTION +.Nm +reads line oriented output from +.Ar file +or stdin, applies the editing commands supplied by +.Ar script +or +.Ar scriptfile +and writes the edited stream to stdout. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl n +Suppress default printing at the end of each cycle. +.It Fl r E +Use extended regular expressions +.It Fl e Ar script +Append +.Ar script +to the list of editing commands. +.It Fl f Ar scriptfile +Append the commands from +.Ar scriptfile +to the list of editing commands. +.El +.Sh EXTENDED DESCRIPTION +Editing commands take the form: +.Pp +[address[,address]]function +.Pp +Commands can be separated by ';' or by a new line. +.Pp +Multiple functions for the specified address (or address-range) can be enclosed +in blocks with '{' and '}': +.Pp +[address[,address]] { function ; function } +.Ss Addresses +Addresses are either blank, a positive decimal integer denoting a line +number, the character '$' denoting the last line of input, or a regular +expression (in the format +.No / Ns +.Ar regexp Ns /). +A command with no addresses matches every line, one address matches +individual lines, and two addresses matches a range of lines from the +first to the second address inclusive. +.Pp +The character '!' may be appended after the addresses, +in which case the function is executed only if the addresses +.Em don't +match. +.Ss Functions +.Bl -tag -width Ds +.It Ar a Op Ar text +Append text to output after end of current cycle. +.It Ar b Op Ar label +Branch to label. +If no label is provided branch to end of script. +.It Ar c Op Ar text +Change. +Delete addressed range and output text after end of current cycle. +.It Ar d +Delete pattern space and begin next cycle. +.It Ar D +Delete pattern space up to and including first newline and begin new +cycle without reading input. +If there is no newline, behave like d. +.It Ar g +Get. +Replace the pattern space with the hold space. +.It Ar G +Get. +Append a newline and the hold space to the pattern space. +.It Ar h +Hold. +Replace the hold space with the pattern space. +.It Ar H +Hold. +Append a newline and the pattern space to the hold space. +.It Ar i Op Ar text +Insert text in output. +.It Ar l +List? Write the pattern space replacing known non printing characters with +backslash escaped versions (\\\\, \\a, \\b, \\f, \\r, \\t, \\v). +Print bad UTF-8 sequences as \\ooo where ooo is a three digit octal +number. +Mark end of lines with '$'. +.It Ar n +Next. +Write pattern space (unless +.Fl n ) , +read next line into pattern space, and continue current cycle. +If there is no next line, quit. +.It Ar N +Next. +Read next line, append newline and next line to pattern space, and +continue cycle. +If there is no next line, quit without printing current pattern space. +.It Ar p +Print current pattern space. +.It Ar P +Print current pattern space up to first newline. +.It Ar q +Quit. +.It Ar r file +Read file and write contents to output. +.It Ar s/re/text/flags +Find occurences of regular expression re in the pattern space and +replace with text. +A '&' in text is replaced with the entire match. +A \\d where d is a decimal digit 1-9 is replaced with the corresponding +match group from the regular expression. +\\n represents a newline in both the regular expression and replacement +text. +A literal newline in the replacement text must be preceded by a \\. +.Pp +Flags are +.Bl -tag -width Ds +.It Ar n +A positive decimal number denoting which match in the pattern space +to replace. +.It Ar g +Global. +Replace all matches in the pattern space. +.It Ar p +Print the pattern if a replacement was made. +.It Ar w file +Write the pattern space to file if a replacement was made. +.El +.It Ar t Op Ar label +Test. +Branch to corresponding label if a substitution has been made since the +last line was read or last t command was executed. +If no label is provided branch to end of script. +.It Ar w file +Write pattern space to file. +.It Ar x +Exchange hold space and pattern space. +.It Ar y/set1/set2/ +Replace each occurrence of a character from set 1 with the corresponding +character from set 2. +.It Ar :label +Create a label for b and t commands. +.It Ar #comment +The comment extends until the next newline. +.It Ar = +Write current input line number to output. +.El diff --git a/util/sbase/sed.c b/util/sbase/sed.c new file mode 100644 index 00000000..08471943 --- /dev/null +++ b/util/sbase/sed.c @@ -0,0 +1,1738 @@ +/* FIXME: summary + * decide whether we enforce valid UTF-8, right now it's enforced in certain + * parts of the script, but not the input... + * nul bytes cause explosions due to use of libc string functions. thoughts? + * lack of newline at end of file, currently we add one. what should we do? + * allow "\\t" for "\t" etc. in regex? in replacement text? + * POSIX says don't flush on N when out of input, but GNU and busybox do. + */ + +#include <ctype.h> +#include <errno.h> +#include <regex.h> +#include <stdlib.h> +#include <string.h> + +#include "utf.h" +#include "util.h" + +/* Types */ + +/* used as queue for writes and stack for {,:,b,t */ +typedef struct { + void **data; + size_t size; + size_t cap; +} Vec; + +/* used for arbitrary growth, str is a C string + * FIXME: does it make sense to keep track of length? or just rely on libc + * string functions? If we want to support nul bytes everything changes + */ +typedef struct { + char *str; + size_t cap; +} String; + +typedef struct Cmd Cmd; +typedef struct { + void (*fn)(Cmd *); + char *(*getarg)(Cmd *, char *); + void (*freearg)(Cmd *); + unsigned char naddr; +} Fninfo; + +typedef struct { + union { + size_t lineno; + regex_t *re; + } u; + enum { + IGNORE, /* empty address, ignore */ + EVERY , /* every line */ + LINE , /* line number */ + LAST , /* last line ($) */ + REGEX , /* use included regex */ + LASTRE, /* use most recently used regex */ + } type; +} Addr; + +/* DISCUSS: naddr is not strictly necessary, but very helpful + * naddr == 0 iff beg.type == EVERY && end.type == IGNORE + * naddr == 1 iff beg.type != IGNORE && end.type == IGNORE + * naddr == 2 iff beg.type != IGNORE && end.type != IGNORE + */ +typedef struct { + Addr beg; + Addr end; + unsigned char naddr; +} Range; + +typedef struct { + regex_t *re; /* if NULL use last regex */ + String repl; + FILE *file; + size_t occurrence; /* 0 for all (g flag) */ + Rune delim; + unsigned int p:1; +} Sarg; + +typedef struct { + Rune *set1; + Rune *set2; +} Yarg; + +typedef struct { + String str; /* a,c,i text. r file path */ + void (*print)(char *, FILE *); /* check_puts for a, write_file for r, unused for c,i */ +} ACIRarg; + +struct Cmd { + Range range; + Fninfo *fninfo; + union { + Cmd *jump; /* used for b,t when running */ + char *label; /* used for :,b,t when building */ + ptrdiff_t offset; /* used for { (pointers break during realloc) */ + FILE *file; /* used for w */ + + /* FIXME: Should the following be in the union? or pointers and malloc? */ + Sarg s; + Yarg y; + ACIRarg acir; + } u; /* I find your lack of anonymous unions disturbing */ + unsigned int in_match:1; + unsigned int negate :1; +}; + +/* Files for w command (and s' w flag) */ +typedef struct { + char *path; + FILE *file; +} Wfile; + +/* + * Function Declarations + */ + +/* Dynamically allocated arrays and strings */ +static void resize(void **ptr, size_t *nmemb, size_t size, size_t new_nmemb, void **next); +static void *pop(Vec *v); +static void push(Vec *v, void *p); +static void stracat(String *dst, char *src); +static void strnacat(String *dst, char *src, size_t n); +static void stracpy(String *dst, char *src); + +/* Cleanup and errors */ +static void usage(void); + +/* Parsing functions and related utilities */ +static void compile(char *s, int isfile); +static int read_line(FILE *f, String *s); +static char *make_range(Range *range, char *s); +static char *make_addr(Addr *addr, char *s); +static char *find_delim(char *s, Rune delim, int do_brackets); +static char *chompr(char *s, Rune rune); +static char *chomp(char *s); +static Rune *strtorunes(char *s, size_t nrunes); +static long stol(char *s, char **endp); +static size_t escapes(char *beg, char *end, Rune delim, int n_newline); +static size_t echarntorune(Rune *r, char *s, size_t n); +static void insert_labels(void); + +/* Get and Free arg and related utilities */ +static char *get_aci_arg(Cmd *c, char *s); +static void aci_append(Cmd *c, char *s); +static void free_acir_arg(Cmd *c); +static char *get_bt_arg(Cmd *c, char *s); +static char *get_r_arg(Cmd *c, char *s); +static char *get_s_arg(Cmd *c, char *s); +static void free_s_arg(Cmd *c); +static char *get_w_arg(Cmd *c, char *s); +static char *get_y_arg(Cmd *c, char *s); +static void free_y_arg(Cmd *c); +static char *get_colon_arg(Cmd *c, char *s); +static char *get_lbrace_arg(Cmd *c, char *s); +static char *get_rbrace_arg(Cmd *c, char *s); +static char *semicolon_arg(char *s); + +/* Running */ +static void run(void); +static int in_range(Cmd *c); +static int match_addr(Addr *a); +static int next_file(void); +static int is_eof(FILE *f); +static void do_writes(void); +static void write_file(char *path, FILE *out); +static void check_puts(char *s, FILE *f); +static void update_ranges(Cmd *beg, Cmd *end); + +/* Sed functions */ +static void cmd_y(Cmd *c); +static void cmd_x(Cmd *c); +static void cmd_w(Cmd *c); +static void cmd_t(Cmd *c); +static void cmd_s(Cmd *c); +static void cmd_r(Cmd *c); +static void cmd_q(Cmd *c); +static void cmd_P(Cmd *c); +static void cmd_p(Cmd *c); +static void cmd_N(Cmd *c); +static void cmd_n(Cmd *c); +static void cmd_l(Cmd *c); +static void cmd_i(Cmd *c); +static void cmd_H(Cmd *c); +static void cmd_h(Cmd *c); +static void cmd_G(Cmd *c); +static void cmd_g(Cmd *c); +static void cmd_D(Cmd *c); +static void cmd_d(Cmd *c); +static void cmd_c(Cmd *c); +static void cmd_b(Cmd *c); +static void cmd_a(Cmd *c); +static void cmd_colon(Cmd *c); +static void cmd_equal(Cmd *c); +static void cmd_lbrace(Cmd *c); +static void cmd_rbrace(Cmd *c); +static void cmd_last(Cmd *c); + +/* Actions */ +static void new_line(void); +static void app_line(void); +static void new_next(void); +static void old_next(void); + +/* + * Globals + */ +static Vec braces, labels, branches; /* holds ptrdiff_t. addrs of {, :, bt */ +static Vec writes; /* holds cmd*. writes scheduled by a and r commands */ +static Vec wfiles; /* holds Wfile*. files for w and s///w commands */ + +static Cmd *prog, *pc; /* Program, program counter */ +static size_t pcap; +static size_t lineno; + +static regex_t *lastre; /* last used regex for empty regex search */ +static char **files; /* list of file names from argv */ +static FILE *file; /* current file we are reading */ +static int ret; /* exit status */ + +static String patt, hold, genbuf; + +static struct { + unsigned int n :1; /* -n (no print) */ + unsigned int E :1; /* -E (extended re) */ + unsigned int s :1; /* s/// replacement happened */ + unsigned int aci_cont:1; /* a,c,i text continuation */ + unsigned int s_cont :1; /* s/// replacement text continuation */ + unsigned int halt :1; /* halt execution */ +} gflags; + +/* FIXME: move character inside Fninfo and only use 26*sizeof(Fninfo) instead of 127*sizeof(Fninfo) bytes */ +static Fninfo fns[] = { + ['a'] = { cmd_a , get_aci_arg , free_acir_arg , 1 }, /* schedule write of text for later */ + ['b'] = { cmd_b , get_bt_arg , NULL , 2 }, /* branch to label char *label when building, Cmd *jump when running */ + ['c'] = { cmd_c , get_aci_arg , free_acir_arg , 2 }, /* delete pattern space. at 0 or 1 addr or end of 2 addr, write text */ + ['d'] = { cmd_d , NULL , NULL , 2 }, /* delete pattern space */ + ['D'] = { cmd_D , NULL , NULL , 2 }, /* delete to first newline and start new cycle without reading (if no newline, d) */ + ['g'] = { cmd_g , NULL , NULL , 2 }, /* replace pattern space with hold space */ + ['G'] = { cmd_G , NULL , NULL , 2 }, /* append newline and hold space to pattern space */ + ['h'] = { cmd_h , NULL , NULL , 2 }, /* replace hold space with pattern space */ + ['H'] = { cmd_H , NULL , NULL , 2 }, /* append newline and pattern space to hold space */ + ['i'] = { cmd_i , get_aci_arg , free_acir_arg , 1 }, /* write text */ + ['l'] = { cmd_l , NULL , NULL , 2 }, /* write pattern space in 'visually unambiguous form' */ + ['n'] = { cmd_n , NULL , NULL , 2 }, /* write pattern space (unless -n) read to replace pattern space (if no input, quit) */ + ['N'] = { cmd_N , NULL , NULL , 2 }, /* append to pattern space separated by newline, line number changes (if no input, quit) */ + ['p'] = { cmd_p , NULL , NULL , 2 }, /* write pattern space */ + ['P'] = { cmd_P , NULL , NULL , 2 }, /* write pattern space up to first newline */ + ['q'] = { cmd_q , NULL , NULL , 1 }, /* quit */ + ['r'] = { cmd_r , get_r_arg , free_acir_arg , 1 }, /* write contents of file (unable to open/read treated as empty file) */ + ['s'] = { cmd_s , get_s_arg , free_s_arg , 2 }, /* find/replace/all that crazy s stuff */ + ['t'] = { cmd_t , get_bt_arg , NULL , 2 }, /* if s/// succeeded (since input or last t) branch to label (branch to end if no label) */ + ['w'] = { cmd_w , get_w_arg , NULL , 2 }, /* append pattern space to file */ + ['x'] = { cmd_x , NULL , NULL , 2 }, /* exchange pattern and hold spaces */ + ['y'] = { cmd_y , get_y_arg , free_y_arg , 2 }, /* replace runes in set1 with runes in set2 */ + [':'] = { cmd_colon , get_colon_arg , NULL , 0 }, /* defines label for later b and t commands */ + ['='] = { cmd_equal , NULL , NULL , 1 }, /* printf("%d\n", line_number); */ + ['{'] = { cmd_lbrace, get_lbrace_arg, NULL , 2 }, /* if we match, run commands, otherwise jump to close */ + ['}'] = { cmd_rbrace, get_rbrace_arg, NULL , 0 }, /* noop, hold onto open for ease of building scripts */ + + [0x7f] = { NULL, NULL, NULL, 0 }, /* index is checked with isascii(3p). fill out rest of array */ +}; + +/* + * Function Definitions + */ + +/* given memory pointed to by *ptr that currently holds *nmemb members of size + * size, realloc to hold new_nmemb members, return new_nmemb in *memb and one + * past old end in *next. if realloc fails...explode + */ +static void +resize(void **ptr, size_t *nmemb, size_t size, size_t new_nmemb, void **next) +{ + void *n, *tmp; + + if (new_nmemb) { + tmp = ereallocarray(*ptr, new_nmemb, size); + } else { /* turns out realloc(*ptr, 0) != free(*ptr) */ + free(*ptr); + tmp = NULL; + } + n = (char *)tmp + *nmemb * size; + *nmemb = new_nmemb; + *ptr = tmp; + if (next) + *next = n; +} + +static void * +pop(Vec *v) +{ + if (!v->size) + return NULL; + return v->data[--v->size]; +} + +static void +push(Vec *v, void *p) +{ + if (v->size == v->cap) + resize((void **)&v->data, &v->cap, sizeof(*v->data), v->cap * 2 + 1, NULL); + v->data[v->size++] = p; +} + +static void +stracat(String *dst, char *src) +{ + int new = !dst->cap; + size_t len; + + len = (new ? 0 : strlen(dst->str)) + strlen(src) + 1; + if (dst->cap < len) + resize((void **)&dst->str, &dst->cap, 1, len * 2, NULL); + if (new) + *dst->str = '\0'; + strcat(dst->str, src); +} + +static void +strnacat(String *dst, char *src, size_t n) +{ + int new = !dst->cap; + size_t len; + + len = strlen(src); + len = (new ? 0 : strlen(dst->str)) + MIN(n, len) + 1; + if (dst->cap < len) + resize((void **)&dst->str, &dst->cap, 1, len * 2, NULL); + if (new) + *dst->str = '\0'; + strlcat(dst->str, src, len); +} + +static void +stracpy(String *dst, char *src) +{ + size_t len; + + len = strlen(src) + 1; + if (dst->cap < len) + resize((void **)&dst->str, &dst->cap, 1, len * 2, NULL); + strcpy(dst->str, src); +} + +static void +leprintf(char *s) +{ + if (errno) + eprintf("%zu: %s: %s\n", lineno, s, strerror(errno)); + else + eprintf("%zu: %s\n", lineno, s); +} + +/* FIXME: write usage message */ +static void +usage(void) +{ + eprintf("usage: sed [-nrE] script [file ...]\n" + " sed [-nrE] -e script [-e script] ... [-f scriptfile] ... [file ...]\n" + " sed [-nrE] [-e script] ... -f scriptfile [-f scriptfile] ... [file ...]\n"); +} + +/* Differences from POSIX + * we allows semicolons and trailing blanks inside {} + * we allow spaces after ! (and in between !s) + * we allow extended regular expressions (-E) + */ +static void +compile(char *s, int isfile) +{ + FILE *f; + + if (isfile) { + f = fopen(s, "r"); + if (!f) + eprintf("fopen %s:", s); + } else { + if (!*s) /* empty string script */ + return; + f = fmemopen(s, strlen(s), "r"); + if (!f) + eprintf("fmemopen:"); + } + + /* NOTE: get arg functions can't use genbuf */ + while (read_line(f, &genbuf) != EOF) { + s = genbuf.str; + + /* if the first two characters of the script are "#n" default output shall be suppressed */ + if (++lineno == 1 && *s == '#' && s[1] == 'n') { + gflags.n = 1; + continue; + } + + if (gflags.aci_cont) { + aci_append(pc - 1, s); + continue; + } + if (gflags.s_cont) + s = (pc - 1)->fninfo->getarg(pc - 1, s); + + while (*s) { + s = chompr(s, ';'); + if (!*s || *s == '#') + break; + + if ((size_t)(pc - prog) == pcap) + resize((void **)&prog, &pcap, sizeof(*prog), pcap * 2 + 1, (void **)&pc); + + pc->range.beg.type = pc->range.end.type = IGNORE; + pc->fninfo = NULL; + pc->in_match = 0; + + s = make_range(&pc->range, s); + s = chomp(s); + pc->negate = *s == '!'; + s = chompr(s, '!'); + + if (!isascii(*s) || !(pc->fninfo = &fns[(unsigned)*s])->fn) + leprintf("bad sed function"); + if (pc->range.naddr > pc->fninfo->naddr) + leprintf("wrong number of addresses"); + s++; + + if (pc->fninfo->getarg) + s = pc->fninfo->getarg(pc, s); + + pc++; + } + } + + fshut(f, s); +} + +/* FIXME: if we decide to honor lack of trailing newline, set/clear a global + * flag when reading a line + */ +static int +read_line(FILE *f, String *s) +{ + ssize_t len; + + if (!f) + return EOF; + + if ((len = getline(&s->str, &s->cap, f)) < 0) { + if (ferror(f)) + eprintf("getline:"); + return EOF; + } + if (s->str[--len] == '\n') + s->str[len] = '\0'; + return 0; +} + +/* read first range from s, return pointer to one past end of range */ +static char * +make_range(Range *range, char *s) +{ + s = make_addr(&range->beg, s); + + if (*s == ',') + s = make_addr(&range->end, s + 1); + else + range->end.type = IGNORE; + + if (range->beg.type == EVERY && range->end.type == IGNORE) range->naddr = 0; + else if (range->beg.type != IGNORE && range->end.type == IGNORE) range->naddr = 1; + else if (range->beg.type != IGNORE && range->end.type != IGNORE) range->naddr = 2; + else leprintf("this is impossible..."); + + return s; +} + +/* read first addr from s, return pointer to one past end of addr */ +static char * +make_addr(Addr *addr, char *s) +{ + Rune r; + char *p = s + strlen(s); + size_t rlen = echarntorune(&r, s, p - s); + + if (r == '$') { + addr->type = LAST; + s += rlen; + } else if (isdigitrune(r)) { + addr->type = LINE; + addr->u.lineno = stol(s, &s); + } else if (r == '/' || r == '\\') { + Rune delim; + if (r == '\\') { + s += rlen; + rlen = echarntorune(&r, s, p - s); + } + if (r == '\\') + leprintf("bad delimiter '\\'"); + delim = r; + s += rlen; + rlen = echarntorune(&r, s, p - s); + if (r == delim) { + addr->type = LASTRE; + s += rlen; + } else { + addr->type = REGEX; + p = find_delim(s, delim, 1); + if (!*p) + leprintf("unclosed regex"); + p -= escapes(s, p, delim, 0); + *p++ = '\0'; + addr->u.re = emalloc(sizeof(*addr->u.re)); + eregcomp(addr->u.re, s, gflags.E ? REG_EXTENDED : 0); + s = p; + } + } else { + addr->type = EVERY; + } + + return s; +} + +/* return pointer to first delim in s that is not escaped + * and if do_brackets is set, not in [] (note possible [::], [..], [==], inside []) + * return pointer to trailing nul byte if no delim found + * + * any escaped character that is not special is just itself (POSIX undefined) + * FIXME: pull out into some util thing, will be useful for ed as well + */ +static char * +find_delim(char *s, Rune delim, int do_brackets) +{ + enum { + OUTSIDE , /* not in brackets */ + BRACKETS_OPENING, /* last char was first [ or last two were first [^ */ + BRACKETS_INSIDE , /* inside [] */ + INSIDE_OPENING , /* inside [] and last char was [ */ + CLASS_INSIDE , /* inside class [::], or colating element [..] or [==], inside [] */ + CLASS_CLOSING , /* inside class [::], or colating element [..] or [==], and last character was the respective : . or = */ + } state = OUTSIDE; + + Rune r, c = 0; /* no c won't be used uninitialized, shutup -Wall */ + size_t rlen; + int escape = 0; + char *end = s + strlen(s); + + for (; *s; s += rlen) { + rlen = echarntorune(&r, s, end - s); + + if (state == BRACKETS_OPENING && r == '^' ) { continue; } + else if (state == BRACKETS_OPENING && r == ']' ) { state = BRACKETS_INSIDE ; continue; } + else if (state == BRACKETS_OPENING ) { state = BRACKETS_INSIDE ; } + + if (state == CLASS_CLOSING && r == ']' ) { state = BRACKETS_INSIDE ; } + else if (state == CLASS_CLOSING ) { state = CLASS_INSIDE ; } + else if (state == CLASS_INSIDE && r == c ) { state = CLASS_CLOSING ; } + else if (state == INSIDE_OPENING && (r == ':' || + r == '.' || + r == '=') ) { state = CLASS_INSIDE ; c = r; } + else if (state == INSIDE_OPENING && r == ']' ) { state = OUTSIDE ; } + else if (state == INSIDE_OPENING ) { state = BRACKETS_INSIDE ; } + else if (state == BRACKETS_INSIDE && r == '[' ) { state = INSIDE_OPENING ; } + else if (state == BRACKETS_INSIDE && r == ']' ) { state = OUTSIDE ; } + else if (state == OUTSIDE && escape ) { escape = 0 ; } + else if (state == OUTSIDE && r == '\\' ) { escape = 1 ; } + else if (state == OUTSIDE && r == delim) return s; + else if (state == OUTSIDE && do_brackets && r == '[' ) { state = BRACKETS_OPENING; } + } + return s; +} + +static char * +chomp(char *s) +{ + return chompr(s, 0); +} + +/* eat all leading whitespace and occurrences of rune */ +static char * +chompr(char *s, Rune rune) +{ + Rune r; + size_t rlen; + char *end = s + strlen(s); + + while (*s && (rlen = echarntorune(&r, s, end - s)) && (isspacerune(r) || r == rune)) + s += rlen; + return s; +} + +/* convert first nrunes Runes from UTF-8 string s in allocated Rune* + * NOTE: sequence must be valid UTF-8, check first */ +static Rune * +strtorunes(char *s, size_t nrunes) +{ + Rune *rs, *rp; + + rp = rs = ereallocarray(NULL, nrunes + 1, sizeof(*rs)); + + while (nrunes--) + s += chartorune(rp++, s); + + *rp = '\0'; + return rs; +} + +static long +stol(char *s, char **endp) +{ + long n; + errno = 0; + n = strtol(s, endp, 10); + + if (errno) + leprintf("strtol:"); + if (*endp == s) + leprintf("strtol: invalid number"); + + return n; +} + +/* from beg to end replace "\\d" with "d" and "\\n" with "\n" (where d is delim) + * if delim is 'n' and n_newline is 0 then "\\n" is replaced with "n" (normal) + * if delim is 'n' and n_newline is 1 then "\\n" is replaced with "\n" (y command) + * if delim is 0 all escaped characters represent themselves (aci text) + * memmove rest of string (beyond end) into place + * return the number of converted escapes (backslashes removed) + * FIXME: this has had too many corner cases slapped on and is ugly. rewrite better + */ +static size_t +escapes(char *beg, char *end, Rune delim, int n_newline) +{ + size_t num = 0; + char *src = beg, *dst = beg; + + while (src < end) { + /* handle escaped backslash specially so we don't think the second + * backslash is escaping something */ + if (*src == '\\' && src[1] == '\\') { + *dst++ = *src++; + if (delim) + *dst++ = *src++; + else + src++; + } else if (*src == '\\' && !delim) { + src++; + } else if (*src == '\\' && src[1]) { + Rune r; + size_t rlen; + num++; + src++; + rlen = echarntorune(&r, src, end - src); + + if (r == 'n' && delim == 'n') { + *src = n_newline ? '\n' : 'n'; /* src so we can still memmove() */ + } else if (r == 'n') { + *src = '\n'; + } else if (r != delim) { + *dst++ = '\\'; + num--; + } + + memmove(dst, src, rlen); + dst += rlen; + src += rlen; + } else { + *dst++ = *src++; + } + } + memmove(dst, src, strlen(src) + 1); + return num; +} + +static size_t +echarntorune(Rune *r, char *s, size_t n) +{ + size_t rlen = charntorune(r, s, n); + if (!rlen || *r == Runeerror) + leprintf("invalid UTF-8"); + return rlen; +} + +static void +insert_labels(void) +{ + size_t i; + Cmd *from, *to; + + while (branches.size) { + from = prog + (ptrdiff_t)pop(&branches); + + if (!from->u.label) {/* no label branch to end of script */ + from->u.jump = pc - 1; + } else { + for (i = 0; i < labels.size; i++) { + to = prog + (ptrdiff_t)labels.data[i]; + if (!strcmp(from->u.label, to->u.label)) { + from->u.jump = to; + break; + } + } + if (i == labels.size) + leprintf("bad label"); + } + } +} + +/* + * Getargs / Freeargs + * Read argument from s, return pointer to one past last character of argument + */ + +/* POSIX compliant + * i\ + * foobar + * + * also allow the following non POSIX compliant + * i # empty line + * ifoobar + * ifoobar\ + * baz + * + * FIXME: GNU and busybox discard leading spaces + * i foobar + * i foobar + * ifoobar + * are equivalent in GNU and busybox. We don't. Should we? + */ +static char * +get_aci_arg(Cmd *c, char *s) +{ + c->u.acir.print = check_puts; + c->u.acir.str = (String){ NULL, 0 }; + + gflags.aci_cont = !!*s; /* no continue flag if empty string */ + + /* neither empty string nor POSIX compliant */ + if (*s && !(*s == '\\' && !s[1])) + aci_append(c, s); + + return s + strlen(s); +} + +static void +aci_append(Cmd *c, char *s) +{ + char *end = s + strlen(s), *p = end; + + gflags.aci_cont = 0; + while (--p >= s && *p == '\\') + gflags.aci_cont = !gflags.aci_cont; + + if (gflags.aci_cont) + *--end = '\n'; + + escapes(s, end, 0, 0); + stracat(&c->u.acir.str, s); +} + +static void +free_acir_arg(Cmd *c) +{ + free(c->u.acir.str.str); +} + +/* POSIX dictates that label is rest of line, including semicolons, trailing + * whitespace, closing braces, etc. and can be limited to 8 bytes + * + * I allow a semicolon or closing brace to terminate a label name, it's not + * POSIX compliant, but it's useful and every sed version I've tried to date + * does the same. + * + * FIXME: POSIX dictates that leading whitespace is ignored but trailing + * whitespace is not. This is annoying and we should probably get rid of it. + */ +static char * +get_bt_arg(Cmd *c, char *s) +{ + char *p = semicolon_arg(s = chomp(s)); + + if (p != s) { + c->u.label = estrndup(s, p - s); + } else { + c->u.label = NULL; + } + + push(&branches, (void *)(c - prog)); + + return p; +} + +/* POSIX dictates file name is rest of line including semicolons, trailing + * whitespace, closing braces, etc. and file name must be preceded by a space + * + * I allow a semicolon or closing brace to terminate a file name and don't + * enforce leading space. + * + * FIXME: decide whether trailing whitespace should be included and fix + * accordingly + */ +static char * +get_r_arg(Cmd *c, char *s) +{ + char *p = semicolon_arg(s = chomp(s)); + + if (p == s) + leprintf("no file name"); + + c->u.acir.str.str = estrndup(s, p - s); + c->u.acir.print = write_file; + + return p; +} + +/* we allow "\\n" in replacement text to mean "\n" (undefined in POSIX) + * + * FIXME: allow other escapes in regex and replacement? if so change escapes() + */ +static char * +get_s_arg(Cmd *c, char *s) +{ + Rune delim, r; + Cmd buf; + char *p; + int esc, lastre; + + /* s/Find/Replace/Flags */ + + /* Find */ + if (!gflags.s_cont) { /* NOT continuing from literal newline in replacement text */ + lastre = 0; + c->u.s.repl = (String){ NULL, 0 }; + c->u.s.occurrence = 1; + c->u.s.file = NULL; + c->u.s.p = 0; + + if (!*s || *s == '\\') + leprintf("bad delimiter"); + + p = s + strlen(s); + s += echarntorune(&delim, s, p - s); + c->u.s.delim = delim; + + echarntorune(&r, s, p - s); + if (r == delim) /* empty regex */ + lastre = 1; + + p = find_delim(s, delim, 1); + if (!*p) + leprintf("missing second delimiter"); + p -= escapes(s, p, delim, 0); + *p = '\0'; + + if (lastre) { + c->u.s.re = NULL; + } else { + c->u.s.re = emalloc(sizeof(*c->u.s.re)); + /* FIXME: different eregcomp that calls fatal */ + eregcomp(c->u.s.re, s, gflags.E ? REG_EXTENDED : 0); + } + s = p + runelen(delim); + } + + /* Replace */ + delim = c->u.s.delim; + + p = find_delim(s, delim, 0); + p -= escapes(s, p, delim, 0); + if (!*p) { /* no third delimiter */ + /* FIXME: same backslash counting as aci_append() */ + if (p[-1] != '\\') + leprintf("missing third delimiter or <backslash><newline>"); + p[-1] = '\n'; + gflags.s_cont = 1; + } else { + gflags.s_cont = 0; + } + + /* check for bad references in replacement text */ + *p = '\0'; + for (esc = 0, p = s; *p; p++) { + if (esc) { + esc = 0; + if (isdigit(*p) && c->u.s.re && (size_t)(*p - '0') > c->u.s.re->re_nsub) + leprintf("back reference number greater than number of groups"); + } else if (*p == '\\') { + esc = 1; + } + } + stracat(&c->u.s.repl, s); + + if (gflags.s_cont) + return p; + + s = p + runelen(delim); + + /* Flags */ + p = semicolon_arg(s = chomp(s)); + + /* FIXME: currently for simplicity take last of g or occurrence flags and + * ignore multiple p flags. need to fix that */ + for (; s < p; s++) { + if (isdigit(*s)) { + c->u.s.occurrence = stol(s, &s); + s--; /* for loop will advance pointer */ + } else { + switch (*s) { + case 'g': c->u.s.occurrence = 0; break; + case 'p': c->u.s.p = 1; break; + case 'w': + /* must be last flag, take everything up to newline/semicolon + * s == p after this */ + s = get_w_arg(&buf, chomp(s+1)); + c->u.s.file = buf.u.file; + break; + } + } + } + return p; +} + +static void +free_s_arg(Cmd *c) +{ + if (c->u.s.re) + regfree(c->u.s.re); + free(c->u.s.re); + free(c->u.s.repl.str); +} + +/* see get_r_arg notes */ +static char * +get_w_arg(Cmd *c, char *s) +{ + char *p = semicolon_arg(s = chomp(s)); + Wfile *w, **wp; + + if (p == s) + leprintf("no file name"); + + for (wp = (Wfile **)wfiles.data; (size_t)(wp - (Wfile **)wfiles.data) < wfiles.size; wp++) { + if (strlen((*wp)->path) == (size_t)(p - s) && !strncmp(s, (*wp)->path, p - s)) { + c->u.file = (*wp)->file; + return p; + } + } + + w = emalloc(sizeof(*w)); + w->path = estrndup(s, p - s); + + if (!(w->file = fopen(w->path, "w"))) + leprintf("fopen failed"); + + c->u.file = w->file; + + push(&wfiles, w); + return p; +} + +static char * +get_y_arg(Cmd *c, char *s) +{ + Rune delim; + char *p = s + strlen(s); + size_t rlen = echarntorune(&delim, s, p - s); + size_t nrunes1, nrunes2; + + c->u.y.set1 = c->u.y.set2 = NULL; + + s += rlen; + p = find_delim(s, delim, 0); + p -= escapes(s, p, delim, 1); + nrunes1 = utfnlen(s, p - s); + c->u.y.set1 = strtorunes(s, nrunes1); + + s = p + rlen; + p = find_delim(s, delim, 0); + p -= escapes(s, p, delim, 1); + nrunes2 = utfnlen(s, p - s); + + if (nrunes1 != nrunes2) + leprintf("different set lengths"); + + c->u.y.set2 = strtorunes(s, utfnlen(s, p - s)); + + return p + rlen; +} + +static void +free_y_arg(Cmd *c) +{ + free(c->u.y.set1); + free(c->u.y.set2); +} + +/* see get_bt_arg notes */ +static char * +get_colon_arg(Cmd *c, char *s) +{ + char *p = semicolon_arg(s = chomp(s)); + + if (p == s) + leprintf("no label name"); + + c->u.label = estrndup(s, p - s); + push(&labels, (void *)(c - prog)); + return p; +} + +static char * +get_lbrace_arg(Cmd *c, char *s) +{ + push(&braces, (void *)(c - prog)); + return s; +} + +static char * +get_rbrace_arg(Cmd *c, char *s) +{ + Cmd *lbrace; + + if (!braces.size) + leprintf("extra }"); + + lbrace = prog + (ptrdiff_t)pop(&braces); + lbrace->u.offset = c - prog; + return s; +} + +/* s points to beginning of an argument that may be semicolon terminated + * return pointer to semicolon or nul byte after string + * or closing brace as to not force ; before } + * FIXME: decide whether or not to eat trailing whitespace for arguments that + * we allow semicolon/brace termination that POSIX doesn't + * b, r, t, w, : + * POSIX says trailing whitespace is part of label name, file name, etc. + * we should probably eat it + */ +static char * +semicolon_arg(char *s) +{ + char *p = strpbrk(s, ";}"); + if (!p) + p = s + strlen(s); + return p; +} + +static void +run(void) +{ + lineno = 0; + if (braces.size) + leprintf("extra {"); + + /* genbuf has already been initialized, patt will be in new_line + * (or we'll halt) */ + stracpy(&hold, ""); + + insert_labels(); + next_file(); + new_line(); + + for (pc = prog; !gflags.halt; pc++) + pc->fninfo->fn(pc); +} + +/* return true if we are in range for c, set c->in_match appropriately */ +static int +in_range(Cmd *c) +{ + if (match_addr(&c->range.beg)) { + if (c->range.naddr == 2) { + if (c->range.end.type == LINE && c->range.end.u.lineno <= lineno) + c->in_match = 0; + else + c->in_match = 1; + } + return !c->negate; + } + if (c->in_match && match_addr(&c->range.end)) { + c->in_match = 0; + return !c->negate; + } + return c->in_match ^ c->negate; +} + +/* return true if addr matches current line */ +static int +match_addr(Addr *a) +{ + switch (a->type) { + default: + case IGNORE: return 0; + case EVERY: return 1; + case LINE: return lineno == a->u.lineno; + case LAST: + while (is_eof(file) && !next_file()) + ; + return !file; + case REGEX: + lastre = a->u.re; + return !regexec(a->u.re, patt.str, 0, NULL, 0); + case LASTRE: + if (!lastre) + leprintf("no previous regex"); + return !regexec(lastre, patt.str, 0, NULL, 0); + } +} + +/* move to next input file + * stdin if first call and no files + * return 0 for success and 1 for no more files + */ +static int +next_file(void) +{ + static unsigned char first = 1; + + if (file == stdin) + clearerr(file); + else if (file) + fshut(file, "<file>"); + /* given no files, default to stdin */ + file = first && !*files ? stdin : NULL; + first = 0; + + while (!file && *files) { + if (!strcmp(*files, "-")) { + file = stdin; + } else if (!(file = fopen(*files, "r"))) { + /* warn this file didn't open, but move on to next */ + weprintf("fopen %s:", *files); + ret = 1; + } + files++; + } + + return !file; +} + +/* test if stream is at EOF */ +static int +is_eof(FILE *f) +{ + int c; + + if (!f || feof(f)) + return 1; + + c = fgetc(f); + if (c == EOF && ferror(f)) + eprintf("fgetc:"); + if (c != EOF && ungetc(c, f) == EOF) + eprintf("ungetc EOF\n"); + + return c == EOF; +} + +/* perform writes that were scheduled + * for aci this is check_puts(string, stdout) + * for r this is write_file(path, stdout) + */ +static void +do_writes(void) +{ + Cmd *c; + size_t i; + + for (i = 0; i < writes.size; i++) { + c = writes.data[i]; + c->u.acir.print(c->u.acir.str.str, stdout); + } + writes.size = 0; +} + +/* used for r's u.acir.print() + * FIXME: something like util's concat() would be better + */ +static void +write_file(char *path, FILE *out) +{ + FILE *in = fopen(path, "r"); + if (!in) /* no file is treated as empty file */ + return; + + while (read_line(in, &genbuf) != EOF) + check_puts(genbuf.str, out); + + fshut(in, path); +} + +static void +check_puts(char *s, FILE *f) +{ + if (s && fputs(s, f) == EOF) + eprintf("fputs:"); + if (fputs("\n", f) == EOF) + eprintf("fputs:"); +} + +/* iterate from beg to end updating ranges so we don't miss any commands + * e.g. sed -n '1d;1,3p' should still print lines 2 and 3 + */ +static void +update_ranges(Cmd *beg, Cmd *end) +{ + while (beg < end) + in_range(beg++); +} + +/* + * Sed functions + */ +static void +cmd_a(Cmd *c) +{ + if (in_range(c)) + push(&writes, c); +} + +static void +cmd_b(Cmd *c) +{ + if (!in_range(c)) + return; + + /* if we jump backwards update to end, otherwise update to destination */ + update_ranges(c + 1, c->u.jump > c ? c->u.jump : prog + pcap); + pc = c->u.jump; +} + +static void +cmd_c(Cmd *c) +{ + if (!in_range(c)) + return; + + /* write the text on the last line of the match */ + if (!c->in_match) + check_puts(c->u.acir.str.str, stdout); + /* otherwise start the next cycle without printing pattern space + * effectively deleting the text */ + new_next(); +} + +static void +cmd_d(Cmd *c) +{ + if (!in_range(c)) + return; + + new_next(); +} + +static void +cmd_D(Cmd *c) +{ + char *p; + + if (!in_range(c)) + return; + + if ((p = strchr(patt.str, '\n'))) { + p++; + memmove(patt.str, p, strlen(p) + 1); + old_next(); + } else { + new_next(); + } +} + +static void +cmd_g(Cmd *c) +{ + if (in_range(c)) + stracpy(&patt, hold.str); +} + +static void +cmd_G(Cmd *c) +{ + if (!in_range(c)) + return; + + stracat(&patt, "\n"); + stracat(&patt, hold.str); +} + +static void +cmd_h(Cmd *c) +{ + if (in_range(c)) + stracpy(&hold, patt.str); +} + +static void +cmd_H(Cmd *c) +{ + if (!in_range(c)) + return; + + stracat(&hold, "\n"); + stracat(&hold, patt.str); +} + +static void +cmd_i(Cmd *c) +{ + if (in_range(c)) + check_puts(c->u.acir.str.str, stdout); +} + +/* I think it makes sense to print invalid UTF-8 sequences in octal to satisfy + * the "visually unambiguous form" sed(1p) + */ +static void +cmd_l(Cmd *c) +{ + Rune r; + char *p, *end; + size_t rlen; + + char *escapes[] = { /* FIXME: 7 entries and search instead of 127 */ + ['\\'] = "\\\\", ['\a'] = "\\a", ['\b'] = "\\b", + ['\f'] = "\\f" , ['\r'] = "\\r", ['\t'] = "\\t", + ['\v'] = "\\v" , [0x7f] = NULL, /* fill out the table */ + }; + + if (!in_range(c)) + return; + + /* FIXME: line wrapping. sed(1p) says "length at which folding occurs is + * unspecified, but should be appropraite for the output device" + * just wrap at 80 Runes? + */ + for (p = patt.str, end = p + strlen(p); p < end; p += rlen) { + if (isascii(*p) && escapes[(unsigned int)*p]) { + fputs(escapes[(unsigned int)*p], stdout); + rlen = 1; + } else if (!(rlen = charntorune(&r, p, end - p))) { + /* ran out of chars, print the bytes of the short sequence */ + for (; p < end; p++) + printf("\\%03hho", (unsigned char)*p); + break; + } else if (r == Runeerror) { + for (; rlen; rlen--, p++) + printf("\\%03hho", (unsigned char)*p); + } else { + while (fwrite(p, rlen, 1, stdout) < 1 && errno == EINTR) + ; + if (ferror(stdout)) + eprintf("fwrite:"); + } + } + check_puts("$", stdout); +} + +static void +cmd_n(Cmd *c) +{ + if (!in_range(c)) + return; + + if (!gflags.n) + check_puts(patt.str, stdout); + do_writes(); + new_line(); +} + +static void +cmd_N(Cmd *c) +{ + if (!in_range(c)) + return; + do_writes(); + app_line(); +} + +static void +cmd_p(Cmd *c) +{ + if (in_range(c)) + check_puts(patt.str, stdout); +} + +static void +cmd_P(Cmd *c) +{ + char *p; + + if (!in_range(c)) + return; + + if ((p = strchr(patt.str, '\n'))) + *p = '\0'; + + check_puts(patt.str, stdout); + + if (p) + *p = '\n'; +} + +static void +cmd_q(Cmd *c) +{ + if (!in_range(c)) + return; + + if (!gflags.n) + check_puts(patt.str, stdout); + do_writes(); + gflags.halt = 1; +} + +static void +cmd_r(Cmd *c) +{ + if (in_range(c)) + push(&writes, c); +} + +static void +cmd_s(Cmd *c) +{ + String tmp; + Rune r; + size_t plen, rlen, len; + char *p, *s, *end; + unsigned int matches = 0, last_empty = 1, qflag = 0, cflags = 0; + regex_t *re; + regmatch_t *rm, *pmatch = NULL; + + if (!in_range(c)) + return; + + if (!c->u.s.re && !lastre) + leprintf("no previous regex"); + + re = c->u.s.re ? c->u.s.re : lastre; + lastre = re; + + plen = re->re_nsub + 1; + pmatch = ereallocarray(NULL, plen, sizeof(regmatch_t)); + + *genbuf.str = '\0'; + s = patt.str; + + while (!qflag && !regexec(re, s, plen, pmatch, cflags)) { + cflags = REG_NOTBOL; /* match against beginning of line first time, but not again */ + if (!*s) /* match against empty string first time, but not again */ + qflag = 1; + + /* don't substitute if last match was not empty but this one is. + * s_a*_._g + * foobar -> .f.o.o.b.r. + */ + if ((last_empty || pmatch[0].rm_eo) && + (++matches == c->u.s.occurrence || !c->u.s.occurrence)) { + /* copy over everything before the match */ + strnacat(&genbuf, s, pmatch[0].rm_so); + + /* copy over replacement text, taking into account &, backreferences, and \ escapes */ + for (p = c->u.s.repl.str, len = strcspn(p, "\\&"); *p; len = strcspn(++p, "\\&")) { + strnacat(&genbuf, p, len); + p += len; + switch (*p) { + default: leprintf("this shouldn't be possible"); + case '\0': + /* we're at the end, back up one so the ++p will put us on + * the null byte to break out of the loop */ + --p; + break; + case '&': + strnacat(&genbuf, s + pmatch[0].rm_so, pmatch[0].rm_eo - pmatch[0].rm_so); + break; + case '\\': + if (isdigit(*++p)) { /* backreference */ + /* only need to check here if using lastre, otherwise we checked when building */ + if (!c->u.s.re && (size_t)(*p - '0') > re->re_nsub) + leprintf("back reference number greater than number of groups"); + rm = &pmatch[*p - '0']; + strnacat(&genbuf, s + rm->rm_so, rm->rm_eo - rm->rm_so); + } else { /* character after backslash taken literally (well one byte, but it works) */ + strnacat(&genbuf, p, 1); + } + break; + } + } + } else { + /* not replacing, copy over everything up to and including the match */ + strnacat(&genbuf, s, pmatch[0].rm_eo); + } + + if (!pmatch[0].rm_eo) { /* empty match, advance one rune and add it to output */ + end = s + strlen(s); + rlen = charntorune(&r, s, end - s); + + if (!rlen) { /* ran out of bytes, copy short sequence */ + stracat(&genbuf, s); + s = end; + } else { /* copy whether or not it's a good rune */ + strnacat(&genbuf, s, rlen); + s += rlen; + } + } + last_empty = !pmatch[0].rm_eo; + s += pmatch[0].rm_eo; + } + free(pmatch); + + if (!(matches && matches >= c->u.s.occurrence)) /* no replacement */ + return; + + gflags.s = 1; + + stracat(&genbuf, s); + + tmp = patt; + patt = genbuf; + genbuf = tmp; + + if (c->u.s.p) + check_puts(patt.str, stdout); + if (c->u.s.file) + check_puts(patt.str, c->u.s.file); +} + +static void +cmd_t(Cmd *c) +{ + if (!in_range(c) || !gflags.s) + return; + + /* if we jump backwards update to end, otherwise update to destination */ + update_ranges(c + 1, c->u.jump > c ? c->u.jump : prog + pcap); + pc = c->u.jump; + gflags.s = 0; +} + +static void +cmd_w(Cmd *c) +{ + if (in_range(c)) + check_puts(patt.str, c->u.file); +} + +static void +cmd_x(Cmd *c) +{ + String tmp; + + if (!in_range(c)) + return; + + tmp = patt; + patt = hold; + hold = tmp; +} + +static void +cmd_y(Cmd *c) +{ + String tmp; + Rune r, *rp; + size_t n, rlen; + char *s, *end, buf[UTFmax]; + + if (!in_range(c)) + return; + + *genbuf.str = '\0'; + for (s = patt.str, end = s + strlen(s); *s; s += rlen) { + if (!(rlen = charntorune(&r, s, end - s))) { /* ran out of chars, copy rest */ + stracat(&genbuf, s); + break; + } else if (r == Runeerror) { /* bad UTF-8 sequence, copy bytes */ + strnacat(&genbuf, s, rlen); + } else { + for (rp = c->u.y.set1; *rp; rp++) + if (*rp == r) + break; + if (*rp) { /* found r in set1, replace with Rune from set2 */ + n = runetochar(buf, c->u.y.set2 + (rp - c->u.y.set1)); + strnacat(&genbuf, buf, n); + } else { + strnacat(&genbuf, s, rlen); + } + } + } + tmp = patt; + patt = genbuf; + genbuf = tmp; +} + +static void +cmd_colon(Cmd *c) +{ +} + +static void +cmd_equal(Cmd *c) +{ + if (in_range(c)) + printf("%zu\n", lineno); +} + +static void +cmd_lbrace(Cmd *c) +{ + Cmd *jump; + + if (in_range(c)) + return; + + /* update ranges on all commands we skip */ + jump = prog + c->u.offset; + update_ranges(c + 1, jump); + pc = jump; +} + +static void +cmd_rbrace(Cmd *c) +{ +} + +/* not actually a sed function, but acts like one, put in last spot of script */ +static void +cmd_last(Cmd *c) +{ + if (!gflags.n) + check_puts(patt.str, stdout); + do_writes(); + new_next(); +} + +/* + * Actions + */ + +/* read new line, continue current cycle */ +static void +new_line(void) +{ + while (read_line(file, &patt) == EOF) { + if (next_file()) { + gflags.halt = 1; + return; + } + } + gflags.s = 0; + lineno++; +} + +/* append new line, continue current cycle + * FIXME: used for N, POSIX specifies do not print pattern space when out of + * input, but GNU does so busybox does as well. Currently we don't. + * Should we? + */ +static void +app_line(void) +{ + while (read_line(file, &genbuf) == EOF) { + if (next_file()) { + gflags.halt = 1; + return; + } + } + + stracat(&patt, "\n"); + stracat(&patt, genbuf.str); + gflags.s = 0; + lineno++; +} + +/* read new line, start new cycle */ +static void +new_next(void) +{ + *patt.str = '\0'; + update_ranges(pc + 1, prog + pcap); + new_line(); + pc = prog - 1; +} + +/* keep old pattern space, start new cycle */ +static void +old_next(void) +{ + update_ranges(pc + 1, prog + pcap); + pc = prog - 1; +} + +int +main(int argc, char *argv[]) +{ + char *arg; + int script = 0; + + ARGBEGIN { + case 'n': + gflags.n = 1; + break; + case 'r': + case 'E': + gflags.E = 1; + break; + case 'e': + arg = EARGF(usage()); + compile(arg, 0); + script = 1; + break; + case 'f': + arg = EARGF(usage()); + compile(arg, 1); + script = 1; + break; + default : usage(); + } ARGEND + + /* no script to run */ + if (!script && !argc) + usage(); + + /* no script yet, next argument is script */ + if (!script) + compile(*argv++, 0); + + /* shrink/grow memory to fit and add our last instruction */ + resize((void **)&prog, &pcap, sizeof(*prog), pc - prog + 1, NULL); + pc = prog + pcap - 1; + pc->fninfo = &(Fninfo){ cmd_last, NULL, NULL, 0 }; + + files = argv; + run(); + + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/seq.1 b/util/sbase/seq.1 new file mode 100644 index 00000000..1b9def89 --- /dev/null +++ b/util/sbase/seq.1 @@ -0,0 +1,40 @@ +.Dd October 8, 2015 +.Dt SEQ 1 +.Os sbase +.Sh NAME +.Nm seq +.Nd print a sequence of numbers +.Sh SYNOPSIS +.Nm +.Op Fl w +.Op Fl f Ar fmt +.Op Fl s Ar sep +.Op Ar startnum Op Ar step +.Ar endnum +.Sh DESCRIPTION +.Nm +writes a sequence of numbers from +.Ar startnum +(default: 1) to +.Ar endnum +in +.Ar step +intervals (default: 1) +to stdout. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl f Ar fmt +Use +.Ar fmt +as the output line format according to +.Xr printf 3 . +.It Fl s Ar sep +Print +.Ar sep +between output lines. +The default is "\en". +.It Fl w +Print out lines in equal width. +.El +.Sh SEE ALSO +.Xr printf 3 diff --git a/util/sbase/seq.c b/util/sbase/seq.c new file mode 100644 index 00000000..70763d1e --- /dev/null +++ b/util/sbase/seq.c @@ -0,0 +1,147 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "util.h" + +static int +digitsleft(const char *d) +{ + int shift; + char *exp; + + if (*d == '+') + d++; + exp = strpbrk(d, "eE"); + shift = exp ? estrtonum(exp + 1, INT_MIN, INT_MAX) : 0; + + return MAX(0, strspn(d, "-0123456789") + shift); +} + +static int +digitsright(const char *d) +{ + int shift, after; + char *exp; + + exp = strpbrk(d, "eE"); + shift = exp ? estrtonum(&exp[1], INT_MIN, INT_MAX) : 0; + after = (d = strchr(d, '.')) ? strspn(&d[1], "0123456789") : 0; + + return MAX(0, after - shift); +} + +static int +validfmt(const char *fmt) +{ + int occur = 0; + +literal: + while (*fmt) + if (*fmt++ == '%') + goto format; + return occur == 1; + +format: + if (*fmt == '%') { + fmt++; + goto literal; + } + fmt += strspn(fmt, "-+#0 '"); + fmt += strspn(fmt, "0123456789"); + if (*fmt == '.') { + fmt++; + fmt += strspn(fmt, "0123456789"); + } + if (*fmt == 'L') + fmt++; + + switch (*fmt) { + case 'f': case 'F': + case 'g': case 'G': + case 'e': case 'E': + case 'a': case 'A': + occur++; + goto literal; + default: + return 0; + } +} + +static void +usage(void) +{ + eprintf("usage: %s [-f fmt] [-s sep] [-w] " + "[startnum [step]] endnum\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + double start, step, end, out, dir; + int wflag = 0, left, right; + char *tmp, ftmp[BUFSIZ], *fmt = ftmp; + const char *starts = "1", *steps = "1", *ends = "1", *sep = "\n"; + + ARGBEGIN { + case 'f': + if (!validfmt(tmp=EARGF(usage()))) + eprintf("%s: invalid format\n", tmp); + fmt = tmp; + break; + case 's': + sep = EARGF(usage()); + break; + case 'w': + wflag = 1; + break; + default: + usage(); + } ARGEND + + switch (argc) { + case 3: + steps = argv[1]; + argv[1] = argv[2]; + /* fallthrough */ + case 2: + starts = argv[0]; + argv++; + /* fallthrough */ + case 1: + ends = argv[0]; + break; + default: + usage(); + } + start = estrtod(starts); + step = estrtod(steps); + end = estrtod(ends); + + dir = (step > 0) ? 1.0 : -1.0; + if (step == 0 || start * dir > end * dir) + return 1; + + if (fmt == ftmp) { + right = MAX(digitsright(starts), + MAX(digitsright(ends), + digitsright(steps))); + + if (wflag) { + left = MAX(digitsleft(starts), digitsleft(ends)); + + snprintf(ftmp, sizeof ftmp, "%%0%d.%df", + right + left + (right != 0), right); + } else + snprintf(ftmp, sizeof ftmp, "%%.%df", right); + } + for (out = start; out * dir <= end * dir; out += step) { + if (out != start) + fputs(sep, stdout); + printf(fmt, out); + } + putchar('\n'); + + return fshut(stdout, "<stdout>"); +} diff --git a/util/sbase/setsid.1 b/util/sbase/setsid.1 new file mode 100644 index 00000000..5a7b2412 --- /dev/null +++ b/util/sbase/setsid.1 @@ -0,0 +1,18 @@ +.Dd July 14, 2020 +.Dt SETSID 1 +.Os sbase +.Sh NAME +.Nm setsid +.Nd run a command in a new session +.Sh SYNOPSIS +.Nm +.Op Fl f +.Ar cmd +.Op Ar arg ... +.Sh DESCRIPTION +.Nm +runs +.Ar cmd +in a new session. +.Sh SEE ALSO +.Xr setsid 2 diff --git a/util/sbase/setsid.c b/util/sbase/setsid.c new file mode 100644 index 00000000..9a154d13 --- /dev/null +++ b/util/sbase/setsid.c @@ -0,0 +1,48 @@ +/* See LICENSE file for copyright and license details. */ +#include <errno.h> +#include <unistd.h> + +#include "util.h" + +static int fflag = 0; + +static void +usage(void) +{ + eprintf("usage: %s [-f] cmd [arg ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int savederrno; + + ARGBEGIN { + case 'f': + fflag = 1; + break; + default: + usage(); + } ARGEND + + if (!argc) + usage(); + + if (fflag || getpgrp() == getpid()) { + switch (fork()) { + case -1: + eprintf("fork:"); + case 0: + break; + default: + return 0; + } + } + if (setsid() < 0) + eprintf("setsid:"); + execvp(argv[0], argv); + savederrno = errno; + weprintf("execvp %s:", argv[0]); + + _exit(126 + (savederrno == ENOENT)); +} diff --git a/util/sbase/sha1.h b/util/sbase/sha1.h new file mode 100644 index 00000000..86317770 --- /dev/null +++ b/util/sbase/sha1.h @@ -0,0 +1,18 @@ +/* public domain sha1 implementation based on rfc3174 and libtomcrypt */ + +struct sha1 { + uint64_t len; /* processed message length */ + uint32_t h[5]; /* hash state */ + uint8_t buf[64]; /* message block buffer */ +}; + +enum { SHA1_DIGEST_LENGTH = 20 }; + +/* reset state */ +void sha1_init(void *ctx); +/* process message */ +void sha1_update(void *ctx, const void *m, unsigned long len); +/* get message digest */ +/* state is ruined after sum, keep a copy if multiple sum is needed */ +/* part of the message might be left in s, zero it if secrecy is needed */ +void sha1_sum(void *ctx, uint8_t md[SHA1_DIGEST_LENGTH]); diff --git a/util/sbase/sha1sum.1 b/util/sbase/sha1sum.1 new file mode 100644 index 00000000..62187135 --- /dev/null +++ b/util/sbase/sha1sum.1 @@ -0,0 +1,32 @@ +.Dd October 8, 2015 +.Dt SHA1SUM 1 +.Os sbase +.Sh NAME +.Nm sha1sum +.Nd compute or check SHA-1 message digests +.Sh SYNOPSIS +.Nm +.Op Fl c +.Op Ar file ... +.Sh DESCRIPTION +.Nm +writes SHA-1 (160-bit) checksums of each +.Ar file +to stdout. +If no +.Ar file +is given +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl c +Read list of SHA-1 checksums from each +.Ar file +and check them. +If no +.Ar file +is given +.Nm +reads from stdin. +.El diff --git a/util/sbase/sha1sum.c b/util/sbase/sha1sum.c new file mode 100644 index 00000000..cc8dcae9 --- /dev/null +++ b/util/sbase/sha1sum.c @@ -0,0 +1,45 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdint.h> +#include <stdio.h> + +#include "crypt.h" +#include "sha1.h" +#include "util.h" + +static struct sha1 s; +struct crypt_ops sha1_ops = { + sha1_init, + sha1_update, + sha1_sum, + &s, +}; + +static void +usage(void) +{ + eprintf("usage: %s [-c] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int ret = 0, (*cryptfunc)(int, char **, struct crypt_ops *, uint8_t *, size_t) = cryptmain; + uint8_t md[SHA1_DIGEST_LENGTH]; + + ARGBEGIN { + case 'b': + case 't': + /* ignore */ + break; + case 'c': + cryptfunc = cryptcheck; + break; + default: + usage(); + } ARGEND + + ret |= cryptfunc(argc, argv, &sha1_ops, md, sizeof(md)); + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/sha224.h b/util/sbase/sha224.h new file mode 100644 index 00000000..d7f40532 --- /dev/null +++ b/util/sbase/sha224.h @@ -0,0 +1,16 @@ +/* public domain sha224 implementation based on fips180-3 */ + +#include "sha256.h" + +#define sha224 sha256 /*struct*/ + +enum { SHA224_DIGEST_LENGTH = 28 }; + +/* reset state */ +void sha224_init(void *ctx); +/* process message */ +#define sha224_update sha256_update +/* get message digest */ +/* state is ruined after sum, keep a copy if multiple sum is needed */ +/* part of the message might be left in s, zero it if secrecy is needed */ +void sha224_sum(void *ctx, uint8_t md[SHA224_DIGEST_LENGTH]); diff --git a/util/sbase/sha224sum.1 b/util/sbase/sha224sum.1 new file mode 100644 index 00000000..42141a5f --- /dev/null +++ b/util/sbase/sha224sum.1 @@ -0,0 +1,32 @@ +.Dd February 24, 2016 +.Dt SHA224SUM 1 +.Os sbase +.Sh NAME +.Nm sha224sum +.Nd compute or check SHA-224 message digests +.Sh SYNOPSIS +.Nm +.Op Fl c +.Op Ar file ... +.Sh DESCRIPTION +.Nm +writes SHA-224 (224-bit) checksums of each +.Ar file +to stdout. +If no +.Ar file +is given +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl c +Read list of SHA-224 checksums from each +.Ar file +and check them. +If no +.Ar file +is given +.Nm +reads from stdin. +.El diff --git a/util/sbase/sha224sum.c b/util/sbase/sha224sum.c new file mode 100644 index 00000000..e9a10cf9 --- /dev/null +++ b/util/sbase/sha224sum.c @@ -0,0 +1,45 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdint.h> +#include <stdio.h> + +#include "crypt.h" +#include "sha224.h" +#include "util.h" + +static struct sha224 s; +struct crypt_ops sha224_ops = { + sha224_init, + sha224_update, + sha224_sum, + &s, +}; + +static void +usage(void) +{ + eprintf("usage: %s [-c] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int ret = 0, (*cryptfunc)(int, char **, struct crypt_ops *, uint8_t *, size_t) = cryptmain; + uint8_t md[SHA224_DIGEST_LENGTH]; + + ARGBEGIN { + case 'b': + case 't': + /* ignore */ + break; + case 'c': + cryptfunc = cryptcheck; + break; + default: + usage(); + } ARGEND + + ret |= cryptfunc(argc, argv, &sha224_ops, md, sizeof(md)); + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/sha256.h b/util/sbase/sha256.h new file mode 100644 index 00000000..5968b8e1 --- /dev/null +++ b/util/sbase/sha256.h @@ -0,0 +1,18 @@ +/* public domain sha256 implementation based on fips180-3 */ + +struct sha256 { + uint64_t len; /* processed message length */ + uint32_t h[8]; /* hash state */ + uint8_t buf[64]; /* message block buffer */ +}; + +enum { SHA256_DIGEST_LENGTH = 32 }; + +/* reset state */ +void sha256_init(void *ctx); +/* process message */ +void sha256_update(void *ctx, const void *m, unsigned long len); +/* get message digest */ +/* state is ruined after sum, keep a copy if multiple sum is needed */ +/* part of the message might be left in s, zero it if secrecy is needed */ +void sha256_sum(void *ctx, uint8_t md[SHA256_DIGEST_LENGTH]); diff --git a/util/sbase/sha256sum.1 b/util/sbase/sha256sum.1 new file mode 100644 index 00000000..1a9aeee9 --- /dev/null +++ b/util/sbase/sha256sum.1 @@ -0,0 +1,32 @@ +.Dd October 8, 2015 +.Dt SHA256SUM 1 +.Os sbase +.Sh NAME +.Nm sha256sum +.Nd compute or check SHA-256 message digests +.Sh SYNOPSIS +.Nm +.Op Fl c +.Op Ar file ... +.Sh DESCRIPTION +.Nm +writes SHA-256 (256-bit) checksums of each +.Ar file +to stdout. +If no +.Ar file +is given +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl c +Read list of SHA-256 checksums from each +.Ar file +and check them. +If no +.Ar file +is given +.Nm +reads from stdin. +.El diff --git a/util/sbase/sha256sum.c b/util/sbase/sha256sum.c new file mode 100644 index 00000000..686c70f0 --- /dev/null +++ b/util/sbase/sha256sum.c @@ -0,0 +1,45 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdint.h> +#include <stdio.h> + +#include "crypt.h" +#include "sha256.h" +#include "util.h" + +static struct sha256 s; +struct crypt_ops sha256_ops = { + sha256_init, + sha256_update, + sha256_sum, + &s, +}; + +static void +usage(void) +{ + eprintf("usage: %s [-c] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int ret = 0, (*cryptfunc)(int, char **, struct crypt_ops *, uint8_t *, size_t) = cryptmain; + uint8_t md[SHA256_DIGEST_LENGTH]; + + ARGBEGIN { + case 'b': + case 't': + /* ignore */ + break; + case 'c': + cryptfunc = cryptcheck; + break; + default: + usage(); + } ARGEND + + ret |= cryptfunc(argc, argv, &sha256_ops, md, sizeof(md)); + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/sha384.h b/util/sbase/sha384.h new file mode 100644 index 00000000..2ab9bc49 --- /dev/null +++ b/util/sbase/sha384.h @@ -0,0 +1,16 @@ +/* public domain sha512 implementation based on fips180-3 */ + +#include "sha512.h" + +#define sha384 sha512 /*struct*/ + +enum { SHA384_DIGEST_LENGTH = 48 }; + +/* reset state */ +void sha384_init(void *ctx); +/* process message */ +#define sha384_update sha512_update +/* get message digest */ +/* state is ruined after sum, keep a copy if multiple sum is needed */ +/* part of the message might be left in s, zero it if secrecy is needed */ +void sha384_sum(void *ctx, uint8_t md[SHA384_DIGEST_LENGTH]); diff --git a/util/sbase/sha384sum.1 b/util/sbase/sha384sum.1 new file mode 100644 index 00000000..a417ca96 --- /dev/null +++ b/util/sbase/sha384sum.1 @@ -0,0 +1,32 @@ +.Dd February 24, 2016 +.Dt SHA384SUM 1 +.Os sbase +.Sh NAME +.Nm sha384sum +.Nd compute or check SHA-384 message digests +.Sh SYNOPSIS +.Nm +.Op Fl c +.Op Ar file ... +.Sh DESCRIPTION +.Nm +writes SHA-384 (384-bit) checksums of each +.Ar file +to stdout. +If no +.Ar file +is given +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl c +Read list of SHA-384 checksums from each +.Ar file +and check them. +If no +.Ar file +is given +.Nm +reads from stdin. +.El diff --git a/util/sbase/sha384sum.c b/util/sbase/sha384sum.c new file mode 100644 index 00000000..c76947e6 --- /dev/null +++ b/util/sbase/sha384sum.c @@ -0,0 +1,45 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdint.h> +#include <stdio.h> + +#include "crypt.h" +#include "sha384.h" +#include "util.h" + +static struct sha384 s; +struct crypt_ops sha384_ops = { + sha384_init, + sha384_update, + sha384_sum, + &s, +}; + +static void +usage(void) +{ + eprintf("usage: %s [-c] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int ret = 0, (*cryptfunc)(int, char **, struct crypt_ops *, uint8_t *, size_t) = cryptmain; + uint8_t md[SHA384_DIGEST_LENGTH]; + + ARGBEGIN { + case 'b': + case 't': + /* ignore */ + break; + case 'c': + cryptfunc = cryptcheck; + break; + default: + usage(); + } ARGEND + + ret |= cryptfunc(argc, argv, &sha384_ops, md, sizeof(md)); + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/sha512-224.h b/util/sbase/sha512-224.h new file mode 100644 index 00000000..8364fc5f --- /dev/null +++ b/util/sbase/sha512-224.h @@ -0,0 +1,16 @@ +/* public domain sha512/224 implementation based on fips180-3 */ + +#include "sha512.h" + +#define sha512_224 sha512 /*struct*/ + +enum { SHA512_224_DIGEST_LENGTH = 28 }; + +/* reset state */ +void sha512_224_init(void *ctx); +/* process message */ +#define sha512_224_update sha512_update +/* get message digest */ +/* state is ruined after sum, keep a copy if multiple sum is needed */ +/* part of the message might be left in s, zero it if secrecy is needed */ +void sha512_224_sum(void *ctx, uint8_t md[SHA512_224_DIGEST_LENGTH]); diff --git a/util/sbase/sha512-224sum.1 b/util/sbase/sha512-224sum.1 new file mode 100644 index 00000000..89206950 --- /dev/null +++ b/util/sbase/sha512-224sum.1 @@ -0,0 +1,32 @@ +.Dd February 24, 2016 +.Dt SHA512-224SUM 1 +.Os sbase +.Sh NAME +.Nm sha512-224sum +.Nd compute or check SHA-512/224 message digests +.Sh SYNOPSIS +.Nm +.Op Fl c +.Op Ar file ... +.Sh DESCRIPTION +.Nm +writes SHA-512/224 (224-bit) checksums of each +.Ar file +to stdout. +If no +.Ar file +is given +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl c +Read list of SHA-512/224 checksums from each +.Ar file +and check them. +If no +.Ar file +is given +.Nm +reads from stdin. +.El diff --git a/util/sbase/sha512-224sum.c b/util/sbase/sha512-224sum.c new file mode 100644 index 00000000..53f2e625 --- /dev/null +++ b/util/sbase/sha512-224sum.c @@ -0,0 +1,45 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdint.h> +#include <stdio.h> + +#include "crypt.h" +#include "sha512-224.h" +#include "util.h" + +static struct sha512_224 s; +struct crypt_ops sha512_224_ops = { + sha512_224_init, + sha512_224_update, + sha512_224_sum, + &s, +}; + +static void +usage(void) +{ + eprintf("usage: %s [-c] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int ret = 0, (*cryptfunc)(int, char **, struct crypt_ops *, uint8_t *, size_t) = cryptmain; + uint8_t md[SHA512_224_DIGEST_LENGTH]; + + ARGBEGIN { + case 'b': + case 't': + /* ignore */ + break; + case 'c': + cryptfunc = cryptcheck; + break; + default: + usage(); + } ARGEND + + ret |= cryptfunc(argc, argv, &sha512_224_ops, md, sizeof(md)); + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/sha512-256.h b/util/sbase/sha512-256.h new file mode 100644 index 00000000..eb0b731d --- /dev/null +++ b/util/sbase/sha512-256.h @@ -0,0 +1,16 @@ +/* public domain sha512/256 implementation based on fips180-3 */ + +#include "sha512.h" + +#define sha512_256 sha512 /*struct*/ + +enum { SHA512_256_DIGEST_LENGTH = 32 }; + +/* reset state */ +void sha512_256_init(void *ctx); +/* process message */ +#define sha512_256_update sha512_update +/* get message digest */ +/* state is ruined after sum, keep a copy if multiple sum is needed */ +/* part of the message might be left in s, zero it if secrecy is needed */ +void sha512_256_sum(void *ctx, uint8_t md[SHA512_256_DIGEST_LENGTH]); diff --git a/util/sbase/sha512-256sum.1 b/util/sbase/sha512-256sum.1 new file mode 100644 index 00000000..98b8a098 --- /dev/null +++ b/util/sbase/sha512-256sum.1 @@ -0,0 +1,32 @@ +.Dd February 24, 2016 +.Dt SHA512-256SUM 1 +.Os sbase +.Sh NAME +.Nm sha512-256sum +.Nd compute or check SHA-512/256 message digests +.Sh SYNOPSIS +.Nm +.Op Fl c +.Op Ar file ... +.Sh DESCRIPTION +.Nm +writes SHA-512/256 (256-bit) checksums of each +.Ar file +to stdout. +If no +.Ar file +is given +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl c +Read list of SHA-512/256 checksums from each +.Ar file +and check them. +If no +.Ar file +is given +.Nm +reads from stdin. +.El diff --git a/util/sbase/sha512-256sum.c b/util/sbase/sha512-256sum.c new file mode 100644 index 00000000..ea556b8d --- /dev/null +++ b/util/sbase/sha512-256sum.c @@ -0,0 +1,45 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdint.h> +#include <stdio.h> + +#include "crypt.h" +#include "sha512-256.h" +#include "util.h" + +static struct sha512_256 s; +struct crypt_ops sha512_256_ops = { + sha512_256_init, + sha512_256_update, + sha512_256_sum, + &s, +}; + +static void +usage(void) +{ + eprintf("usage: %s [-c] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int ret = 0, (*cryptfunc)(int, char **, struct crypt_ops *, uint8_t *, size_t) = cryptmain; + uint8_t md[SHA512_256_DIGEST_LENGTH]; + + ARGBEGIN { + case 'b': + case 't': + /* ignore */ + break; + case 'c': + cryptfunc = cryptcheck; + break; + default: + usage(); + } ARGEND + + ret |= cryptfunc(argc, argv, &sha512_256_ops, md, sizeof(md)); + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/sha512.h b/util/sbase/sha512.h new file mode 100644 index 00000000..c761712a --- /dev/null +++ b/util/sbase/sha512.h @@ -0,0 +1,18 @@ +/* public domain sha512 implementation based on fips180-3 */ + +struct sha512 { + uint64_t len; /* processed message length */ + uint64_t h[8]; /* hash state */ + uint8_t buf[128]; /* message block buffer */ +}; + +enum { SHA512_DIGEST_LENGTH = 64 }; + +/* reset state */ +void sha512_init(void *ctx); +/* process message */ +void sha512_update(void *ctx, const void *m, unsigned long len); +/* get message digest */ +/* state is ruined after sum, keep a copy if multiple sum is needed */ +/* part of the message might be left in s, zero it if secrecy is needed */ +void sha512_sum(void *ctx, uint8_t md[SHA512_DIGEST_LENGTH]); diff --git a/util/sbase/sha512sum.1 b/util/sbase/sha512sum.1 new file mode 100644 index 00000000..14ef105f --- /dev/null +++ b/util/sbase/sha512sum.1 @@ -0,0 +1,32 @@ +.Dd October 8, 2015 +.Dt SHA512SUM 1 +.Os sbase +.Sh NAME +.Nm sha512sum +.Nd compute or check SHA-512 message digests +.Sh SYNOPSIS +.Nm +.Op Fl c +.Op Ar file ... +.Sh DESCRIPTION +.Nm +writes SHA-512 (512-bit) checksums of each +.Ar file +to stdout. +If no +.Ar file +is given +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl c +Read list of SHA-512 checksums from each +.Ar file +and check them. +If no +.Ar file +is given +.Nm +reads from stdin. +.El diff --git a/util/sbase/sha512sum.c b/util/sbase/sha512sum.c new file mode 100644 index 00000000..a76e685b --- /dev/null +++ b/util/sbase/sha512sum.c @@ -0,0 +1,45 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdint.h> +#include <stdio.h> + +#include "crypt.h" +#include "sha512.h" +#include "util.h" + +static struct sha512 s; +struct crypt_ops sha512_ops = { + sha512_init, + sha512_update, + sha512_sum, + &s, +}; + +static void +usage(void) +{ + eprintf("usage: %s [-c] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int ret = 0, (*cryptfunc)(int, char **, struct crypt_ops *, uint8_t *, size_t) = cryptmain; + uint8_t md[SHA512_DIGEST_LENGTH]; + + ARGBEGIN { + case 'b': + case 't': + /* ignore */ + break; + case 'c': + cryptfunc = cryptcheck; + break; + default: + usage(); + } ARGEND + + ret |= cryptfunc(argc, argv, &sha512_ops, md, sizeof(md)); + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/sleep.1 b/util/sbase/sleep.1 new file mode 100644 index 00000000..3c58fb95 --- /dev/null +++ b/util/sbase/sleep.1 @@ -0,0 +1,18 @@ +.Dd October 8, 2015 +.Dt SLEEP 1 +.Os sbase +.Sh NAME +.Nm sleep +.Nd wait for a number of seconds +.Sh SYNOPSIS +.Nm +.Ar num +.Sh DESCRIPTION +.Nm +waits for +.Ar num +seconds to elapse. +.Sh SEE ALSO +.Xr sleep 3 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/sleep.c b/util/sbase/sleep.c new file mode 100644 index 00000000..00ea2688 --- /dev/null +++ b/util/sbase/sleep.c @@ -0,0 +1,30 @@ +/* See LICENSE file for copyright and license details. */ +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s num\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + unsigned seconds; + + ARGBEGIN { + default: + usage(); + } ARGEND + + if (argc != 1) + usage(); + + seconds = estrtonum(argv[0], 0, UINT_MAX); + while ((seconds = sleep(seconds)) > 0) + ; + + return 0; +} diff --git a/util/sbase/sort.1 b/util/sbase/sort.1 new file mode 100644 index 00000000..f5a2121e --- /dev/null +++ b/util/sbase/sort.1 @@ -0,0 +1,98 @@ +.Dd February 17, 2016 +.Dt SORT 1 +.Os sbase +.Sh NAME +.Nm sort +.Nd sort lines +.Sh SYNOPSIS +.Nm +.Op Fl Cbcdfimnru +.Op Fl o Ar outfile +.Op Fl t Ar delim +.Op Fl k Ar key ... +.Op Ar file ... +.Sh DESCRIPTION +.Nm +writes the sorted concatenation of each +.Ar file +to stdout. +If no +.Ar file +is given +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl C +Check that the concatenation of the given +.Ar files +is sorted rather than sorting them. +In this mode, no output is printed to stdout, and the exit status +indicates the result of the check. +.It Fl b +Skip leading whitespace of columns when sorting. +.It Fl c +The same as +.Fl C +except that when disorder is detected, a message is written to stderr +indicating the location of the disorder. +.It Fl d +Skip non-whitespace and non-alphanumeric characters. +.It Fl f +Ignore letter case when sorting. +.It Fl i +Skip non-printable characters. +.It Fl k Ar key +Specify a key definition of the form +.Sm off +.Sy S +.No [. +.Sy s +.No ][ +.Sy f +.No ][ , +.Sy E +.No [. +.Sy e +.No ][ +.Sy f +.No ]] +.Sm on +where +.Sy S , s , E +and +.Sy e +are the starting column, starting character in that column, ending column and +the ending character of that column respectively. +If they are not specified, +.Sy s +refers to the first character of the specified starting column, +.Sy E +refers to the last column of every line, and +.Sy e +refers to the last character of the ending column. +.Sy f +can be used to specify options +.Sy ( n , b ) +that only apply to this key definition. +.Sy b +is special in that it only applies to the column that it was specified after. +.It Fl m +Assume sorted input, merge only. +.It Fl n +Perform a numeric sort. +.It Fl o Ar outfile +Write output to +.Ar outfile +rather than stdout. +.It Fl r +Reverses the sort. +.It Fl t Ar delim +Set +.Ar delim +as the field delimiter. +.It Fl u +Print equal lines only once. +.El +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/sort.c b/util/sbase/sort.c new file mode 100644 index 00000000..fbb1abfe --- /dev/null +++ b/util/sbase/sort.c @@ -0,0 +1,437 @@ +/* See LICENSE file for copyright and license details. */ +#include <ctype.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "queue.h" +#include "text.h" +#include "utf.h" +#include "util.h" + +struct keydef { + int start_column; + int end_column; + int start_char; + int end_char; + int flags; + TAILQ_ENTRY(keydef) entry; +}; + +struct column { + struct line line; + size_t cap; +}; + +enum { + MOD_N = 1 << 0, + MOD_STARTB = 1 << 1, + MOD_ENDB = 1 << 2, + MOD_R = 1 << 3, + MOD_D = 1 << 4, + MOD_F = 1 << 5, + MOD_I = 1 << 6, +}; + +static TAILQ_HEAD(kdhead, keydef) kdhead = TAILQ_HEAD_INITIALIZER(kdhead); + +static int Cflag = 0, cflag = 0, uflag = 0; +static char *fieldsep = NULL; +static size_t fieldseplen = 0; +static struct column col1, col2; + +static void +skipblank(struct line *a) +{ + while (a->len && (*(a->data) == ' ' || *(a->data) == '\t')) { + a->data++; + a->len--; + } +} + +static void +skipnonblank(struct line *a) +{ + while (a->len && (*(a->data) != '\n' && *(a->data) != ' ' && + *(a->data) != '\t')) { + a->data++; + a->len--; + } +} + +static void +skipcolumn(struct line *a, int skip_to_next_col) +{ + char *s; + + if (fieldsep) { + if ((s = memmem(a->data, a->len, fieldsep, fieldseplen))) { + if (skip_to_next_col) + s += fieldseplen; + a->len -= s - a->data; + a->data = s; + } else { + a->data += a->len - 1; + a->len = 1; + } + } else { + skipblank(a); + skipnonblank(a); + } +} + +static void +columns(struct line *line, const struct keydef *kd, struct column *col) +{ + Rune r; + struct line start, end; + size_t utflen, rlen; + int i; + + start.data = line->data; + start.len = line->len; + for (i = 1; i < kd->start_column; i++) + skipcolumn(&start, 1); + if (kd->flags & MOD_STARTB) + skipblank(&start); + for (utflen = 0; start.len > 1 && utflen < kd->start_char - 1;) { + rlen = chartorune(&r, start.data); + start.data += rlen; + start.len -= rlen; + utflen++; + } + + end.data = line->data; + end.len = line->len; + if (kd->end_column) { + for (i = 1; i < kd->end_column; i++) + skipcolumn(&end, 1); + if (kd->flags & MOD_ENDB) + skipblank(&end); + if (kd->end_char) { + for (utflen = 0; end.len > 1 && utflen < kd->end_char;) { + rlen = chartorune(&r, end.data); + end.data += rlen; + end.len -= rlen; + utflen++; + } + } else { + skipcolumn(&end, 0); + } + } else { + end.data += end.len - 1; + end.len = 1; + } + col->line.len = MAX(0, end.data - start.data); + if (!(col->line.data) || col->cap < col->line.len + 1) { + free(col->line.data); + col->line.data = emalloc(col->line.len + 1); + } + memcpy(col->line.data, start.data, col->line.len); + col->line.data[col->line.len] = '\0'; +} + +static int +skipmodcmp(struct line *a, struct line *b, int flags) +{ + Rune r1, r2; + size_t offa = 0, offb = 0; + + do { + offa += chartorune(&r1, a->data + offa); + offb += chartorune(&r2, b->data + offb); + + if (flags & MOD_D && flags & MOD_I) { + while (offa < a->len && ((!isblankrune(r1) && + !isalnumrune(r1)) || (!isprintrune(r1)))) + offa += chartorune(&r1, a->data + offa); + while (offb < b->len && ((!isblankrune(r2) && + !isalnumrune(r2)) || (!isprintrune(r2)))) + offb += chartorune(&r2, b->data + offb); + } + else if (flags & MOD_D) { + while (offa < a->len && !isblankrune(r1) && + !isalnumrune(r1)) + offa += chartorune(&r1, a->data + offa); + while (offb < b->len && !isblankrune(r2) && + !isalnumrune(r2)) + offb += chartorune(&r2, b->data + offb); + } + else if (flags & MOD_I) { + while (offa < a->len && !isprintrune(r1)) + offa += chartorune(&r1, a->data + offa); + while (offb < b->len && !isprintrune(r2)) + offb += chartorune(&r2, b->data + offb); + } + if (flags & MOD_F) { + r1 = toupperrune(r1); + r2 = toupperrune(r2); + } + } while (r1 && r1 == r2); + + return r1 - r2; +} + +static int +slinecmp(struct line *a, struct line *b) +{ + int res = 0; + double x, y; + struct keydef *kd; + + TAILQ_FOREACH(kd, &kdhead, entry) { + columns(a, kd, &col1); + columns(b, kd, &col2); + + /* if -u is given, don't use default key definition + * unless it is the only one */ + if (uflag && kd == TAILQ_LAST(&kdhead, kdhead) && + TAILQ_LAST(&kdhead, kdhead) != TAILQ_FIRST(&kdhead)) { + res = 0; + } else if (kd->flags & MOD_N) { + x = strtod(col1.line.data, NULL); + y = strtod(col2.line.data, NULL); + res = (x < y) ? -1 : (x > y); + } else if (kd->flags & (MOD_D | MOD_F | MOD_I)) { + res = skipmodcmp(&col1.line, &col2.line, kd->flags); + } else { + res = linecmp(&col1.line, &col2.line); + } + + if (kd->flags & MOD_R) + res = -res; + if (res) + break; + } + + return res; +} + +static int +check(FILE *fp, const char *fname) +{ + static struct line prev, cur, tmp; + static size_t prevsize, cursize, tmpsize; + ssize_t len; + + if (!prev.data) { + if ((len = getline(&prev.data, &prevsize, fp)) < 0) + eprintf("getline:"); + prev.len = len; + } + while ((len = getline(&cur.data, &cursize, fp)) > 0) { + cur.len = len; + if (uflag > slinecmp(&cur, &prev)) { + if (!Cflag) { + weprintf("disorder %s: ", fname); + fwrite(cur.data, 1, cur.len, stderr); + } + return 1; + } + tmp = cur; + tmpsize = cursize; + cur = prev; + cursize = prevsize; + prev = tmp; + prevsize = tmpsize; + } + + return 0; +} + +static int +parse_flags(char **s, int *flags, int bflag) +{ + while (isalpha((int)**s)) { + switch (*((*s)++)) { + case 'b': + *flags |= bflag; + break; + case 'd': + *flags |= MOD_D; + break; + case 'f': + *flags |= MOD_F; + break; + case 'i': + *flags |= MOD_I; + break; + case 'n': + *flags |= MOD_N; + break; + case 'r': + *flags |= MOD_R; + break; + default: + return -1; + } + } + + return 0; +} + +static void +addkeydef(char *kdstr, int flags) +{ + struct keydef *kd; + + kd = enmalloc(2, sizeof(*kd)); + + /* parse key definition kdstr with format + * start_column[.start_char][flags][,end_column[.end_char][flags]] + */ + kd->start_column = 1; + kd->start_char = 1; + kd->end_column = 0; /* 0 means end of line */ + kd->end_char = 0; /* 0 means end of column */ + kd->flags = flags; + + if ((kd->start_column = strtol(kdstr, &kdstr, 10)) < 1) + enprintf(2, "invalid start column in key definition\n"); + + if (*kdstr == '.') { + if ((kd->start_char = strtol(kdstr + 1, &kdstr, 10)) < 1) + enprintf(2, "invalid start character in key " + "definition\n"); + } + if (parse_flags(&kdstr, &kd->flags, MOD_STARTB) < 0) + enprintf(2, "invalid start flags in key definition\n"); + + if (*kdstr == ',') { + if ((kd->end_column = strtol(kdstr + 1, &kdstr, 10)) < 0) + enprintf(2, "invalid end column in key definition\n"); + if (*kdstr == '.') { + if ((kd->end_char = strtol(kdstr + 1, &kdstr, 10)) < 0) + enprintf(2, "invalid end character in key " + "definition\n"); + } + if (parse_flags(&kdstr, &kd->flags, MOD_ENDB) < 0) + enprintf(2, "invalid end flags in key definition\n"); + } + + if (*kdstr != '\0') + enprintf(2, "invalid key definition\n"); + + TAILQ_INSERT_TAIL(&kdhead, kd, entry); +} + +static void +usage(void) +{ + enprintf(2, "usage: %s [-Cbcdfimnru] [-o outfile] [-t delim] " + "[-k def]... [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + FILE *fp, *ofp = stdout; + struct linebuf linebuf = EMPTY_LINEBUF; + size_t i; + int global_flags = 0, ret = 0; + char *outfile = NULL; + + ARGBEGIN { + case 'C': + Cflag = 1; + break; + case 'b': + global_flags |= MOD_STARTB | MOD_ENDB; + break; + case 'c': + cflag = 1; + break; + case 'd': + global_flags |= MOD_D; + break; + case 'f': + global_flags |= MOD_F; + break; + case 'i': + global_flags |= MOD_I; + break; + case 'k': + addkeydef(EARGF(usage()), global_flags); + break; + case 'm': + /* more or less for free, but for performance-reasons, + * we should keep this flag in mind and maybe some later + * day implement it properly so we don't run out of memory + * while merging large sorted files. + */ + break; + case 'n': + global_flags |= MOD_N; + break; + case 'o': + outfile = EARGF(usage()); + break; + case 'r': + global_flags |= MOD_R; + break; + case 't': + fieldsep = EARGF(usage()); + if (!*fieldsep) + eprintf("empty delimiter\n"); + fieldseplen = unescape(fieldsep); + break; + case 'u': + uflag = 1; + break; + default: + usage(); + } ARGEND + + /* -b shall only apply to custom key definitions */ + if (TAILQ_EMPTY(&kdhead) && global_flags) + addkeydef("1", global_flags & ~(MOD_STARTB | MOD_ENDB)); + if (TAILQ_EMPTY(&kdhead) || (!Cflag && !cflag)) + addkeydef("1", global_flags & MOD_R); + + if (!argc) { + if (Cflag || cflag) { + if (check(stdin, "<stdin>") && !ret) + ret = 1; + } else { + getlines(stdin, &linebuf); + } + } else for (; *argv; argc--, argv++) { + if (!strcmp(*argv, "-")) { + *argv = "<stdin>"; + fp = stdin; + } else if (!(fp = fopen(*argv, "r"))) { + enprintf(2, "fopen %s:", *argv); + continue; + } + if (Cflag || cflag) { + if (check(fp, *argv) && !ret) + ret = 1; + } else { + getlines(fp, &linebuf); + } + if (fp != stdin && fshut(fp, *argv)) + ret = 2; + } + + if (!Cflag && !cflag) { + if (outfile && !(ofp = fopen(outfile, "w"))) + eprintf("fopen %s:", outfile); + + qsort(linebuf.lines, linebuf.nlines, sizeof(*linebuf.lines), + (int (*)(const void *, const void *))slinecmp); + + for (i = 0; i < linebuf.nlines; i++) { + if (!uflag || i == 0 || + slinecmp(&linebuf.lines[i], &linebuf.lines[i - 1])) { + fwrite(linebuf.lines[i].data, 1, + linebuf.lines[i].len, ofp); + } + } + } + + if (fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>") | + fshut(stderr, "<stderr>")) + ret = 2; + + return ret; +} diff --git a/util/sbase/split.1 b/util/sbase/split.1 new file mode 100644 index 00000000..63b3b521 --- /dev/null +++ b/util/sbase/split.1 @@ -0,0 +1,46 @@ +.Dd October 8, 2015 +.Dt SPLIT 1 +.Os sbase +.Sh NAME +.Nm split +.Nd split up a file +.Sh SYNOPSIS +.Nm +.Op Fl a Ar num +.Op Fl b Ar num[k|m|g] | Fl l Ar num +.Op Fl d +.Op Ar file Op Ar prefix +.Sh DESCRIPTION +.Nm +splits +.Ar file +into files with 1000 lines each, named with +.Ar prefix +"x" followed by 2-digit alphabetical count suffixes. +If +.Nm +runs out of suffixes, it stops after the last valid filename. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl a Ar num +Set suffix length to +.Ar num +characters. +The default is 2. +.It Fl b Ar num[k|m|g] | Fl l Ar num +Start a new file every +.Ar num +bytes | lines. +The units k, m, and g are case insensitive and powers of 2, not 10. +The default is 1000 lines. +.It Fl d +Use decimal rather than alphabetical suffixes. +.El +.Sh SEE ALSO +.Xr cat 1 +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Op Fl d +flag and g unit are an extension to that specification. diff --git a/util/sbase/split.c b/util/sbase/split.c new file mode 100644 index 00000000..7033a284 --- /dev/null +++ b/util/sbase/split.c @@ -0,0 +1,111 @@ +/* See LICENSE file for copyright and license details. */ +#include <ctype.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "util.h" + +static int base = 26, start = 'a'; + +static int +itostr(char *str, int x, int n) +{ + str[n] = '\0'; + while (n-- > 0) { + str[n] = start + (x % base); + x /= base; + } + + return x ? -1 : 0; +} + +static FILE * +nextfile(FILE *f, char *buf, int plen, int slen) +{ + static int filecount = 0; + + if (f) + fshut(f, "<file>"); + if (itostr(buf + plen, filecount++, slen) < 0) + return NULL; + + if (!(f = fopen(buf, "w"))) + eprintf("'%s':", buf); + + return f; +} + +static void +usage(void) +{ + eprintf("usage: %s [-a num] [-b num[k|m|g] | -l num] [-d] " + "[file [prefix]]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + FILE *in = stdin, *out = NULL; + off_t size = 1000, n; + int ret = 0, ch, plen, slen = 2, always = 0; + char name[NAME_MAX + 1], *prefix = "x", *file = NULL; + + ARGBEGIN { + case 'a': + slen = estrtonum(EARGF(usage()), 0, INT_MAX); + break; + case 'b': + always = 1; + if ((size = parseoffset(EARGF(usage()))) < 0) + return 1; + if (!size) + eprintf("size needs to be positive\n"); + break; + case 'd': + base = 10; + start = '0'; + break; + case 'l': + always = 0; + size = estrtonum(EARGF(usage()), 1, MIN(LLONG_MAX, SSIZE_MAX)); + break; + default: + usage(); + } ARGEND + + if (*argv) + file = *argv++; + if (*argv) + prefix = *argv++; + if (*argv) + usage(); + + plen = strlen(prefix); + if (plen + slen > NAME_MAX) + eprintf("names cannot exceed %d bytes\n", NAME_MAX); + estrlcpy(name, prefix, sizeof(name)); + + if (file && strcmp(file, "-")) { + if (!(in = fopen(file, "r"))) + eprintf("fopen %s:", file); + } + + n = 0; + while ((ch = getc(in)) != EOF) { + if (!out || n >= size) { + if (!(out = nextfile(out, name, plen, slen))) + eprintf("fopen: %s:", name); + n = 0; + } + n += (always || ch == '\n'); + putc(ch, out); + } + + ret |= (in != stdin) && fshut(in, "<infile>"); + ret |= out && (out != stdout) && fshut(out, "<outfile>"); + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/sponge.1 b/util/sbase/sponge.1 new file mode 100644 index 00000000..9b668b42 --- /dev/null +++ b/util/sbase/sponge.1 @@ -0,0 +1,19 @@ +.Dd October 8, 2015 +.Dt SPONGE 1 +.Os sbase +.Sh NAME +.Nm sponge +.Nd soak up standard input and write to a file +.Sh SYNOPSIS +.Nm +.Ar file +.Sh DESCRIPTION +.Nm +reads stdin completely, then writes the saved contents to +.Ar file . +This makes it possible to easily create pipes which read from and write to +the same file. +.Pp +If +.Ar file +is a symbolic link, it writes to its destination instead. diff --git a/util/sbase/sponge.c b/util/sbase/sponge.c new file mode 100644 index 00000000..7a0b272b --- /dev/null +++ b/util/sbase/sponge.c @@ -0,0 +1,42 @@ +/* See LICENSE file for copyright and license details. */ +#include <fcntl.h> +#include <stdlib.h> +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s file\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + char tmp[] = "/tmp/sponge-XXXXXX"; + int fd, tmpfd; + + ARGBEGIN { + default: + usage(); + } ARGEND + + if (argc != 1) + usage(); + + if ((tmpfd = mkstemp(tmp)) < 0) + eprintf("mkstemp:"); + unlink(tmp); + if (concat(0, "<stdin>", tmpfd, "<tmpfile>") < 0) + return 1; + if (lseek(tmpfd, 0, SEEK_SET) < 0) + eprintf("lseek:"); + + if ((fd = creat(argv[0], 0666)) < 0) + eprintf("creat %s:", argv[0]); + if (concat(tmpfd, "<tmpfile>", fd, argv[0]) < 0) + return 1; + + return 0; +} diff --git a/util/sbase/strings.1 b/util/sbase/strings.1 new file mode 100644 index 00000000..c7bed734 --- /dev/null +++ b/util/sbase/strings.1 @@ -0,0 +1,50 @@ +.Dd October 8, 2015 +.Dt STRINGS 1 +.Os sbase +.Sh NAME +.Nm strings +.Nd print strings of printable characters in files +.Sh SYNOPSIS +.Nm +.Op Fl a +.Op Fl n Ar num +.Op Fl t Ar format +.Op Ar file ... +.Sh DESCRIPTION +.Nm +writes sequences of at least 4 printable characters in each +.Ar file +to stdout. +If no +.Ar file +is given, +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl a +Scan each +.Ar file +entirely. +This is the default. +.It Fl n Ar num +Print sequences of at least +.Ar num +characters. +The default is 4. +.It Fl t Ar format +Prepend each string with its byte offset, with +.Ar format +being one of +.Sy d , o , x +for decimal, octal or hexadecimal numbers. +.El +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Op Fl t +output format has been changed from "%F %s" to "%8lF: %s", with +.Sy F +being one of +.Sy d , o , x . diff --git a/util/sbase/strings.c b/util/sbase/strings.c new file mode 100644 index 00000000..8f5a1540 --- /dev/null +++ b/util/sbase/strings.c @@ -0,0 +1,98 @@ +/* See LICENSE file for copyright and license details. */ +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "utf.h" +#include "util.h" + +static char *format = ""; + +static void +strings(FILE *fp, const char *fname, size_t min) +{ + Rune r, *rbuf; + size_t i, bread; + off_t off; + + rbuf = ereallocarray(NULL, min, sizeof(*rbuf)); + + for (off = 0, i = 0; (bread = efgetrune(&r, fp, fname)); ) { + off += bread; + if (r == Runeerror) + continue; + if (!isprintrune(r)) { + if (i == min) + putchar('\n'); + i = 0; + continue; + } + if (i == min) { + efputrune(&r, stdout, "<stdout>"); + continue; + } + rbuf[i++] = r; + if (i < min) + continue; + printf(format, (long)off - i); + for (i = 0; i < min; i++) + efputrune(rbuf + i, stdout, "<stdout>"); + } + free(rbuf); +} + +static void +usage(void) +{ + eprintf("usage: %s [-a] [-n num] [-t format] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + FILE *fp; + size_t min = 4; + int ret = 0; + char f; + + ARGBEGIN { + case 'a': + break; + case 'n': + min = estrtonum(EARGF(usage()), 1, LLONG_MAX); + break; + case 't': + format = estrdup("%8l#: "); + f = *EARGF(usage()); + if (f == 'd' || f == 'o' || f == 'x') + format[3] = f; + else + usage(); + break; + default: + usage(); + } ARGEND + + if (!argc) { + strings(stdin, "<stdin>", min); + } else { + for (; *argv; argc--, argv++) { + if (!strcmp(*argv, "-")) { + *argv = "<stdin>"; + fp = stdin; + } else if (!(fp = fopen(*argv, "r"))) { + weprintf("fopen %s:", *argv); + ret = 1; + continue; + } + strings(fp, *argv, min); + if (fp != stdin && fshut(fp, *argv)) + ret = 1; + } + } + + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/sync.1 b/util/sbase/sync.1 new file mode 100644 index 00000000..85f4526e --- /dev/null +++ b/util/sbase/sync.1 @@ -0,0 +1,17 @@ +.Dd October 8, 2015 +.Dt SYNC 1 +.Os sbase +.Sh NAME +.Nm sync +.Nd flush disk cache +.Sh SYNOPSIS +.Nm +.Sh DESCRIPTION +.Nm +invokes +.Xr sync 2 +to flush all unwritten changes to disk. +This is usually done before shutting down, rebooting or halting. +.Sh SEE ALSO +.Xr fsync 2 , +.Xr sync 2 diff --git a/util/sbase/sync.c b/util/sbase/sync.c new file mode 100644 index 00000000..f1b98183 --- /dev/null +++ b/util/sbase/sync.c @@ -0,0 +1,25 @@ +/* See LICENSE file for copyright and license details. */ +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + ARGBEGIN { + default: + usage(); + } ARGEND + + if (argc) + usage(); + sync(); + + return 0; +} diff --git a/util/sbase/tail.1 b/util/sbase/tail.1 new file mode 100644 index 00000000..c425aacf --- /dev/null +++ b/util/sbase/tail.1 @@ -0,0 +1,51 @@ +.Dd October 8, 2015 +.Dt TAIL 1 +.Os sbase +.Sh NAME +.Nm tail +.Nd display final lines of files +.Sh SYNOPSIS +.Nm +.Op Fl f +.Op Fl c Ar num | Fl m Ar num | Fl n Ar num | Fl Ns Ar num +.Op Ar file ... +.Sh DESCRIPTION +.Nm +writes the last 10 lines of each +.Ar file +to stdout. +If no +.Ar file +is given, +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl c Ar num | Fl m Ar num | Fl n Ar num | Fl Ns Ar num +Display final +.Ar num +bytes | characters | lines | lines. +If +.Ar num +begins with '+' +it is an offset from the beginning of each +.Ar file . +If +.Ar num +begins with '-' it is as if no sign was given. +The default is 10 lines. +.It Fl f +If one +.Ar file +is specified, append lines to output as +.Ar file +grows. +.El +.Sh SEE ALSO +.Xr head 1 +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Op Fl Ns Ar num +syntax is an extension to that specification. diff --git a/util/sbase/tail.c b/util/sbase/tail.c new file mode 100644 index 00000000..bbc5ad58 --- /dev/null +++ b/util/sbase/tail.c @@ -0,0 +1,229 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include <fcntl.h> +#include <unistd.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "utf.h" +#include "util.h" + +static char mode = 'n'; + +static int +dropinit(int fd, const char *fname, size_t count) +{ + Rune r; + char buf[BUFSIZ], *p; + ssize_t n; + int nr; + + if (count < 2) + goto copy; + count--; /* numbering starts at 1 */ + while (count && (n = read(fd, buf, sizeof(buf))) > 0) { + switch (mode) { + case 'n': /* lines */ + for (p = buf; count && n > 0; p++, n--) { + if (*p == '\n') + count--; + } + break; + case 'c': /* bytes */ + if (count > n) { + count -= n; + } else { + p = buf + count; + n -= count; + count = 0; + } + break; + case 'm': /* runes */ + for (p = buf; count && n > 0; p += nr, n -= nr, count--) { + nr = charntorune(&r, p, n); + if (!nr) { + /* we don't have a full rune, move + * remaining data to beginning and read + * again */ + memmove(buf, p, n); + break; + } + } + break; + } + } + if (count) { + if (n < 0) + weprintf("read %s:", fname); + if (n <= 0) + return n; + } + + /* write the rest of the buffer */ + if (writeall(1, p, n) < 0) + eprintf("write:"); +copy: + switch (concat(fd, fname, 1, "<stdout>")) { + case -1: /* read error */ + return -1; + case -2: /* write error */ + exit(1); + default: + return 0; + } +} + +static int +taketail(int fd, const char *fname, size_t count) +{ + static char *buf = NULL; + static size_t size = 0; + char *p; + size_t len = 0, left; + ssize_t n; + + if (!count) + return 0; + for (;;) { + if (len + BUFSIZ > size) { + /* make sure we have at least BUFSIZ to read */ + size += 2 * BUFSIZ; + buf = erealloc(buf, size); + } + n = read(fd, buf + len, size - len); + if (n < 0) { + weprintf("read %s:", fname); + return -1; + } + if (n == 0) + break; + len += n; + switch (mode) { + case 'n': /* lines */ + /* ignore the last character; if it is a newline, it + * ends the last line */ + for (p = buf + len - 2, left = count; p >= buf; p--) { + if (*p != '\n') + continue; + left--; + if (!left) { + p++; + break; + } + } + break; + case 'c': /* bytes */ + p = count < len ? buf + len - count : buf; + break; + case 'm': /* runes */ + for (p = buf + len - 1, left = count; p >= buf; p--) { + /* skip utf-8 continuation bytes */ + if (UTF8_POINT(*p)) + continue; + left--; + if (!left) + break; + } + break; + } + if (p > buf) { + len -= p - buf; + memmove(buf, p, len); + } + } + if (writeall(1, buf, len) < 0) + eprintf("write:"); + return 0; +} + +static void +usage(void) +{ + eprintf("usage: %s [-f] [-c num | -m num | -n num | -num] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + struct stat st1, st2; + int fd; + size_t n = 10; + int fflag = 0, ret = 0, newline = 0, many = 0; + char *numstr; + int (*tail)(int, const char *, size_t) = taketail; + + ARGBEGIN { + case 'f': + fflag = 1; + break; + case 'c': + case 'm': + case 'n': + mode = ARGC(); + numstr = EARGF(usage()); + n = MIN(llabs(estrtonum(numstr, LLONG_MIN + 1, + MIN(LLONG_MAX, SIZE_MAX))), SIZE_MAX); + if (strchr(numstr, '+')) + tail = dropinit; + break; + ARGNUM: + n = ARGNUMF(); + break; + default: + usage(); + } ARGEND + + if (!argc) { + if (tail(0, "<stdin>", n) < 0) + ret = 1; + } else { + if ((many = argc > 1) && fflag) + usage(); + for (newline = 0; *argv; argc--, argv++) { + if (!strcmp(*argv, "-")) { + *argv = "<stdin>"; + fd = 0; + } else if ((fd = open(*argv, O_RDONLY)) < 0) { + weprintf("open %s:", *argv); + ret = 1; + continue; + } + if (many) + printf("%s==> %s <==\n", newline ? "\n" : "", *argv); + if (fstat(fd, &st1) < 0) + eprintf("fstat %s:", *argv); + if (!(S_ISFIFO(st1.st_mode) || S_ISREG(st1.st_mode))) + fflag = 0; + newline = 1; + if (tail(fd, *argv, n) < 0) { + ret = 1; + fflag = 0; + } + + if (!fflag) { + if (fd != 0) + close(fd); + continue; + } + for (;;) { + if (concat(fd, *argv, 1, "<stdout>") < 0) + exit(1); + if (fstat(fd, &st2) < 0) + eprintf("fstat %s:", *argv); + if (st2.st_size < st1.st_size) { + fprintf(stderr, "%s: file truncated\n", *argv); + if (lseek(fd, SEEK_SET, 0) < 0) + eprintf("lseek:"); + } + st1 = st2; + sleep(1); + } + } + } + + return ret; +} diff --git a/util/sbase/tar.1 b/util/sbase/tar.1 new file mode 100644 index 00000000..bcc07c21 --- /dev/null +++ b/util/sbase/tar.1 @@ -0,0 +1,76 @@ +.Dd October 8, 2015 +.Dt TAR 1 +.Os sbase +.Sh NAME +.Nm tar +.Nd create, list or extract a tape archive +.Sh SYNOPSIS +.Nm +.Cm x | Cm t | Fl x | Fl t +.Op Fl C Ar dir +.Op Fl J | Fl Z | Fl a | Fl j | Fl z +.Op Fl m +.Op Fl p +.Op Fl f Ar file +.Op Ar file ... +.Nm +.Cm c | Fl c Op Fl C Ar dir +.Op Fl J | Fl Z | Fl a | Fl j | Fl z +.Op Fl h +.Ar path ... +.Op Fl f Ar file +.Sh DESCRIPTION +.Nm +is the standard file archiver. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl c Ar path ... +Create archive from +.Ar path . +.It Fl C Ar dir +Change directory to +.Ar dir +before beginning. +.It Fl f Ar file +Set +.Ar file +as input | output archive instead of stdin | stdout. +If '-', stdin | stdout is used. +.It Fl m +Do not preserve modification time. +.It Fl t +List all files in the archive. +.It Fl x +Extract archive. +.It Fl h +Always dereference symbolic links while recursively traversing directories. +.It Fl J | Fl Z | Fl a | Fl j | Fl z +Use xz | compress | lzma | bzip2 | gzip compression or decompression. +These utilities must be installed separately. +Using these flags is discouraged in favour of the flexibility +and clarity of pipes: +.Bd -literal -offset indent +$ bzip2 -cd archive.tar.bz2 | tar -x +$ gzip -cd archive.tar.gz | tar -x +.Ed +.Bd -literal -offset indent +$ tar -c file ... | bzip2 > archive.tar.bz2 +$ tar -c file ... | gzip2 > archive.tar.gz +.Ed +.El +.Sh SEE ALSO +.Xr ar 1 , +.Xr bzip2 1 , +.Xr gzip 1 +.Sh STANDARDS +The +.Nm +utility is compliant with the UStar (Uniform Standard Tape ARchive) +format defined in the +.St -p1003.1-88 +specification. +For long file paths (>99 bytes), the UStar, 'L' and 'x' header formats are +supported for reading (to a maximum size of PATH_MAX or 255 bytes, depending on +format), and the 'L' format is supported for writing (with unlimited path +size). +Link targets are limited to the UStar maximum of 100 bytes. diff --git a/util/sbase/tar.c b/util/sbase/tar.c new file mode 100644 index 00000000..4d44ec06 --- /dev/null +++ b/util/sbase/tar.c @@ -0,0 +1,662 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> +#include <sys/time.h> +#include <sys/types.h> +#ifndef major +#include <sys/sysmacros.h> +#endif + +#include <assert.h> +#include <errno.h> +#include <fcntl.h> +#include <grp.h> +#include <libgen.h> +#include <pwd.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "fs.h" +#include "util.h" + +#define BLKSIZ (sizeof (struct header)) /* must equal 512 bytes */ + +enum Type { + REG = '0', + AREG = '\0', + HARDLINK = '1', + SYMLINK = '2', + CHARDEV = '3', + BLOCKDEV = '4', + DIRECTORY = '5', + FIFO = '6', + RESERVED = '7' +}; + +struct header { + char name[100]; + char mode[8]; + char uid[8]; + char gid[8]; + char size[12]; + char mtime[12]; + char chksum[8]; + char type; + char linkname[100]; + char magic[6]; + char version[2]; + char uname[32]; + char gname[32]; + char major[8]; + char minor[8]; + char prefix[155]; + char padding[12]; +}; + +static struct dirtime { + char *name; + time_t mtime; +} *dirtimes; + +static size_t dirtimeslen; + +static int tarfd; +static ino_t tarinode; +static dev_t tardev; + +static int mflag, vflag; +static int filtermode; +static const char *filtertool; + +static const char *filtertools[] = { + ['J'] = "xz", + ['Z'] = "compress", + ['a'] = "lzma", + ['j'] = "bzip2", + ['z'] = "gzip", +}; + +static void +pushdirtime(char *name, time_t mtime) +{ + dirtimes = ereallocarray(dirtimes, dirtimeslen + 1, sizeof(*dirtimes)); + dirtimes[dirtimeslen].name = estrdup(name); + dirtimes[dirtimeslen].mtime = mtime; + dirtimeslen++; +} + +static struct dirtime * +popdirtime(void) +{ + if (dirtimeslen) { + dirtimeslen--; + return &dirtimes[dirtimeslen]; + } + return NULL; +} + +static int +comp(int fd, const char *tool, const char *flags) +{ + int fds[2]; + + if (pipe(fds) < 0) + eprintf("pipe:"); + + switch (fork()) { + case -1: + eprintf("fork:"); + case 0: + dup2(fd, 1); + dup2(fds[0], 0); + close(fds[0]); + close(fds[1]); + + execlp(tool, tool, flags, NULL); + weprintf("execlp %s:", tool); + _exit(1); + } + close(fds[0]); + return fds[1]; +} + +static int +decomp(int fd, const char *tool, const char *flags) +{ + int fds[2]; + + if (pipe(fds) < 0) + eprintf("pipe:"); + + switch (fork()) { + case -1: + eprintf("fork:"); + case 0: + dup2(fd, 0); + dup2(fds[1], 1); + close(fds[0]); + close(fds[1]); + + execlp(tool, tool, flags, NULL); + weprintf("execlp %s:", tool); + _exit(1); + } + close(fds[1]); + return fds[0]; +} + +static ssize_t +eread(int fd, void *buf, size_t n) +{ + ssize_t r; + +again: + r = read(fd, buf, n); + if (r < 0) { + if (errno == EINTR) + goto again; + eprintf("read:"); + } + return r; +} + +static ssize_t +ewrite(int fd, const void *buf, size_t n) +{ + ssize_t r; + + if ((r = write(fd, buf, n)) != n) + eprintf("write:"); + return r; +} + +static unsigned +chksum(struct header *h) +{ + unsigned sum, i; + + memset(h->chksum, ' ', sizeof(h->chksum)); + for (i = 0, sum = 0, assert(BLKSIZ == 512); i < BLKSIZ; i++) + sum += *((unsigned char *)h + i); + return sum; +} + +static void +putoctal(char *dst, unsigned num, int size) +{ + if (snprintf(dst, size, "%.*o", size - 1, num) >= size) + eprintf("putoctal: input number '%o' too large\n", num); +} + +static int +archive(const char *path) +{ + static const struct header blank = { + "././@LongLink", "0000600", "0000000", "0000000", "00000000000", + "00000000000" , " ", AREG , "" , "ustar", "00", + }; + char b[BLKSIZ + BLKSIZ], *p; + struct header *h = (struct header *)b; + struct group *gr; + struct passwd *pw; + struct stat st; + ssize_t l, n, r; + int fd = -1; + + if (lstat(path, &st) < 0) { + weprintf("lstat %s:", path); + return 0; + } else if (st.st_ino == tarinode && st.st_dev == tardev) { + weprintf("ignoring %s\n", path); + return 0; + } + pw = getpwuid(st.st_uid); + gr = getgrgid(st.st_gid); + + *h = blank; + n = strlcpy(h->name, path, sizeof(h->name)); + if (n >= sizeof(h->name)) { + *++h = blank; + h->type = 'L'; + putoctal(h->size, n, sizeof(h->size)); + putoctal(h->chksum, chksum(h), sizeof(h->chksum)); + ewrite(tarfd, (char *)h, BLKSIZ); + + for (p = (char *)path; n > 0; n -= BLKSIZ, p += BLKSIZ) { + if (n < BLKSIZ) { + p = memcpy(h--, p, n); + memset(p + n, 0, BLKSIZ - n); + } + ewrite(tarfd, p, BLKSIZ); + } + } + + putoctal(h->mode, (unsigned)st.st_mode & 0777, sizeof(h->mode)); + putoctal(h->uid, (unsigned)st.st_uid, sizeof(h->uid)); + putoctal(h->gid, (unsigned)st.st_gid, sizeof(h->gid)); + putoctal(h->mtime, (unsigned)st.st_mtime, sizeof(h->mtime)); + estrlcpy(h->uname, pw ? pw->pw_name : "", sizeof(h->uname)); + estrlcpy(h->gname, gr ? gr->gr_name : "", sizeof(h->gname)); + + if (S_ISREG(st.st_mode)) { + h->type = REG; + putoctal(h->size, st.st_size, sizeof(h->size)); + fd = open(path, O_RDONLY); + if (fd < 0) + eprintf("open %s:", path); + } else if (S_ISDIR(st.st_mode)) { + h->type = DIRECTORY; + } else if (S_ISLNK(st.st_mode)) { + h->type = SYMLINK; + if ((r = readlink(path, h->linkname, sizeof(h->linkname) - 1)) < 0) + eprintf("readlink %s:", path); + h->linkname[r] = '\0'; + } else if (S_ISCHR(st.st_mode) || S_ISBLK(st.st_mode)) { + h->type = S_ISCHR(st.st_mode) ? CHARDEV : BLOCKDEV; + putoctal(h->major, (unsigned)major(st.st_dev), sizeof(h->major)); + putoctal(h->minor, (unsigned)minor(st.st_dev), sizeof(h->minor)); + } else if (S_ISFIFO(st.st_mode)) { + h->type = FIFO; + } + + putoctal(h->chksum, chksum(h), sizeof(h->chksum)); + ewrite(tarfd, b, BLKSIZ); + + if (fd != -1) { + while ((l = eread(fd, b, BLKSIZ)) > 0) { + if (l < BLKSIZ) + memset(b + l, 0, BLKSIZ - l); + ewrite(tarfd, b, BLKSIZ); + } + close(fd); + } + + return 0; +} + +static int +unarchive(char *fname, ssize_t l, char b[BLKSIZ]) +{ + struct header *h = (struct header *)b; + struct timespec times[2]; + char lname[101], *tmp, *p; + long mode, major, minor, type, mtime, uid, gid; + int fd = -1, lnk = h->type == SYMLINK; + + if (!mflag && ((mtime = strtol(h->mtime, &p, 8)) < 0 || *p != '\0')) + eprintf("strtol %s: invalid mtime\n", h->mtime); + if (strcmp(fname, ".") && strcmp(fname, "./") && remove(fname) < 0) + if (errno != ENOENT) weprintf("remove %s:", fname); + + tmp = estrdup(fname); + mkdirp(dirname(tmp), 0777, 0777); + free(tmp); + + switch (h->type) { + case REG: + case AREG: + case RESERVED: + if ((mode = strtol(h->mode, &p, 8)) < 0 || *p != '\0') + eprintf("strtol %s: invalid mode\n", h->mode); + fd = open(fname, O_WRONLY | O_TRUNC | O_CREAT, 0600); + if (fd < 0) + eprintf("open %s:", fname); + break; + case HARDLINK: + case SYMLINK: + snprintf(lname, sizeof(lname), "%.*s", (int)sizeof(h->linkname), + h->linkname); + if ((lnk ? symlink:link)(lname, fname) < 0) + eprintf("%s %s -> %s:", lnk ? "symlink":"link", fname, lname); + lnk++; + break; + case DIRECTORY: + if ((mode = strtol(h->mode, &p, 8)) < 0 || *p != '\0') + eprintf("strtol %s: invalid mode\n", h->mode); + if (mkdir(fname, (mode_t)mode) < 0 && errno != EEXIST) + eprintf("mkdir %s:", fname); + pushdirtime(fname, mtime); + break; + case CHARDEV: + case BLOCKDEV: + if ((mode = strtol(h->mode, &p, 8)) < 0 || *p != '\0') + eprintf("strtol %s: invalid mode\n", h->mode); + if ((major = strtol(h->major, &p, 8)) < 0 || *p != '\0') + eprintf("strtol %s: invalid major device\n", h->major); + if ((minor = strtol(h->minor, &p, 8)) < 0 || *p != '\0') + eprintf("strtol %s: invalid minor device\n", h->minor); + type = (h->type == CHARDEV) ? S_IFCHR : S_IFBLK; + if (mknod(fname, type | mode, makedev(major, minor)) < 0) + eprintf("mknod %s:", fname); + break; + case FIFO: + if ((mode = strtol(h->mode, &p, 8)) < 0 || *p != '\0') + eprintf("strtol %s: invalid mode\n", h->mode); + if (mknod(fname, S_IFIFO | mode, 0) < 0) + eprintf("mknod %s:", fname); + break; + default: + eprintf("unsupported tar-filetype %c\n", h->type); + } + + if ((uid = strtol(h->uid, &p, 8)) < 0 || *p != '\0') + eprintf("strtol %s: invalid uid\n", h->uid); + if ((gid = strtol(h->gid, &p, 8)) < 0 || *p != '\0') + eprintf("strtol %s: invalid gid\n", h->gid); + + if (fd != -1) { + for (; l > 0; l -= BLKSIZ) + if (eread(tarfd, b, BLKSIZ) > 0) + ewrite(fd, b, MIN(l, BLKSIZ)); + close(fd); + } + + if (lnk == 1) + return 0; + + times[0].tv_sec = times[1].tv_sec = mtime; + times[0].tv_nsec = times[1].tv_nsec = 0; + if (!mflag && utimensat(AT_FDCWD, fname, times, AT_SYMLINK_NOFOLLOW) < 0) + weprintf("utimensat %s:", fname); + if (lnk) { + if (!getuid() && lchown(fname, uid, gid)) + weprintf("lchown %s:", fname); + } else { + if (!getuid() && chown(fname, uid, gid)) + weprintf("chown %s:", fname); + if (chmod(fname, mode) < 0) + eprintf("fchmod %s:", fname); + } + + return 0; +} + +static void +skipblk(ssize_t l) +{ + char b[BLKSIZ]; + + for (; l > 0; l -= BLKSIZ) + if (!eread(tarfd, b, BLKSIZ)) + break; +} + +static int +print(char *fname, ssize_t l, char b[BLKSIZ]) +{ + puts(fname); + skipblk(l); + return 0; +} + +static void +c(int dirfd, const char *name, struct stat *st, void *data, struct recursor *r) +{ + archive(r->path); + if (vflag) + puts(r->path); + + if (S_ISDIR(st->st_mode)) + recurse(dirfd, name, NULL, r); +} + +static void +sanitize(struct header *h) +{ + size_t i, j, l; + struct { + char *f; + size_t l; + } fields[] = { + { h->mode, sizeof(h->mode) }, + { h->uid, sizeof(h->uid) }, + { h->gid, sizeof(h->gid) }, + { h->size, sizeof(h->size) }, + { h->mtime, sizeof(h->mtime) }, + { h->chksum, sizeof(h->chksum) }, + { h->major, sizeof(h->major) }, + { h->minor, sizeof(h->minor) } + }; + + /* Numeric fields can be terminated with spaces instead of + * NULs as per the ustar specification. Patch all of them to + * use NULs so we can perform string operations on them. */ + for (i = 0; i < LEN(fields); i++){ + j = 0, l = fields[i].l - 1; + for (; j < l && fields[i].f[j] == ' '; j++); + for (; j <= l; j++) + if (fields[i].f[j] == ' ') + fields[i].f[j] = '\0'; + if (fields[i].f[l]) + eprintf("numeric field #%d (%.*s) is not null or space terminated\n", + i, l+1, fields[i].f); + } +} + +static void +chktar(struct header *h) +{ + const char *reason; + char tmp[sizeof h->chksum], *err; + long sum, i; + + if (h->prefix[0] == '\0' && h->name[0] == '\0') { + reason = "empty filename"; + goto bad; + } + if (h->magic[0] && strncmp("ustar", h->magic, 5)) { + reason = "not ustar format"; + goto bad; + } + memcpy(tmp, h->chksum, sizeof(tmp)); + for (i = sizeof(tmp)-1; i > 0 && tmp[i] == ' '; i--) { + tmp[i] = '\0'; + } + sum = strtol(tmp, &err, 8); + if (sum < 0 || sum >= BLKSIZ*256 || *err != '\0') { + reason = "invalid checksum"; + goto bad; + } + if (sum != chksum(h)) { + reason = "incorrect checksum"; + goto bad; + } + memcpy(h->chksum, tmp, sizeof(tmp)); + return; +bad: + eprintf("malformed tar archive: %s\n", reason); +} + +static void +xt(int argc, char *argv[], int mode) +{ + long size, l; + char b[BLKSIZ], fname[l = PATH_MAX + 1], *p, *q = NULL; + int i, m, n; + int (*fn)(char *, ssize_t, char[BLKSIZ]) = (mode == 'x') ? unarchive : print; + struct timespec times[2]; + struct header *h = (struct header *)b; + struct dirtime *dirtime; + + while (eread(tarfd, b, BLKSIZ) > 0 && (h->name[0] || h->prefix[0])) { + chktar(h); + sanitize(h); + + if ((size = strtol(h->size, &p, 8)) < 0 || *p != '\0') + eprintf("strtol %s: invalid size\n", h->size); + + /* Long file path is read directly into fname*/ + if (h->type == 'L' || h->type == 'x' || h->type == 'g') { + + /* Read header only up to size of fname buffer */ + for (q = fname; q < fname+size; q += BLKSIZ) { + if (q + BLKSIZ >= fname + l) + eprintf("name exceeds buffer: %.*s\n", q-fname, fname); + eread(tarfd, q, BLKSIZ); + } + + /* Convert pax x header with 'path=' field into L header */ + if (h->type == 'x') for (q = fname; q < fname+size-16; q += n) { + if ((n = strtol(q, &p, 10)) < 0 || *p != ' ') + eprintf("strtol %.*s: invalid number\n", p+1-q, q); + if (n && strncmp(p+1, "path=", 5) == 0) { + memmove(fname, p+6, size = q+n - p-6 - 1); + h->type = 'L'; + break; + } + } + fname[size] = '\0'; + + /* Non L-like header (eg. pax 'g') is skipped by setting q=null */ + if (h->type != 'L') + q = NULL; + continue; + } + + /* Ustar path is copied into fname if no L header (ie: q is NULL) */ + if (!q) { + m = sizeof h->prefix, n = sizeof h->name; + p = "/" + !h->prefix[0]; + snprintf(fname, l, "%.*s%s%.*s", m, h->prefix, p, n, h->name); + } + q = NULL; + + /* If argc > 0 then only extract the given files/dirs */ + if (argc) { + for (i = 0; i < argc; i++) { + if (strncmp(argv[i], fname, n = strlen(argv[i])) == 0) + if (strchr("/", fname[n]) || argv[i][n-1] == '/') + break; + } + if (i == argc) { + skipblk(size); + continue; + } + } + + fn(fname, size, b); + if (vflag && mode != 't') + puts(fname); + } + + if (mode == 'x' && !mflag) { + while ((dirtime = popdirtime())) { + times[0].tv_sec = times[1].tv_sec = dirtime->mtime; + times[0].tv_nsec = times[1].tv_nsec = 0; + if (utimensat(AT_FDCWD, dirtime->name, times, 0) < 0) + eprintf("utimensat %s:", fname); + free(dirtime->name); + } + free(dirtimes); + dirtimes = NULL; + } +} + +char **args; +int argn; + +static void +usage(void) +{ + eprintf("usage: %s [x | t | -x | -t] [-C dir] [-J | -Z | -a | -j | -z] [-m] [-p] " + "[-f file] [file ...]\n" + " %s [c | -c] [-C dir] [-J | -Z | -a | -j | -z] [-h] path ... " + "[-f file]\n", argv0, argv0); +} + +int +main(int argc, char *argv[]) +{ + struct recursor r = { .fn = c, .follow = 'P', .flags = DIRFIRST }; + struct stat st; + char *file = NULL, *dir = ".", mode = '\0'; + int fd; + + argv0 = argv[0]; + if (argc > 1 && strchr("cxt", mode = *argv[1])) + *(argv[1]+1) ? *argv[1] = '-' : (*++argv = argv0, --argc); + + ARGBEGIN { + case 'x': + case 'c': + case 't': + mode = ARGC(); + break; + case 'C': + dir = EARGF(usage()); + break; + case 'f': + file = EARGF(usage()); + break; + case 'm': + mflag = 1; + break; + case 'J': + case 'Z': + case 'a': + case 'j': + case 'z': + filtermode = ARGC(); + filtertool = filtertools[filtermode]; + break; + case 'h': + r.follow = 'L'; + break; + case 'v': + vflag = 1; + break; + case 'p': + break; /* Do nothing as already default behaviour */ + default: + usage(); + } ARGEND + + switch (mode) { + case 'c': + if (!argc) + usage(); + tarfd = 1; + if (file && *file != '-') { + tarfd = open(file, O_WRONLY | O_TRUNC | O_CREAT, 0644); + if (tarfd < 0) + eprintf("open %s:", file); + if (lstat(file, &st) < 0) + eprintf("lstat %s:", file); + tarinode = st.st_ino; + tardev = st.st_dev; + } + + if (filtertool) + tarfd = comp(tarfd, filtertool, "-cf"); + + if (chdir(dir) < 0) + eprintf("chdir %s:", dir); + for (; *argv; argc--, argv++) + recurse(AT_FDCWD, *argv, NULL, &r); + break; + case 't': + case 'x': + tarfd = 0; + if (file && *file != '-') { + tarfd = open(file, O_RDONLY); + if (tarfd < 0) + eprintf("open %s:", file); + } + + if (filtertool) { + fd = tarfd; + tarfd = decomp(tarfd, filtertool, "-cdf"); + close(fd); + } + + if (chdir(dir) < 0) + eprintf("chdir %s:", dir); + xt(argc, argv, mode); + break; + default: + usage(); + } + + return recurse_status; +} diff --git a/util/sbase/tee.1 b/util/sbase/tee.1 new file mode 100644 index 00000000..eaf2e202 --- /dev/null +++ b/util/sbase/tee.1 @@ -0,0 +1,26 @@ +.Dd October 8, 2015 +.Dt TEE 1 +.Os sbase +.Sh NAME +.Nm tee +.Nd multiply stdin +.Sh SYNOPSIS +.Nm +.Op Fl ai +.Op Ar file ... +.Sh DESCRIPTION +.Nm +reads from stdin and writes to stdout and each +.Ar file . +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl a +Append to each +.Ar file +instead of overwriting it. +.It Fl i +Ignore SIGINT, see +.Xr signal 7 . +.El +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/tee.c b/util/sbase/tee.c new file mode 100644 index 00000000..eac106ca --- /dev/null +++ b/util/sbase/tee.c @@ -0,0 +1,60 @@ +/* See LICENSE file for copyright and license details. */ +#include <fcntl.h> +#include <signal.h> +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-ai] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int *fds = NULL; + size_t i, nfds; + ssize_t n; + int ret = 0, aflag = O_TRUNC, iflag = 0; + char buf[BUFSIZ]; + + ARGBEGIN { + case 'a': + aflag = O_APPEND; + break; + case 'i': + iflag = 1; + break; + default: + usage(); + } ARGEND + + if (iflag && signal(SIGINT, SIG_IGN) == SIG_ERR) + eprintf("signal:"); + nfds = argc + 1; + fds = ecalloc(nfds, sizeof(*fds)); + + for (i = 0; i < argc; i++) { + if ((fds[i] = open(argv[i], O_WRONLY|O_CREAT|aflag, 0666)) < 0) { + weprintf("open %s:", argv[i]); + ret = 1; + } + } + fds[i] = 1; + + while ((n = read(0, buf, sizeof(buf))) > 0) { + for (i = 0; i < nfds; i++) { + if (fds[i] >= 0 && writeall(fds[i], buf, n) < 0) { + weprintf("write %s:", (i != argc) ? argv[i] : "<stdout>"); + fds[i] = -1; + ret = 1; + } + } + } + if (n < 0) + eprintf("read <stdin>:"); + + return ret; +} diff --git a/util/sbase/test.1 b/util/sbase/test.1 new file mode 100644 index 00000000..c7d4f50c --- /dev/null +++ b/util/sbase/test.1 @@ -0,0 +1,131 @@ +.Dd October 8, 2015 +.Dt TEST 1 +.Os sbase +.Sh NAME +.Nm test +.Nd evaluate expression +.Sh SYNOPSIS +.Nm +.Ar expression +.Sh DESCRIPTION +.Nm +returns the status of the +.Ar expression . +.Sh OPTIONS +.Bl -tag -width Ds +.It ! Ar expression +invert +.Ar expression . +.It ( Fl e | Fl s ) Ar file +.Ar file +exists and has (any size +.Op Fl e +| non-zero size +.Op Fl s ) . +.It ( Fl f | Fl d | Fl p | Fl hL | Fl S | Fl b | Fl c ) Ar file +.Ar file +exists and is a +(regular file +.Op Fl f +| directory +.Op Fl d +| named pipe +.Op Fl p +| symbolic link +.Op Fl h | Fl L +| socket +.Op Fl S +| block special +.Op Fl b +| character special +.Op Fl c ) . +.It ( Fl k | Fl g | Fl u | Fl r | Fl w | Fl x ) Ar file +.Ar file +exists and has +.Xr ( sticky 1 +.Op Fl k +| +.Xr setgid 2 +.Op Fl g +| +.Xr setuid 4 +.Op Fl u +| +.Xr read 4 +.Op Fl r +| +.Xr write 2 +.Op Fl w +| +.Xr execute 1 +.Op Fl x ) +permissions. +.It Fl t Ar fd +.Ar fd +as a file descriptor is associated with a terminal. +.It Ar string +True if +.Ar string +is not the null string. +.It ( Fl z | Fl n ) Ar string +True if +.Ar string +has (zero +.Op Fl z +| non-zero +.Op Fl n ) +length. +.It Ar s1 Sy ( = | != ) Ar s2 +True if strings +.Ar s1 +and +.Ar s2 +are +(identical +.Oo Sy = Oc +| different +.Oo Sy != Oc ) . +.It Ar n1 ( Fl eq | Fl ne | Fl gt | Fl ge | Fl le | Fl lt ) Ar n2 +True if integers +.Ar n1 +and +.Ar n2 +are (= +.Op Fl eq +| != +.Op Fl ne +| > +.Op Fl gt +| >= +.Op Fl ge +| <= +.Op Fl le +| < +.Op Fl lt ) . +.It Ar f1 ( Fl ef | Fl ot | Fl nt ) Ar f2 +True if file +.Ar f1 +(refer to the same inode as +.Op Fl ef +| has an older mtime than +.Op Fl ot +| has a newer mtime than +.Op Fl nt ) +file +.Ar f2 . +.El +.Sh EXIT STATUS +.Bl -tag -width Ds +.It 0 +.Ar expression +is true. +.It 1 +.Ar expression +is false. +.It > 1 +An error occurred. +.El +.Sh SEE ALSO +.Xr expr 1 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/test.c b/util/sbase/test.c new file mode 100644 index 00000000..1e88a221 --- /dev/null +++ b/util/sbase/test.c @@ -0,0 +1,247 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include <ctype.h> +#include <fcntl.h> +#include <string.h> +#include <unistd.h> + +#include "util.h" + +static int +intcmp(char *a, char *b) +{ + char *s; + int asign = *a == '-' ? -1 : 1; + int bsign = *b == '-' ? -1 : 1; + + if (*a == '-' || *a == '+') a += 1; + if (*b == '-' || *b == '+') b += 1; + + if (!*a || !*b) + goto noint; + for (s = a; *s; s++) + if (!isdigit(*s)) + goto noint; + for (s = b; *s; s++) + if (!isdigit(*s)) + goto noint; + + while (*a == '0') a++; + while (*b == '0') b++; + asign *= !!*a; + bsign *= !!*b; + + if (asign != bsign) + return asign < bsign ? -1 : 1; + else if (strlen(a) != strlen(b)) + return asign * (strlen(a) < strlen(b) ? -1 : 1); + else + return asign * strcmp(a, b); + +noint: + enprintf(2, "expected integer operands\n"); + + return 0; /* not reached */ +} + +static int +mtimecmp(struct stat *buf1, struct stat *buf2) +{ + if (buf1->st_mtime < buf2->st_mtime) return -1; + if (buf1->st_mtime > buf2->st_mtime) return +1; +#ifdef st_mtime + if (buf1->st_mtim.tv_nsec < buf2->st_mtim.tv_nsec) return -1; + if (buf1->st_mtim.tv_nsec > buf2->st_mtim.tv_nsec) return +1; +#endif + return 0; +} + +static int unary_b(char *s) { struct stat buf; if ( stat(s, &buf)) return 0; return S_ISBLK (buf.st_mode); } +static int unary_c(char *s) { struct stat buf; if ( stat(s, &buf)) return 0; return S_ISCHR (buf.st_mode); } +static int unary_d(char *s) { struct stat buf; if ( stat(s, &buf)) return 0; return S_ISDIR (buf.st_mode); } +static int unary_f(char *s) { struct stat buf; if ( stat(s, &buf)) return 0; return S_ISREG (buf.st_mode); } +static int unary_g(char *s) { struct stat buf; if ( stat(s, &buf)) return 0; return S_ISGID & buf.st_mode ; } +static int unary_h(char *s) { struct stat buf; if (lstat(s, &buf)) return 0; return S_ISLNK (buf.st_mode); } +static int unary_k(char *s) { struct stat buf; if ( stat(s, &buf)) return 0; return S_ISVTX & buf.st_mode ; } +static int unary_p(char *s) { struct stat buf; if ( stat(s, &buf)) return 0; return S_ISFIFO (buf.st_mode); } +static int unary_S(char *s) { struct stat buf; if ( stat(s, &buf)) return 0; return S_ISSOCK (buf.st_mode); } +static int unary_s(char *s) { struct stat buf; if ( stat(s, &buf)) return 0; return buf.st_size ; } +static int unary_u(char *s) { struct stat buf; if ( stat(s, &buf)) return 0; return S_ISUID & buf.st_mode ; } + +static int unary_n(char *s) { return *s; } +static int unary_z(char *s) { return !*s; } + +static int unary_e(char *s) { return !faccessat(AT_FDCWD, s, F_OK, AT_EACCESS); } +static int unary_r(char *s) { return !faccessat(AT_FDCWD, s, R_OK, AT_EACCESS); } +static int unary_w(char *s) { return !faccessat(AT_FDCWD, s, W_OK, AT_EACCESS); } +static int unary_x(char *s) { return !faccessat(AT_FDCWD, s, X_OK, AT_EACCESS); } + +static int unary_t(char *s) { int fd = enstrtonum(2, s, 0, INT_MAX); return isatty(fd); } + +static int binary_se(char *s1, char *s2) { return !strcmp(s1, s2); } +static int binary_sn(char *s1, char *s2) { return strcmp(s1, s2); } + +static int binary_eq(char *s1, char *s2) { return intcmp(s1, s2) == 0; } +static int binary_ne(char *s1, char *s2) { return intcmp(s1, s2) != 0; } +static int binary_gt(char *s1, char *s2) { return intcmp(s1, s2) > 0; } +static int binary_ge(char *s1, char *s2) { return intcmp(s1, s2) >= 0; } +static int binary_lt(char *s1, char *s2) { return intcmp(s1, s2) < 0; } +static int binary_le(char *s1, char *s2) { return intcmp(s1, s2) <= 0; } + +static int +binary_ef(char *s1, char *s2) +{ + struct stat buf1, buf2; + if (stat(s1, &buf1) || stat(s2, &buf2)) return 0; + return buf1.st_dev == buf2.st_dev && buf1.st_ino == buf2.st_ino; +} + +static int +binary_ot(char *s1, char *s2) +{ + struct stat buf1, buf2; + if (stat(s1, &buf1) || stat(s2, &buf2)) return 0; + return mtimecmp(&buf1, &buf2) < 0; +} + +static int +binary_nt(char *s1, char *s2) +{ + struct stat buf1, buf2; + if (stat(s1, &buf1) || stat(s2, &buf2)) return 0; + return mtimecmp(&buf1, &buf2) > 0; +} + +struct test { + char *name; + union { + int (*u)(char *); + int (*b)(char *, char *); + } func; +}; + +static struct test unary[] = { + { "-b", { .u = unary_b } }, + { "-c", { .u = unary_c } }, + { "-d", { .u = unary_d } }, + { "-e", { .u = unary_e } }, + { "-f", { .u = unary_f } }, + { "-g", { .u = unary_g } }, + { "-h", { .u = unary_h } }, + { "-k", { .u = unary_k } }, + { "-L", { .u = unary_h } }, + { "-n", { .u = unary_n } }, + { "-p", { .u = unary_p } }, + { "-r", { .u = unary_r } }, + { "-S", { .u = unary_S } }, + { "-s", { .u = unary_s } }, + { "-t", { .u = unary_t } }, + { "-u", { .u = unary_u } }, + { "-w", { .u = unary_w } }, + { "-x", { .u = unary_x } }, + { "-z", { .u = unary_z } }, + + { NULL }, +}; + +static struct test binary[] = { + { "=" , { .b = binary_se } }, + { "!=" , { .b = binary_sn } }, + { "-eq", { .b = binary_eq } }, + { "-ne", { .b = binary_ne } }, + { "-gt", { .b = binary_gt } }, + { "-ge", { .b = binary_ge } }, + { "-lt", { .b = binary_lt } }, + { "-le", { .b = binary_le } }, + { "-ef", { .b = binary_ef } }, + { "-ot", { .b = binary_ot } }, + { "-nt", { .b = binary_nt } }, + + { NULL }, +}; + +static struct test * +find_test(struct test *tests, char *name) +{ + struct test *t; + + for (t = tests; t->name; t++) + if (!strcmp(t->name, name)) + return t; + + return NULL; +} + +static int +noarg(char *argv[]) +{ + return 0; +} + +static int +onearg(char *argv[]) +{ + return unary_n(argv[0]); +} + +static int +twoarg(char *argv[]) +{ + struct test *t; + + if (!strcmp(argv[0], "!")) + return !onearg(argv + 1); + + if ((t = find_test(unary, *argv))) + return t->func.u(argv[1]); + + enprintf(2, "bad unary test %s\n", argv[0]); + + return 0; /* not reached */ +} + +static int +threearg(char *argv[]) +{ + struct test *t = find_test(binary, argv[1]); + + if (t) + return t->func.b(argv[0], argv[2]); + + if (!strcmp(argv[0], "!")) + return !twoarg(argv + 1); + + enprintf(2, "bad binary test %s\n", argv[1]); + + return 0; /* not reached */ +} + +static int +fourarg(char *argv[]) +{ + if (!strcmp(argv[0], "!")) + return !threearg(argv + 1); + + enprintf(2, "too many arguments\n"); + + return 0; /* not reached */ +} + +int +main(int argc, char *argv[]) +{ + int (*narg[])(char *[]) = { noarg, onearg, twoarg, threearg, fourarg }; + size_t len; + + argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0; + + len = argv0 ? strlen(argv0) : 0; + if (len && argv0[--len] == '[' && (!len || argv0[--len] == '/') && strcmp(argv[--argc], "]")) + enprintf(2, "no matching ]\n"); + + if (argc > 4) + enprintf(2, "too many arguments\n"); + + return !narg[argc](argv); +} diff --git a/util/sbase/text.h b/util/sbase/text.h new file mode 100644 index 00000000..9858592b --- /dev/null +++ b/util/sbase/text.h @@ -0,0 +1,16 @@ +/* See LICENSE file for copyright and license details. */ + +struct line { + char *data; + size_t len; +}; + +struct linebuf { + struct line *lines; + size_t nlines; + size_t capacity; +}; +#define EMPTY_LINEBUF {NULL, 0, 0,} +void getlines(FILE *, struct linebuf *); + +int linecmp(struct line *, struct line *); diff --git a/util/sbase/tftp.1 b/util/sbase/tftp.1 new file mode 100644 index 00000000..4ad73a23 --- /dev/null +++ b/util/sbase/tftp.1 @@ -0,0 +1,32 @@ +.Dd October 8, 2015 +.Dt TFTP 1 +.Os sbase +.Sh NAME +.Nm tftp +.Nd trivial file transfer protocol client +.Sh SYNOPSIS +.Nm +.Fl h Ar host +.Op Fl p Ar port +.Op Fl x | c +.Ar file +.Sh DESCRIPTION +.Nm +is a client that implements the trivial file transfer protocol over +either IPv4 or IPv6 as specified in RFC 1350. +It can be used to transfer files to and from remote machines. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl h Ar host +Set the remote hostname. +.It Fl p Ar port +Set the remote port. +It defaults to port 69. +.It Fl x +Extract a file from the server. +This is the default if no flags are specified. +Output goes to stdout. +.It Fl c +Create a file on the server. +Input comes from stdin. +.El diff --git a/util/sbase/tftp.c b/util/sbase/tftp.c new file mode 100644 index 00000000..0a099ff2 --- /dev/null +++ b/util/sbase/tftp.c @@ -0,0 +1,309 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/time.h> +#include <sys/types.h> +#include <sys/socket.h> + +#include <netdb.h> +#include <netinet/in.h> + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "util.h" + +#define BLKSIZE 512 +#define HDRSIZE 4 +#define PKTSIZE (BLKSIZE + HDRSIZE) + +#define TIMEOUT_SEC 5 +/* transfer will time out after NRETRIES * TIMEOUT_SEC */ +#define NRETRIES 5 + +#define RRQ 1 +#define WWQ 2 +#define DATA 3 +#define ACK 4 +#define ERR 5 + +static char *errtext[] = { + "Undefined", + "File not found", + "Access violation", + "Disk full or allocation exceeded", + "Illegal TFTP operation", + "Unknown transfer ID", + "File already exists", + "No such user" +}; + +static struct sockaddr_storage to; +static socklen_t tolen; +static int timeout; +static int state; +static int s; + +static int +packreq(unsigned char *buf, int op, char *path, char *mode) +{ + unsigned char *p = buf; + + *p++ = op >> 8; + *p++ = op & 0xff; + if (strlen(path) + 1 > 256) + eprintf("filename too long\n"); + memcpy(p, path, strlen(path) + 1); + p += strlen(path) + 1; + memcpy(p, mode, strlen(mode) + 1); + p += strlen(mode) + 1; + return p - buf; +} + +static int +packack(unsigned char *buf, int blkno) +{ + buf[0] = ACK >> 8; + buf[1] = ACK & 0xff; + buf[2] = blkno >> 8; + buf[3] = blkno & 0xff; + return 4; +} + +static int +packdata(unsigned char *buf, int blkno) +{ + buf[0] = DATA >> 8; + buf[1] = DATA & 0xff; + buf[2] = blkno >> 8; + buf[3] = blkno & 0xff; + return 4; +} + +static int +unpackop(unsigned char *buf) +{ + return (buf[0] << 8) | (buf[1] & 0xff); +} + +static int +unpackblkno(unsigned char *buf) +{ + return (buf[2] << 8) | (buf[3] & 0xff); +} + +static int +unpackerrc(unsigned char *buf) +{ + int errc; + + errc = (buf[2] << 8) | (buf[3] & 0xff); + if (errc < 0 || errc >= LEN(errtext)) + eprintf("bad error code: %d\n", errc); + return errc; +} + +static int +writepkt(unsigned char *buf, int len) +{ + int n; + + n = sendto(s, buf, len, 0, (struct sockaddr *)&to, + tolen); + if (n < 0) + if (errno != EINTR) + eprintf("sendto:"); + return n; +} + +static int +readpkt(unsigned char *buf, int len) +{ + int n; + + n = recvfrom(s, buf, len, 0, (struct sockaddr *)&to, + &tolen); + if (n < 0) { + if (errno != EINTR && errno != EWOULDBLOCK) + eprintf("recvfrom:"); + timeout++; + if (timeout == NRETRIES) + eprintf("transfer timed out\n"); + } else { + timeout = 0; + } + return n; +} + +static void +getfile(char *file) +{ + unsigned char buf[PKTSIZE]; + int n, op, blkno, nextblkno = 1, done = 0; + + state = RRQ; + for (;;) { + switch (state) { + case RRQ: + n = packreq(buf, RRQ, file, "octet"); + writepkt(buf, n); + n = readpkt(buf, sizeof(buf)); + if (n > 0) { + op = unpackop(buf); + if (op != DATA && op != ERR) + eprintf("bad opcode: %d\n", op); + state = op; + } + break; + case DATA: + n -= HDRSIZE; + if (n < 0) + eprintf("truncated packet\n"); + blkno = unpackblkno(buf); + if (blkno == nextblkno) { + nextblkno++; + write(1, &buf[HDRSIZE], n); + } + if (n < BLKSIZE) + done = 1; + state = ACK; + break; + case ACK: + n = packack(buf, blkno); + writepkt(buf, n); + if (done) + return; + n = readpkt(buf, sizeof(buf)); + if (n > 0) { + op = unpackop(buf); + if (op != DATA && op != ERR) + eprintf("bad opcode: %d\n", op); + state = op; + } + break; + case ERR: + eprintf("error: %s\n", errtext[unpackerrc(buf)]); + } + } +} + +static void +putfile(char *file) +{ + unsigned char inbuf[PKTSIZE], outbuf[PKTSIZE]; + int inb, outb, op, blkno, nextblkno = 0, done = 0; + + state = WWQ; + for (;;) { + switch (state) { + case WWQ: + outb = packreq(outbuf, WWQ, file, "octet"); + writepkt(outbuf, outb); + inb = readpkt(inbuf, sizeof(inbuf)); + if (inb > 0) { + op = unpackop(inbuf); + if (op != ACK && op != ERR) + eprintf("bad opcode: %d\n", op); + state = op; + } + break; + case DATA: + if (blkno == nextblkno) { + nextblkno++; + packdata(outbuf, nextblkno); + outb = read(0, &outbuf[HDRSIZE], BLKSIZE); + if (outb < BLKSIZE) + done = 1; + } + writepkt(outbuf, outb + HDRSIZE); + inb = readpkt(inbuf, sizeof(inbuf)); + if (inb > 0) { + op = unpackop(inbuf); + if (op != ACK && op != ERR) + eprintf("bad opcode: %d\n", op); + state = op; + } + break; + case ACK: + if (inb < HDRSIZE) + eprintf("truncated packet\n"); + blkno = unpackblkno(inbuf); + if (blkno == nextblkno) + if (done) + return; + state = DATA; + break; + case ERR: + eprintf("error: %s\n", errtext[unpackerrc(inbuf)]); + } + } +} + +static void +usage(void) +{ + eprintf("usage: %s -h host [-p port] [-x | -c] file\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + struct addrinfo hints, *res, *r; + struct timeval tv; + char *host = NULL, *port = "tftp"; + void (*fn)(char *) = getfile; + int ret; + + ARGBEGIN { + case 'h': + host = EARGF(usage()); + break; + case 'p': + port = EARGF(usage()); + break; + case 'x': + fn = getfile; + break; + case 'c': + fn = putfile; + break; + default: + usage(); + } ARGEND + + if (!host || !argc) + usage(); + + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_DGRAM; + hints.ai_protocol = IPPROTO_UDP; + ret = getaddrinfo(host, port, &hints, &res); + if (ret) + eprintf("getaddrinfo: %s\n", gai_strerror(ret)); + + for (r = res; r; r = r->ai_next) { + if (r->ai_family != AF_INET && + r->ai_family != AF_INET6) + continue; + s = socket(r->ai_family, r->ai_socktype, + r->ai_protocol); + if (s < 0) + continue; + break; + } + if (!r) + eprintf("cannot create socket\n"); + memcpy(&to, r->ai_addr, r->ai_addrlen); + tolen = r->ai_addrlen; + freeaddrinfo(res); + + tv.tv_sec = TIMEOUT_SEC; + tv.tv_usec = 0; + if (setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)) < 0) + eprintf("setsockopt:"); + + fn(argv[0]); + return 0; +} diff --git a/util/sbase/time.1 b/util/sbase/time.1 new file mode 100644 index 00000000..645da5ef --- /dev/null +++ b/util/sbase/time.1 @@ -0,0 +1,45 @@ +.Dd October 8, 2015 +.Dt TIME 1 +.Os sbase +.Sh NAME +.Nm time +.Nd time a command +.Sh SYNOPSIS +.Nm +.Op Fl p +.Ar cmd +.Op Ar arg ... +.Sh DESCRIPTION +.Nm +executes +.Ar cmd +and writes timing statistics to stderr after it finishes. +The statistics include the elapsed real time +between invocation and termination and the user +and system CPU time (see +.Xr times 2 ) . +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl p +Use the format "real %f\enuser %f\ensys %f\en" for printing. +This is the default. +.El +.Sh EXIT STATUS +.Bl -tag -width Ds +.It 0 +.Ar cmd +executed successfully. +.It 1 +Internal error. +.It 126 +.Ar cmd +was found but could not be executed. +.It 127 +.Ar cmd +could not be found. +.El +.Sh SEE ALSO +.Xr times 2 , +.Xr waitpid 2 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/time.c b/util/sbase/time.c new file mode 100644 index 00000000..60a8c8df --- /dev/null +++ b/util/sbase/time.c @@ -0,0 +1,73 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/times.h> +#include <sys/wait.h> + +#include <errno.h> +#include <stdio.h> +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-p] cmd [arg ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + pid_t pid; + struct tms tms; /* user and sys times */ + clock_t r0, r1; /* real time */ + long ticks; /* per second */ + int status, savederrno, ret = 0; + + ARGBEGIN { + case 'p': + break; + default: + usage(); + } ARGEND + + if (!argc) + usage(); + + if ((ticks = sysconf(_SC_CLK_TCK)) <= 0) + eprintf("sysconf _SC_CLK_TCK:"); + + if ((r0 = times(&tms)) == (clock_t)-1) + eprintf("times:"); + + switch ((pid = fork())) { + case -1: + eprintf("fork:"); + case 0: + execvp(argv[0], argv); + savederrno = errno; + weprintf("execvp %s:", argv[0]); + _exit(126 + (savederrno == ENOENT)); + default: + break; + } + waitpid(pid, &status, 0); + + if ((r1 = times(&tms)) == (clock_t)-1) + eprintf("times:"); + + if (WIFSIGNALED(status)) { + fprintf(stderr, "Command terminated by signal %d\n", + WTERMSIG(status)); + ret = 128 + WTERMSIG(status); + } + + fprintf(stderr, "real %f\nuser %f\nsys %f\n", + (r1 - r0) / (double)ticks, + tms.tms_cutime / (double)ticks, + tms.tms_cstime / (double)ticks); + + if (WIFEXITED(status)) + ret = WEXITSTATUS(status); + + return ret; +} diff --git a/util/sbase/touch.1 b/util/sbase/touch.1 new file mode 100644 index 00000000..80c6ebb6 --- /dev/null +++ b/util/sbase/touch.1 @@ -0,0 +1,63 @@ +.Dd October 8, 2015 +.Dt TOUCH 1 +.Os sbase +.Sh NAME +.Nm touch +.Nd set file timestamps +.Sh SYNOPSIS +.Nm +.Op Fl acm +.Op Fl d Ar time | Fl r Ar ref_file | Fl T Ar time | Fl t Ar time +.Ar file ... +.Sh DESCRIPTION +.Nm +sets the access and modification time of each +.Ar file +to the current time of day. +If +.Ar file +doesn't exist, it is created with default permissions. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl a | Fl m +Set the access | modification time of +.Ar file . +.It Fl c +Don't create +.Ar file +if it doesn't exist, not affecting exit status. +.It Fl d Ar time +Set the +.Ar time +of the format YYYY-MM-DDThh:mm:SS[Z] used for +.Op Fl am . +.It Fl r Ar ref_file +Set the +.Ar time +used for +.Op Fl am +to the modification time of +.Ar ref_file . +.It Fl T Ar time +Set the +.Ar time +used for +.Op Fl am +given as the number of seconds since the +Unix epoch 1970-01-01T00:00:00Z. +.It Fl t Ar time +Set the +.Ar time +of the format [[CC]YY]MMDDhhmm[.SS] used for +.Op Fl am . +.El +.Sh SEE ALSO +.Xr date 1 +.Sh STANDARDS +POSIX.1-2013. +Except for fractional seconds with +.Op Fl d . +.Pp +The +.Op Fl T +flag is an extension to that specification. diff --git a/util/sbase/touch.c b/util/sbase/touch.c new file mode 100644 index 00000000..6e63bf80 --- /dev/null +++ b/util/sbase/touch.c @@ -0,0 +1,159 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include <errno.h> +#include <fcntl.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <unistd.h> + +#include "util.h" + +static int aflag; +static int cflag; +static int mflag; +static struct timespec times[2] = {{.tv_nsec = UTIME_NOW}}; + +static void +touch(const char *file) +{ + int fd, ret; + + if (utimensat(AT_FDCWD, file, times, 0) == 0) + return; + if (errno != ENOENT) + eprintf("utimensat %s:", file); + if (cflag) + return; + if ((fd = open(file, O_WRONLY | O_CREAT | O_EXCL, 0666)) < 0) + eprintf("open %s:", file); + ret = futimens(fd, times); + close(fd); + if (ret < 0) + eprintf("futimens %s:", file); +} + +static time_t +parsetime(char *str) +{ + time_t now; + struct tm *cur, t = { 0 }; + int zulu = 0; + char *format; + size_t len = strlen(str); + + if ((now = time(NULL)) == -1) + eprintf("time:"); + if (!(cur = localtime(&now))) + eprintf("localtime:"); + t.tm_isdst = -1; + + switch (len) { + /* -t flag argument */ + case 8: + t.tm_year = cur->tm_year; + format = "%m%d%H%M"; + break; + case 10: + format = "%y%m%d%H%M"; + break; + case 11: + t.tm_year = cur->tm_year; + format = "%m%d%H%M.%S"; + break; + case 12: + format = "%Y%m%d%H%M"; + break; + case 13: + format = "%y%m%d%H%M.%S"; + break; + case 15: + format = "%Y%m%d%H%M.%S"; + break; + /* -d flag argument */ + case 19: + format = "%Y-%m-%dT%H:%M:%S"; + break; + case 20: + /* only Zulu-timezone supported */ + if (str[19] != 'Z') + eprintf("Invalid time zone\n"); + str[19] = 0; + zulu = 1; + format = "%Y-%m-%dT%H:%M:%S"; + break; + default: + eprintf("Invalid date format length\n", str); + } + + if (!strptime(str, format, &t)) + eprintf("strptime %s: Invalid date format\n", str); + if (zulu) { + t.tm_hour += t.tm_gmtoff / 60; + t.tm_gmtoff = 0; + t.tm_zone = "Z"; + } + + return mktime(&t); +} + +static void +usage(void) +{ + eprintf("usage: %s [-acm] [-d time | -r ref_file | -t time | -T time] " + "file ...\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + struct stat st; + char *ref = NULL; + + ARGBEGIN { + case 'a': + aflag = 1; + break; + case 'c': + cflag = 1; + break; + case 'd': + case 't': + times[0].tv_sec = parsetime(EARGF(usage())); + times[0].tv_nsec = 0; + break; + case 'm': + mflag = 1; + break; + case 'r': + ref = EARGF(usage()); + if (stat(ref, &st) < 0) + eprintf("stat '%s':", ref); + times[0] = st.st_atim; + times[1] = st.st_mtim; + break; + case 'T': + times[0].tv_sec = estrtonum(EARGF(usage()), 0, LLONG_MAX); + times[0].tv_nsec = 0; + break; + default: + usage(); + } ARGEND + + if (!argc) + usage(); + if (!aflag && !mflag) + aflag = mflag = 1; + if (!ref) + times[1] = times[0]; + if (!aflag) + times[0].tv_nsec = UTIME_OMIT; + if (!mflag) + times[1].tv_nsec = UTIME_OMIT; + + for (; *argv; argc--, argv++) + touch(*argv); + + return 0; +} diff --git a/util/sbase/tr.1 b/util/sbase/tr.1 new file mode 100644 index 00000000..087bd4bf --- /dev/null +++ b/util/sbase/tr.1 @@ -0,0 +1,84 @@ +.Dd October 5, 2016 +.Dt TR 1 +.Os sbase +.Sh NAME +.Nm tr +.Nd translate characters +.Sh SYNOPSIS +.Nm +.Op Fl c | Fl C +.Op Fl sd +.Ar set1 set2 +.Sh DESCRIPTION +.Nm +matches characters from stdin and performs translations to stdout. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl c | Fl C +Match to +.Ar set1 +complement. +.It Fl d +Delete characters matching +.Ar set1 . +.It Fl s +Squeeze repeated characters matching +.Ar set1 +or +.Ar set2 +if +.Fl d +is set. +.El +.Sh SET +.Bl -tag -width Ds +.It Literal Sy c +.It Escape sequence Sy \ec +\e\e, \e', \e", \ea, \eb, \ee, \ef, \en, \er, \et, \ev, \exH[H], \eO[OO] +.It Range Sy c-d +.It Repeat Sy [c*n] +Only in +.Ar set2 . +If n = 0 or left out, set n to length of +.Ar set1 . +.It Character class Sy [:class:] +See +.Xr wctype 3 . +.It Equivalence class Sy [=c=] +Resolve to +.Sy c . +.El +.Sh TRANSLATION +If +.Fl d +is not set, +.Nm +translates from +.Ar set1 +to +.Ar set2 +by index or character class. +.Pp +If +.Ar set2 +is shorter than +.Ar set1 +or +.Ar set1 +is a character class, +overflowing characters translate to the last character in +.Ar set2 . +.Sh EXIT STATUS +.Bl -tag -width Ds +.It 0 +Input processed successfully. +.It 1 +An error occurred. +.El +.Sh SEE ALSO +.Xr awk 1 , +.Xr sed 1 , +.Xr utf8 7 +.Sh STANDARDS +POSIX.1-2013. +Except from equivalence classes. diff --git a/util/sbase/tr.c b/util/sbase/tr.c new file mode 100644 index 00000000..c96dbdd3 --- /dev/null +++ b/util/sbase/tr.c @@ -0,0 +1,300 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdlib.h> + +#include "utf.h" +#include "util.h" + +static int cflag = 0; +static int dflag = 0; +static int sflag = 0; + +struct range { + Rune start; + Rune end; + size_t quant; +}; + +static struct { + char *name; + int (*check)(Rune); +} classes[] = { + { "alnum", isalnumrune }, + { "alpha", isalpharune }, + { "blank", isblankrune }, + { "cntrl", iscntrlrune }, + { "digit", isdigitrune }, + { "graph", isgraphrune }, + { "lower", islowerrune }, + { "print", isprintrune }, + { "punct", ispunctrune }, + { "space", isspacerune }, + { "upper", isupperrune }, + { "xdigit", isxdigitrune }, +}; + +static struct range *set1 = NULL; +static size_t set1ranges = 0; +static int (*set1check)(Rune) = NULL; +static struct range *set2 = NULL; +static size_t set2ranges = 0; +static int (*set2check)(Rune) = NULL; + +static size_t +rangelen(struct range r) +{ + return (r.end - r.start + 1) * r.quant; +} + +static size_t +setlen(struct range *set, size_t setranges) +{ + size_t len = 0, i; + + for (i = 0; i < setranges; i++) + len += rangelen(set[i]); + + return len; +} + +static int +rstrmatch(Rune *r, char *s, size_t n) +{ + size_t i; + + for (i = 0; i < n; i++) + if (r[i] != s[i]) + return 0; + return 1; +} + +static size_t +makeset(char *str, struct range **set, int (**check)(Rune)) +{ + Rune *rstr; + size_t len, i, j, m, n; + size_t q, setranges = 0; + int factor, base; + + /* rstr defines at most len ranges */ + unescape(str); + rstr = ereallocarray(NULL, utflen(str) + 1, sizeof(*rstr)); + len = utftorunestr(str, rstr); + *set = ereallocarray(NULL, len, sizeof(**set)); + + for (i = 0; i < len; i++) { + if (rstr[i] == '[') { + j = i; +nextbrack: + if (j >= len) + goto literal; + for (m = j; m < len; m++) + if (rstr[m] == ']') { + j = m; + break; + } + if (j == i) + goto literal; + + /* CLASSES [=EQUIV=] (skip) */ + if (j - i > 3 && rstr[i + 1] == '=' && rstr[m - 1] == '=') { + if (j - i != 4) + goto literal; + (*set)[setranges].start = rstr[i + 2]; + (*set)[setranges].end = rstr[i + 2]; + (*set)[setranges].quant = 1; + setranges++; + i = j; + continue; + } + + /* CLASSES [:CLASS:] */ + if (j - i > 3 && rstr[i + 1] == ':' && rstr[m - 1] == ':') { + for (n = 0; n < LEN(classes); n++) { + if (rstrmatch(rstr + i + 2, classes[n].name, j - i - 3)) { + *check = classes[n].check; + return 0; + } + } + eprintf("Invalid character class.\n"); + } + + /* REPEAT [_*n] (only allowed in set2) */ + if (j - i > 2 && rstr[i + 2] == '*') { + /* check if right side of '*' is a number */ + q = 0; + factor = 1; + base = (rstr[i + 3] == '0') ? 8 : 10; + for (n = j - 1; n > i + 2; n--) { + if (rstr[n] < '0' || rstr[n] > '9') { + n = 0; + break; + } + q += (rstr[n] - '0') * factor; + factor *= base; + } + if (n == 0) { + j = m + 1; + goto nextbrack; + } + (*set)[setranges].start = rstr[i + 1]; + (*set)[setranges].end = rstr[i + 1]; + (*set)[setranges].quant = q ? q : setlen(set1, MAX(set1ranges, 1)); + setranges++; + i = j; + continue; + } + + j = m + 1; + goto nextbrack; + } +literal: + /* RANGES [_-__-_], _-__-_ */ + /* LITERALS _______ */ + (*set)[setranges].start = rstr[i]; + + if (i < len - 2 && rstr[i + 1] == '-' && rstr[i + 2] >= rstr[i]) + i += 2; + (*set)[setranges].end = rstr[i]; + (*set)[setranges].quant = 1; + setranges++; + } + + free(rstr); + return setranges; +} + +static void +usage(void) +{ + eprintf("usage: %s [-cCds] set1 [set2]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + Rune r, lastrune = 0; + size_t off1, off2, i, m; + int ret = 0; + + ARGBEGIN { + case 'c': + case 'C': + cflag = 1; + break; + case 'd': + dflag = 1; + break; + case 's': + sflag = 1; + break; + default: + usage(); + } ARGEND + + if (!argc || argc > 2 || (argc == 1 && dflag == sflag)) + usage(); + set1ranges = makeset(argv[0], &set1, &set1check); + if (argc == 2) + set2ranges = makeset(argv[1], &set2, &set2check); + + if (!dflag || (argc == 2 && sflag)) { + /* sanity checks as we are translating */ + if (!sflag && !set2ranges && !set2check) + eprintf("cannot map to an empty set.\n"); + if (set2check && set2check != islowerrune && + set2check != isupperrune) { + eprintf("can only map to 'lower' and 'upper' class.\n"); + } + } +read: + if (!efgetrune(&r, stdin, "<stdin>")) { + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + return ret; + } + if (argc == 1 && sflag) + goto write; + for (i = 0, off1 = 0; i < set1ranges; off1 += rangelen(set1[i]), i++) { + if (set1[i].start <= r && r <= set1[i].end) { + if (dflag) { + if (cflag) + goto write; + else + goto read; + } + if (cflag) + goto write; + + /* map r to set2 */ + if (set2check) { + if (set2check == islowerrune) + r = tolowerrune(r); + else + r = toupperrune(r); + } else { + off1 += r - set1[i].start; + if (off1 > setlen(set2, set2ranges) - 1) { + r = set2[set2ranges - 1].end; + goto write; + } + for (m = 0, off2 = 0; m < set2ranges; m++) { + if (off2 + rangelen(set2[m]) > off1) { + m++; + break; + } + off2 += rangelen(set2[m]); + } + m--; + r = set2[m].start + (off1 - off2) / set2[m].quant; + } + goto write; + } + } + if (set1check && set1check(r)) { + if (cflag) + goto write; + if (dflag) + goto read; + if (set2check) { + if (set2check == islowerrune) + r = tolowerrune(r); + else + r = toupperrune(r); + } else { + r = set2[set2ranges - 1].end; + } + goto write; + } + if (!dflag && cflag) { + if (set2check) { + if (set2check == islowerrune) + r = tolowerrune(r); + else + r = toupperrune(r); + } else { + r = set2[set2ranges - 1].end; + } + goto write; + } + if (dflag && cflag) + goto read; +write: + if (argc == 1 && sflag && r == lastrune) { + if (set1check && set1check(r)) + goto read; + for (i = 0; i < set1ranges; i++) { + if (set1[i].start <= r && r <= set1[i].end) + goto read; + } + } + if (argc == 2 && sflag && r == lastrune) { + if (set2check && set2check(r)) + goto read; + for (i = 0; i < set2ranges; i++) { + if (set2[i].start <= r && r <= set2[i].end) + goto read; + } + } + efputrune(&r, stdout, "<stdout>"); + lastrune = r; + goto read; +} diff --git a/util/sbase/true.1 b/util/sbase/true.1 new file mode 100644 index 00000000..7c2104a6 --- /dev/null +++ b/util/sbase/true.1 @@ -0,0 +1,13 @@ +.Dd October 8, 2015 +.Dt TRUE 1 +.Os sbase +.Sh NAME +.Nm true +.Nd return success +.Sh SYNOPSIS +.Nm +.Sh DESCRIPTION +.Nm +returns a status code indicating success. +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/true.c b/util/sbase/true.c new file mode 100644 index 00000000..cb081ec0 --- /dev/null +++ b/util/sbase/true.c @@ -0,0 +1,6 @@ +/* See LICENSE file for copyright and license details. */ +int +main(void) +{ + return 0; +} diff --git a/util/sbase/tsort.1 b/util/sbase/tsort.1 new file mode 100644 index 00000000..b2e0c6ae --- /dev/null +++ b/util/sbase/tsort.1 @@ -0,0 +1,70 @@ +.Dd February 16, 2016 +.Dt TSORT 1 +.Os sbase +.Sh NAME +.Nm tsort +.Nd topological sort +.Sh SYNOPSIS +.Nm +.Op Ar file +.Sh DESCRIPTION +.Nm +topologically sorts a graph. +The graph is read either from +.Ar file +or from standard input. +The result is not optimized for any particular usage. +Loops are detected and reported to standard error, but does not stop the +sort. +.Pp +The input is a list of edges (vertex pairs), where +the edge is directed from the first vertex to the +second vertex. +.Sh OPTIONS +None. +.Sh EXIT STATUS +.Bl -tag -width Ds +.It 0 +The graph as successfully sorted. +.It 1 +The graph as successfully sorted, but contained loops. +.It > 1 +An error occurred. +.El +.Sh EXAMPLES +.Bd -literal -offset left +The input + + a a + a b + a c + a c + a d + b c + c b + e f + +or equivalently + + a a a b a c a c a d + b c c b e f + +represents the graph + + ┌─┠+ ↓ │ + â”â”â”â”┓ + ┌──────┃ a ┃──────┠+ │ â”—â”â”â”â”› │ + │ │ │ │ + ↓ ↓ ↓ ↓ + â”â”â”â”┓───→â”â”â”â”┓ â”â”â”â”┓ + ┃ b ┃ ┃ c ┃ ┃ d ┃ + â”—â”â”â”â”›â†â”€â”€â”€â”—â”â”â”â”› â”—â”â”â”â”› + + â”â”â”â”┓ â”â”â”â”┓ + ┃ e ┃───→┃ f ┃ + â”—â”â”â”â”› â”—â”â”â”â”› +.Ed +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/tsort.c b/util/sbase/tsort.c new file mode 100644 index 00000000..f147e3b2 --- /dev/null +++ b/util/sbase/tsort.c @@ -0,0 +1,209 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <ctype.h> + +#include "util.h" + +enum { WHITE = 0, GREY, BLACK }; + +struct vertex; + +struct edge { + struct vertex *to; + struct edge *next; +}; + +struct vertex { + char *name; + struct vertex *next; + struct edge edges; + size_t in_edges; + int colour; +}; + +static struct vertex graph; + +static void +find_vertex(const char *name, struct vertex **it, struct vertex **prev) +{ + for (*prev = &graph; (*it = (*prev)->next); *prev = *it) { + int cmp = strcmp(name, (*it)->name); + if (cmp > 0) + continue; + if (cmp < 0) + *it = 0; + return; + } +} + +static void +find_edge(struct vertex *from, const char *to, struct edge **it, struct edge **prev) +{ + for (*prev = &(from->edges); (*it = (*prev)->next); *prev = *it) { + int cmp = strcmp(to, (*it)->to->name); + if (cmp > 0) + continue; + if (cmp < 0) + *it = 0; + return; + } +} + +static struct vertex * +add_vertex(char *name) +{ + struct vertex *vertex; + struct vertex *prev; + + find_vertex(name, &vertex, &prev); + if (vertex) + return vertex; + + vertex = encalloc(2, 1, sizeof(*vertex)); + vertex->name = name; + vertex->next = prev->next; + prev->next = vertex; + + return vertex; +} + +static struct edge * +add_edge(struct vertex *from, struct vertex* to) +{ + struct edge *edge; + struct edge *prev; + + find_edge(from, to->name, &edge, &prev); + if (edge) + return edge; + + edge = encalloc(2, 1, sizeof(*edge)); + edge->to = to; + edge->next = prev->next; + prev->next = edge; + to->in_edges += 1; + + return edge; +} + +static void +load_graph(FILE *fp) +{ +#define SKIP(VAR, START, FUNC) for (VAR = START; FUNC(*VAR) && *VAR; VAR++) +#define TOKEN_END(P) do { if (*P) *P++ = 0; else P = 0; } while (0) + + char *line = 0; + size_t size = 0; + ssize_t len; + char *p; + char *name; + struct vertex *from = 0; + + while ((len = getline(&line, &size, fp)) != -1) { + if (line[len - 1] == '\n') + line[--len] = 0; + for (p = line; p;) { + SKIP(name, p, isspace); + if (!*name) + break; + SKIP(p, name, !isspace); + TOKEN_END(p); + if (!from) { + from = add_vertex(enstrdup(2, name)); + } else if (strcmp(from->name, name)) { + add_edge(from, add_vertex(enstrdup(2, name))); + from = 0; + } else { + from = 0; + } + } + } + + free(line); + + if (from) + enprintf(2, "odd number of tokens in input\n"); +} + +static int +sort_graph_visit(struct vertex *u) +{ + struct edge *e = &(u->edges); + struct vertex *v; + int r = 0; + u->colour = GREY; + printf("%s\n", u->name); + while ((e = e->next)) { + v = e->to; + if (v->colour == WHITE) { + v->in_edges -= 1; + if (v->in_edges == 0) + r |= sort_graph_visit(v); + } else if (v->colour == GREY) { + r = 1; + fprintf(stderr, "%s: loop detected between %s and %s\n", + argv0, u->name, v->name); + } + } + u->colour = BLACK; + return r; +} + +static int +sort_graph(void) +{ + struct vertex *u, *prev; + int r = 0; + size_t in_edges; + for (in_edges = 0; graph.next; in_edges++) { + for (prev = &graph; (u = prev->next); prev = u) { + if (u->colour != WHITE) + goto unlist; + if (u->in_edges > in_edges) + continue; + r |= sort_graph_visit(u); + unlist: + prev->next = u->next; + u = prev; + } + } + return r; +} + +static void +usage(void) +{ + enprintf(2, "usage: %s [file]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + FILE *fp = stdin; + const char *fn = "<stdin>"; + int ret = 0; + + ARGBEGIN { + default: + usage(); + } ARGEND + + if (argc > 1) + usage(); + if (argc && strcmp(*argv, "-")) + if (!(fp = fopen(fn = *argv, "r"))) + enprintf(2, "fopen %s:", *argv); + + memset(&graph, 0, sizeof(graph)); + load_graph(fp); + enfshut(2, fp, fn); + + ret = sort_graph(); + + if (fshut(stdout, "<stdout>") | fshut(stderr, "<stderr>")) + ret = 2; + + return ret; +} diff --git a/util/sbase/tty.1 b/util/sbase/tty.1 new file mode 100644 index 00000000..11580e32 --- /dev/null +++ b/util/sbase/tty.1 @@ -0,0 +1,24 @@ +.Dd October 8, 2015 +.Dt TTY 1 +.Os sbase +.Sh NAME +.Nm tty +.Nd print terminal name +.Sh SYNOPSIS +.Nm +.Sh DESCRIPTION +.Nm +writes the name of the terminal open on stdin to stdout. +.Sh EXIT STATUS +.Bl -tag -width Ds +.It 0 +stdin is a terminal. +.It 1 +stdin is not a terminal. +.It > 1 +An error occurred. +.El +.Sh SEE ALSO +.Xr ttyname 3 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/tty.c b/util/sbase/tty.c new file mode 100644 index 00000000..65151287 --- /dev/null +++ b/util/sbase/tty.c @@ -0,0 +1,31 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + enprintf(2, "usage: %s\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + char *tty; + + ARGBEGIN { + default: + usage(); + } ARGEND + + if (argc) + usage(); + + tty = ttyname(STDIN_FILENO); + puts(tty ? tty : "not a tty"); + + enfshut(2, stdout, "<stdout>"); + return !tty; +} diff --git a/util/sbase/uname.1 b/util/sbase/uname.1 new file mode 100644 index 00000000..65c3d318 --- /dev/null +++ b/util/sbase/uname.1 @@ -0,0 +1,35 @@ +.Dd October 8, 2015 +.Dt UNAME 1 +.Os sbase +.Sh NAME +.Nm uname +.Nd print system information +.Sh SYNOPSIS +.Nm +.Op Fl amnrsv +.Sh DESCRIPTION +.Nm +writes system information to stdout. +If no flags are given, +.Nm +implies +.Fl s . +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl a +Print all the information below. +.It Fl m +Print the machine's architecture. +.It Fl n +Print the system's network node hostname. +.It Fl r +Print the operating system's release name. +.It Fl s +Print the name of the operating system. +.It Fl v +Print the operating system's version name. +.El +.Sh SEE ALSO +.Xr uname 2 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/uname.c b/util/sbase/uname.c new file mode 100644 index 00000000..122c1721 --- /dev/null +++ b/util/sbase/uname.c @@ -0,0 +1,62 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/utsname.h> + +#include <stdio.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-amnrsv]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + struct utsname u; + int mflag = 0, nflag = 0, rflag = 0, sflag = 0, vflag = 0; + + ARGBEGIN { + case 'a': + mflag = nflag = rflag = sflag = vflag = 1; + break; + case 'm': + mflag = 1; + break; + case 'n': + nflag = 1; + break; + case 'r': + rflag = 1; + break; + case 's': + sflag = 1; + break; + case 'v': + vflag = 1; + break; + default: + usage(); + } ARGEND + + if (argc) + usage(); + + if (uname(&u) < 0) + eprintf("uname:"); + + if (sflag || !(nflag || rflag || vflag || mflag)) + putword(stdout, u.sysname); + if (nflag) + putword(stdout, u.nodename); + if (rflag) + putword(stdout, u.release); + if (vflag) + putword(stdout, u.version); + if (mflag) + putword(stdout, u.machine); + putchar('\n'); + + return fshut(stdout, "<stdout>"); +} diff --git a/util/sbase/unexpand.1 b/util/sbase/unexpand.1 new file mode 100644 index 00000000..1637c090 --- /dev/null +++ b/util/sbase/unexpand.1 @@ -0,0 +1,41 @@ +.Dd October 8, 2015 +.Dt UNEXPAND 1 +.Os sbase +.Sh NAME +.Nm unexpand +.Nd unexpand spaces to tabs +.Sh SYNOPSIS +.Nm +.Op Fl a +.Op Fl t Ar tablist +.Op Ar file ... +.Sh DESCRIPTION +.Nm +converts spaces to tabs in each +.Ar file +as specified in +.Ar tablist . +If no file is given, +.Nm +reads from stdin. +.Pp +Backspace characters are preserved and decrement the column count +for tab calculations. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl a +Convert spaces to tabs everywhere, not just at the start of lines. +.It Fl t Ar tablist +Specify tab size or tabstops. +.Ar tablist +is a list of one (in the former case) or multiple (in the latter case) +strictly positive integers separated by ' ' or ','. +.Pp +The default +.Ar tablist +is "8". +.El +.Sh SEE ALSO +.Xr expand 1 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/unexpand.c b/util/sbase/unexpand.c new file mode 100644 index 00000000..1818691e --- /dev/null +++ b/util/sbase/unexpand.c @@ -0,0 +1,174 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdint.h> +#include <stdlib.h> +#include <string.h> + +#include "utf.h" +#include "util.h" + +static int aflag = 0; +static size_t *tablist = NULL; +static size_t tablistlen = 8; + +static size_t +parselist(const char *s) +{ + size_t i; + char *p, *tmp; + + tmp = estrdup(s); + for (i = 0; (p = strsep(&tmp, " ,")); i++) { + if (*p == '\0') + eprintf("empty field in tablist\n"); + tablist = ereallocarray(tablist, i + 1, sizeof(*tablist)); + tablist[i] = estrtonum(p, 1, MIN(LLONG_MAX, SIZE_MAX)); + if (i > 0 && tablist[i - 1] >= tablist[i]) + eprintf("tablist must be ascending\n"); + } + tablist = ereallocarray(tablist, i + 1, sizeof(*tablist)); + + return i; +} + +static void +unexpandspan(size_t last, size_t col) +{ + size_t off, i, j; + Rune r; + + if (tablistlen == 1) { + i = 0; + off = last % tablist[i]; + + if ((col - last) + off >= tablist[i] && last < col) + last -= off; + + r = '\t'; + for (; last + tablist[i] <= col; last += tablist[i]) + efputrune(&r, stdout, "<stdout>"); + r = ' '; + for (; last < col; last++) + efputrune(&r, stdout, "<stdout>"); + } else { + for (i = 0; i < tablistlen; i++) + if (col < tablist[i]) + break; + for (j = 0; j < tablistlen; j++) + if (last < tablist[j]) + break; + r = '\t'; + for (; j < i; j++) { + efputrune(&r, stdout, "<stdout>"); + last = tablist[j]; + } + r = ' '; + for (; last < col; last++) + efputrune(&r, stdout, "<stdout>"); + } +} + +static void +unexpand(const char *file, FILE *fp) +{ + Rune r; + size_t last = 0, col = 0, i; + int bol = 1; + + while (efgetrune(&r, fp, file)) { + switch (r) { + case ' ': + if (!bol && !aflag) + last++; + col++; + break; + case '\t': + if (tablistlen == 1) { + if (!bol && !aflag) + last += tablist[0] - col % tablist[0]; + col += tablist[0] - col % tablist[0]; + } else { + for (i = 0; i < tablistlen; i++) + if (col < tablist[i]) + break; + if (!bol && !aflag) + last = tablist[i]; + col = tablist[i]; + } + break; + case '\b': + if (bol || aflag) + unexpandspan(last, col); + col -= (col > 0); + last = col; + bol = 0; + break; + case '\n': + if (bol || aflag) + unexpandspan(last, col); + last = col = 0; + bol = 1; + break; + default: + if (bol || aflag) + unexpandspan(last, col); + last = ++col; + bol = 0; + break; + } + if ((r != ' ' && r != '\t') || (!aflag && !bol)) + efputrune(&r, stdout, "<stdout>"); + } + if (last < col && (bol || aflag)) + unexpandspan(last, col); +} + +static void +usage(void) +{ + eprintf("usage: %s [-a] [-t tablist] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + FILE *fp; + int ret = 0; + char *tl = "8"; + + ARGBEGIN { + case 't': + tl = EARGF(usage()); + if (!*tl) + eprintf("tablist cannot be empty\n"); + /* Fallthrough: -t implies -a */ + case 'a': + aflag = 1; + break; + default: + usage(); + } ARGEND + + tablistlen = parselist(tl); + + if (!argc) { + unexpand("<stdin>", stdin); + } else { + for (; *argv; argc--, argv++) { + if (!strcmp(*argv, "-")) { + *argv = "<stdin>"; + fp = stdin; + } else if (!(fp = fopen(*argv, "r"))) { + weprintf("fopen %s:", *argv); + ret = 1; + continue; + } + unexpand(*argv, fp); + if (fp != stdin && fshut(fp, *argv)) + ret = 1; + } + } + + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/uniq.1 b/util/sbase/uniq.1 new file mode 100644 index 00000000..8ed1a015 --- /dev/null +++ b/util/sbase/uniq.1 @@ -0,0 +1,45 @@ +.Dd October 8, 2015 +.Dt UNIQ 1 +.Os sbase +.Sh NAME +.Nm uniq +.Nd report or filter out repeated lines in a file +.Sh SYNOPSIS +.Nm +.Op Fl c +.Op Fl d | u +.Op Fl f Ar num +.Op Fl s Ar num +.Op Ar input Op Ar output +.Sh DESCRIPTION +.Nm +reads the +.Ar input +file and writes one copy of a line from each group of consecutive +duplicate lines to the +.Ar output +file. +If no +.Ar input +file is given +.Nm +reads from stdin. +If no +.Ar output +file is given +.Nm +writes to stdout. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl c +Prefix each line with the number of consecutive occurrences in +.Ar input . +.It Fl d | Fl u +Print duplicate | unique lines only. +.It Fl f Ar num | Fl s Ar num +Ignore the first +.Ar num +fields | characters in each input line when doing comparisons. +.El +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/uniq.c b/util/sbase/uniq.c new file mode 100644 index 00000000..f1ad6a7b --- /dev/null +++ b/util/sbase/uniq.c @@ -0,0 +1,144 @@ +/* See LICENSE file for copyright and license details. */ +#include <ctype.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "text.h" +#include "util.h" + +static const char *countfmt = ""; +static int dflag = 0; +static int uflag = 0; +static int fskip = 0; +static int sskip = 0; + +static struct line prevl; +static ssize_t prevoff = -1; +static long prevlinecount = 0; + +static size_t +uniqskip(struct line *l) +{ + size_t i; + int f = fskip, s = sskip; + + for (i = 0; i < l->len && f; --f) { + while (isblank(l->data[i])) + i++; + while (i < l->len && !isblank(l->data[i])) + i++; + } + for (; s && i < l->len && l->data[i] != '\n'; --s, i++) + ; + + return i; +} + +static void +uniqline(FILE *ofp, struct line *l) +{ + size_t loff; + + if (l) { + loff = uniqskip(l); + + if (prevoff >= 0 && (l->len - loff) == (prevl.len - prevoff) && + !memcmp(l->data + loff, prevl.data + prevoff, l->len - loff)) { + ++prevlinecount; + return; + } + } + + if (prevoff >= 0) { + if ((prevlinecount == 1 && !dflag) || + (prevlinecount != 1 && !uflag)) { + if (*countfmt) + fprintf(ofp, countfmt, prevlinecount); + fwrite(prevl.data, 1, prevl.len, ofp); + } + prevoff = -1; + } + + if (l) { + if (!prevl.data || l->len >= prevl.len) { + prevl.data = erealloc(prevl.data, l->len); + } + prevl.len = l->len; + memcpy(prevl.data, l->data, prevl.len); + prevoff = loff; + } + prevlinecount = 1; +} + +static void +uniq(FILE *fp, FILE *ofp) +{ + static struct line line; + static size_t size; + ssize_t len; + + while ((len = getline(&line.data, &size, fp)) > 0) { + line.len = len; + uniqline(ofp, &line); + } +} + +static void +uniqfinish(FILE *ofp) +{ + uniqline(ofp, NULL); +} + +static void +usage(void) +{ + eprintf("usage: %s [-c] [-d | -u] [-f fields] [-s chars]" + " [input [output]]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + FILE *fp[2] = { stdin, stdout }; + int ret = 0, i; + char *fname[2] = { "<stdin>", "<stdout>" }; + + ARGBEGIN { + case 'c': + countfmt = "%7ld "; + break; + case 'd': + dflag = 1; + break; + case 'u': + uflag = 1; + break; + case 'f': + fskip = estrtonum(EARGF(usage()), 0, INT_MAX); + break; + case 's': + sskip = estrtonum(EARGF(usage()), 0, INT_MAX); + break; + default: + usage(); + } ARGEND + + if (argc > 2) + usage(); + + for (i = 0; i < argc; i++) { + if (strcmp(argv[i], "-")) { + fname[i] = argv[i]; + if (!(fp[i] = fopen(argv[i], (i == 0) ? "r" : "w"))) + eprintf("fopen %s:", argv[i]); + } + } + + uniq(fp[0], fp[1]); + uniqfinish(fp[1]); + + ret |= fshut(fp[0], fname[0]) | fshut(fp[1], fname[1]); + + return ret; +} diff --git a/util/sbase/unlink.1 b/util/sbase/unlink.1 new file mode 100644 index 00000000..777c89da --- /dev/null +++ b/util/sbase/unlink.1 @@ -0,0 +1,19 @@ +.Dd October 8, 2015 +.Dt UNLINK 1 +.Os sbase +.Sh NAME +.Nm unlink +.Nd unlink file +.Sh SYNOPSIS +.Nm +.Ar file +.Sh DESCRIPTION +.Nm +calls +.Xr unlink 2 +on +.Ar file . +.Sh SEE ALSO +.Xr unlink 2 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/unlink.c b/util/sbase/unlink.c new file mode 100644 index 00000000..c695fa80 --- /dev/null +++ b/util/sbase/unlink.c @@ -0,0 +1,27 @@ +/* See LICENSE file for copyright and license details. */ +#include <unistd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s file\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + ARGBEGIN { + default: + usage(); + } ARGEND + + if (argc != 1) + usage(); + + if (unlink(argv[0]) < 0) + eprintf("unlink: '%s':", argv[0]); + + return 0; +} diff --git a/util/sbase/utf.h b/util/sbase/utf.h new file mode 100644 index 00000000..8e0707a7 --- /dev/null +++ b/util/sbase/utf.h @@ -0,0 +1,69 @@ +/* MIT/X Consortium Copyright (c) 2012 Connor Lane Smith <cls@lubutu.com> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#include <stdio.h> + +typedef int Rune; + +enum { + UTFmax = 6, /* maximum bytes per rune */ + Runeself = 0x80, /* rune and utf are equal (<) */ + Runeerror = 0xFFFD, /* decoding error in utf */ + Runemax = 0x10FFFF /* maximum rune value */ +}; + +int runetochar(char *, const Rune *); +int chartorune(Rune *, const char *); +int charntorune(Rune *, const char *, size_t); +int runelen(Rune); +size_t runenlen(const Rune *, size_t); +int fullrune(const char *, size_t); +char *utfecpy(char *, char *, const char *); +size_t utflen(const char *); +size_t utfnlen(const char *, size_t); +size_t utfmemlen(const char *, size_t); +char *utfrune(const char *, Rune); +char *utfrrune(const char *, Rune); +char *utfutf(const char *, const char *); + +int isalnumrune(Rune); +int isalpharune(Rune); +int isblankrune(Rune); +int iscntrlrune(Rune); +int isdigitrune(Rune); +int isgraphrune(Rune); +int islowerrune(Rune); +int isprintrune(Rune); +int ispunctrune(Rune); +int isspacerune(Rune); +int istitlerune(Rune); +int isupperrune(Rune); +int isxdigitrune(Rune); + +Rune tolowerrune(Rune); +Rune toupperrune(Rune); + +size_t utftorunestr(const char *, Rune *); +size_t utfntorunestr(const char *, size_t, Rune *); + +int fgetrune(Rune *, FILE *); +int efgetrune(Rune *, FILE *, const char *); +int fputrune(const Rune *, FILE *); +int efputrune(const Rune *, FILE *, const char *); diff --git a/util/sbase/util.h b/util/sbase/util.h new file mode 100644 index 00000000..6b6a084b --- /dev/null +++ b/util/sbase/util.h @@ -0,0 +1,97 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/types.h> + +#include <regex.h> +#include <stddef.h> +#include <stdio.h> +#include <stdarg.h> + +#include "arg.h" +#include "compat.h" + +#define UTF8_POINT(c) (((c) & 0xc0) != 0x80) + +#undef MIN +#define MIN(x,y) ((x) < (y) ? (x) : (y)) +#undef MAX +#define MAX(x,y) ((x) > (y) ? (x) : (y)) +#undef LIMIT +#define LIMIT(x, a, b) (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x) + +#define LEN(x) (sizeof (x) / sizeof *(x)) + +extern char *argv0; + +void *ecalloc(size_t, size_t); +void *emalloc(size_t); +void *erealloc(void *, size_t); +#undef reallocarray +void *reallocarray(void *, size_t, size_t); +void *ereallocarray(void *, size_t, size_t); +char *estrdup(const char *); +char *estrndup(const char *, size_t); +void *encalloc(int, size_t, size_t); +void *enmalloc(int, size_t); +void *enrealloc(int, void *, size_t); +void *enreallocarray(int, void *, size_t, size_t); +char *enstrdup(int, const char *); +char *enstrndup(int, const char *, size_t); + +void enfshut(int, FILE *, const char *); +void efshut(FILE *, const char *); +int fshut(FILE *, const char *); + +void enprintf(int, const char *, ...); +void eprintf(const char *, ...); +void weprintf(const char *, ...); +void xvprintf(const char *, va_list); + +int confirm(const char*, ...); + +double estrtod(const char *); + +#undef strcasestr +#define strcasestr xstrcasestr +char *strcasestr(const char *, const char *); + +#undef strlcat +#define strlcat xstrlcat +size_t strlcat(char *, const char *, size_t); +size_t estrlcat(char *, const char *, size_t); +#undef strlcpy +#define strlcpy xstrlcpy +size_t strlcpy(char *, const char *, size_t); +size_t estrlcpy(char *, const char *, size_t); + +#undef strsep +#define strsep xstrsep +char *strsep(char **, const char *); + +void strnsubst(char **, const char *, const char *, size_t); + +/* regex */ +int enregcomp(int, regex_t *, const char *, int); +int eregcomp(regex_t *, const char *, int); + +/* io */ +ssize_t writeall(int, const void *, size_t); +int concat(int, const char *, int, const char *); + +/* misc */ +void enmasse(int, char **, int (*)(const char *, const char *, int)); +void fnck(const char *, const char *, int (*)(const char *, const char *, int), int); +mode_t getumask(void); +char *humansize(off_t); +mode_t parsemode(const char *, mode_t, mode_t); +off_t parseoffset(const char *); +void putword(FILE *, const char *); +#undef strtonum +#define strtonum xstrtonum +long long strtonum(const char *, long long, long long, const char **); +long long enstrtonum(int, const char *, long long, long long); +long long estrtonum(const char *, long long, long long); +size_t unescape(char *); +int mkdirp(const char *, mode_t, mode_t); +#undef memmem +#define memmem xmemmem +void *memmem(const void *, size_t, const void *, size_t); diff --git a/util/sbase/uudecode.1 b/util/sbase/uudecode.1 new file mode 100644 index 00000000..d6408659 --- /dev/null +++ b/util/sbase/uudecode.1 @@ -0,0 +1,46 @@ +.Dd October 8, 2015 +.Dt UUDECODE 1 +.Os sbase +.Sh NAME +.Nm uudecode +.Nd decode a uuencoded file +.Sh SYNOPSIS +.Nm +.Op Fl m +.Op Fl o Ar output +.Op Ar file +.Sh DESCRIPTION +.Nm +reads +.Ar file +and writes a decoded version to the file specified in the uuencoded header. +In case the file already exists, it is truncated. +Otherwise a new file is created. +The permissions of the created/accessed file are changed to reflect the +mode in the header. +If no +.Ar file +is given +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl m +Use Base64 for decoding. +.It Fl o Ar output +Write to +.Ar output +rather than the file specified in the header. +.El +.Sh IMPLEMENTATION NOTES +For safety uudecode operates on regular files and stdout only. +Trying to uudecode to a link, directory, or special file +yields an error. +.Sh SEE ALSO +.Xr uuencode 1 +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Op Fl m +flag is an extension to that specification. diff --git a/util/sbase/uudecode.c b/util/sbase/uudecode.c new file mode 100644 index 00000000..1d0bf72a --- /dev/null +++ b/util/sbase/uudecode.c @@ -0,0 +1,282 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "util.h" + +static int mflag = 0; +static int oflag = 0; + +static FILE * +parsefile(const char *fname) +{ + struct stat st; + int ret; + + if (!strcmp(fname, "/dev/stdout") || !strcmp(fname, "-")) + return stdout; + ret = lstat(fname, &st); + /* if it is a new file, try to open it */ + if (ret < 0 && errno == ENOENT) + goto tropen; + if (ret < 0) { + weprintf("lstat %s:", fname); + return NULL; + } + if (!S_ISREG(st.st_mode)) { + weprintf("for safety uudecode operates only on regular files and /dev/stdout\n"); + return NULL; + } +tropen: + return fopen(fname, "w"); +} + +static void +parseheader(FILE *fp, const char *s, char **header, mode_t *mode, char **fname) +{ + static char bufs[PATH_MAX + 18]; /* len header + mode + maxname */ + char *p, *q; + size_t n; + + if (!fgets(bufs, sizeof(bufs), fp)) + if (ferror(fp)) + eprintf("%s: read error:", s); + if (bufs[0] == '\0' || feof(fp)) + eprintf("empty or nil header string\n"); + if (!(p = strchr(bufs, '\n'))) + eprintf("header string too long or non-newline terminated file\n"); + p = bufs; + if (!(q = strchr(p, ' '))) + eprintf("malformed mode string in header, expected ' '\n"); + *header = bufs; + *q++ = '\0'; + p = q; + /* now header should be null terminated, q points to mode */ + if (!(q = strchr(p, ' '))) + eprintf("malformed mode string in header, expected ' '\n"); + *q++ = '\0'; + /* now mode should be null terminated, q points to fname */ + *mode = parsemode(p, *mode, 0); + n = strlen(q); + while (n > 0 && (q[n - 1] == '\n' || q[n - 1] == '\r')) + q[--n] = '\0'; + if (n > 0) + *fname = q; + else + eprintf("header string does not contain output file\n"); +} + +static const char b64dt[] = { + -1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63, + 52,53,54,55,56,57,58,59,60,61,-1,-1,-1, 0,-1,-1,-1, 0, 1, 2, 3, 4, 5, 6, + 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1, + -1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48, + 49,50,51,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, +}; + +static void +uudecodeb64(FILE *fp, FILE *outfp) +{ + char bufb[60], *pb; + char out[45], *po; + size_t n; + int b = 0, e, t = -1, l = 1; + unsigned char b24[3] = {0, 0, 0}; + + while ((n = fread(bufb, 1, sizeof(bufb), fp))) { + for (pb = bufb, po = out; pb < bufb + n; pb++) { + if (*pb == '\n') { + l++; + continue; + } else if (*pb == '=') { + switch (b) { + case 0: + /* expected '=' remaining + * including footer */ + if (--t) { + fwrite(out, 1, + (po - out), + outfp); + return; + } + continue; + case 1: + eprintf("%d: unexpected \"=\"" + "appeared\n", l); + case 2: + *po++ = b24[0]; + b = 0; + t = 5; /* expect 5 '=' */ + continue; + case 3: + *po++ = b24[0]; + *po++ = b24[1]; + b = 0; + t = 6; /* expect 6 '=' */ + continue; + } + } else if ((e = b64dt[(int)*pb]) == -1) + eprintf("%d: invalid byte \"%c\"\n", l, *pb); + else if (e == -2) /* whitespace */ + continue; + else if (t > 0) /* state is parsing pad/footer */ + eprintf("%d: invalid byte \"%c\"" + " after padding\n", + l, *pb); + switch (b) { /* decode next base64 chr based on state */ + case 0: b24[0] |= e << 2; break; + case 1: b24[0] |= (e >> 4) & 0x3; + b24[1] |= (e & 0xf) << 4; break; + case 2: b24[1] |= (e >> 2) & 0xf; + b24[2] |= (e & 0x3) << 6; break; + case 3: b24[2] |= e; break; + } + if (++b == 4) { /* complete decoding an octet */ + *po++ = b24[0]; + *po++ = b24[1]; + *po++ = b24[2]; + b24[0] = b24[1] = b24[2] = 0; + b = 0; + } + } + fwrite(out, 1, (po - out), outfp); + } + eprintf("%d: invalid uudecode footer \"====\" not found\n", l); +} + +static void +uudecode(FILE *fp, FILE *outfp) +{ + char *bufb = NULL, *p; + size_t n = 0; + ssize_t len; + int ch, i; + +#define DEC(c) (((c) - ' ') & 077) /* single character decode */ +#define IS_DEC(c) ( (((c) - ' ') >= 0) && (((c) - ' ') <= 077 + 1) ) +#define OUT_OF_RANGE(c) eprintf("character %c out of range: [%d-%d]\n", (c), 1 + ' ', 077 + ' ' + 1) + + while ((len = getline(&bufb, &n, fp)) > 0) { + p = bufb; + /* trim newlines */ + if (!len || bufb[len - 1] != '\n') + eprintf("no newline found, aborting\n"); + bufb[len - 1] = '\0'; + + /* check for last line */ + if ((i = DEC(*p)) <= 0) + break; + for (++p; i > 0; p += 4, i -= 3) { + if (i >= 3) { + if (!(IS_DEC(*p) && IS_DEC(*(p + 1)) && + IS_DEC(*(p + 2)) && IS_DEC(*(p + 3)))) + OUT_OF_RANGE(*p); + + ch = DEC(p[0]) << 2 | DEC(p[1]) >> 4; + putc(ch, outfp); + ch = DEC(p[1]) << 4 | DEC(p[2]) >> 2; + putc(ch, outfp); + ch = DEC(p[2]) << 6 | DEC(p[3]); + putc(ch, outfp); + } else { + if (i >= 1) { + if (!(IS_DEC(*p) && IS_DEC(*(p + 1)))) + OUT_OF_RANGE(*p); + + ch = DEC(p[0]) << 2 | DEC(p[1]) >> 4; + putc(ch, outfp); + } + if (i >= 2) { + if (!(IS_DEC(*(p + 1)) && + IS_DEC(*(p + 2)))) + OUT_OF_RANGE(*p); + + ch = DEC(p[1]) << 4 | DEC(p[2]) >> 2; + putc(ch, outfp); + } + } + } + if (ferror(fp)) + eprintf("read error:"); + } + /* check for end or fail */ + if ((len = getline(&bufb, &n, fp)) < 0) + eprintf("getline:"); + if (len < 3 || strncmp(bufb, "end", 3) || bufb[3] != '\n') + eprintf("invalid uudecode footer \"end\" not found\n"); + free(bufb); +} + +static void +usage(void) +{ + eprintf("usage: %s [-m] [-o output] [file]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + FILE *fp = NULL, *nfp = NULL; + mode_t mode = 0; + int ret = 0; + char *fname, *header, *ifname, *ofname = NULL; + void (*d) (FILE *, FILE *) = NULL; + + ARGBEGIN { + case 'm': + mflag = 1; /* accepted but unused (autodetect file type) */ + break; + case 'o': + oflag = 1; + ofname = EARGF(usage()); + break; + default: + usage(); + } ARGEND + + if (argc > 1) + usage(); + + if (!argc || !strcmp(argv[0], "-")) { + fp = stdin; + ifname = "<stdin>"; + } else { + if (!(fp = fopen(argv[0], "r"))) + eprintf("fopen %s:", argv[0]); + ifname = argv[0]; + } + + parseheader(fp, ifname, &header, &mode, &fname); + + if (!strncmp(header, "begin", sizeof("begin"))) + d = uudecode; + else if (!strncmp(header, "begin-base64", sizeof("begin-base64"))) + d = uudecodeb64; + else + eprintf("unknown header %s:", header); + + if (oflag) + fname = ofname; + if (!(nfp = parsefile(fname))) + eprintf("fopen %s:", fname); + + d(fp, nfp); + + if (nfp != stdout && chmod(fname, mode) < 0) + eprintf("chmod %s:", fname); + + ret |= fshut(fp, (fp == stdin) ? "<stdin>" : argv[0]); + ret |= fshut(nfp, (nfp == stdout) ? "<stdout>" : fname); + + return ret; +} diff --git a/util/sbase/uuencode.1 b/util/sbase/uuencode.1 new file mode 100644 index 00000000..859f4a79 --- /dev/null +++ b/util/sbase/uuencode.1 @@ -0,0 +1,34 @@ +.Dd October 8, 2015 +.Dt UUENCODE 1 +.Os sbase +.Sh NAME +.Nm uuencode +.Nd encode a binary file +.Sh SYNOPSIS +.Nm +.Op Fl m +.Op Ar file +.Ar name +.Sh DESCRIPTION +.Nm +reads +.Ar file +and writes an encoded version to stdout. +The encoding uses only printing ASCII characters and +includes the mode of the file and the operand +.Ar name +for use by uudecode. +If no +.Ar name +is given +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl m +Use Base64 for encoding. +.El +.Sh SEE ALSO +.Xr uudecode 1 +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/uuencode.c b/util/sbase/uuencode.c new file mode 100644 index 00000000..b5317205 --- /dev/null +++ b/util/sbase/uuencode.c @@ -0,0 +1,129 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> + +#include <stdio.h> +#include <string.h> + +#include "util.h" + +static unsigned int +b64e(unsigned char *b) +{ + unsigned int o, p = b[2] | (b[1] << 8) | (b[0] << 16); + const char b64et[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + + o = b64et[p & 0x3f]; p >>= 6; + o = (o << 8) | b64et[p & 0x3f]; p >>= 6; + o = (o << 8) | b64et[p & 0x3f]; p >>= 6; + o = (o << 8) | b64et[p & 0x3f]; + + return o; +} + +static void +uuencodeb64(FILE *fp, const char *name, const char *s) +{ + struct stat st; + ssize_t n, m = 0; + unsigned char buf[45], *pb; + unsigned int out[sizeof(buf)/3 + 1], *po; + + if (fstat(fileno(fp), &st) < 0) + eprintf("fstat %s:", s); + printf("begin-base64 %o %s\n", st.st_mode & 0777, name); + /* write line by line */ + while ((n = fread(buf, 1, sizeof(buf), fp))) { + /* clear old buffer if converting with non-multiple of 3 */ + if (n != sizeof(buf) && (m = n % 3) != 0) { + buf[n] = '\0'; /* m == 2 */ + if (m == 1) buf[n+1] = '\0'; /* m == 1 */ + } + for (pb = buf, po = out; pb < buf + n; pb += 3) + *po++ = b64e(pb); + if (m != 0) { + unsigned int mask = 0xffffffff, dest = 0x3d3d3d3d; + /* m==2 -> 0x00ffffff; m==1 -> 0x0000ffff */ + mask >>= ((3-m) << 3); + po[-1] = (po[-1] & mask) | (dest & ~mask); + } + *po++ = '\n'; + fwrite(out, 1, (po - out) * sizeof(unsigned int) - 3, stdout); + } + if (ferror(fp)) + eprintf("'%s' read error:", s); + puts("===="); +} + +static void +uuencode(FILE *fp, const char *name, const char *s) +{ + struct stat st; + unsigned char buf[45], *p; + ssize_t n; + int ch; + + if (fstat(fileno(fp), &st) < 0) + eprintf("fstat %s:", s); + printf("begin %o %s\n", st.st_mode & 0777, name); + while ((n = fread(buf, 1, sizeof(buf), fp))) { + ch = ' ' + (n & 0x3f); + putchar(ch == ' ' ? '`' : ch); + for (p = buf; n > 0; n -= 3, p += 3) { + if (n < 3) { + p[2] = '\0'; + if (n < 2) + p[1] = '\0'; + } + ch = ' ' + ((p[0] >> 2) & 0x3f); + putchar(ch == ' ' ? '`' : ch); + ch = ' ' + (((p[0] << 4) | ((p[1] >> 4) & 0xf)) & 0x3f); + putchar(ch == ' ' ? '`' : ch); + ch = ' ' + (((p[1] << 2) | ((p[2] >> 6) & 0x3)) & 0x3f); + putchar(ch == ' ' ? '`' : ch); + ch = ' ' + (p[2] & 0x3f); + putchar(ch == ' ' ? '`' : ch); + } + putchar('\n'); + } + if (ferror(fp)) + eprintf("'%s' read error:", s); + printf("%c\nend\n", '`'); +} + +static void +usage(void) +{ + eprintf("usage: %s [-m] [file] name\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + FILE *fp = NULL; + void (*uuencode_f)(FILE *, const char *, const char *) = uuencode; + int ret = 0; + + ARGBEGIN { + case 'm': + uuencode_f = uuencodeb64; + break; + default: + usage(); + } ARGEND + + if (!argc || argc > 2) + usage(); + + if (argc == 1 || !strcmp(argv[0], "-")) { + uuencode_f(stdin, argv[0], "<stdin>"); + } else { + if (!(fp = fopen(argv[0], "r"))) + eprintf("fopen %s:", argv[0]); + uuencode_f(fp, argv[1], argv[0]); + } + + ret |= fp && fshut(fp, argv[0]); + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/wc.1 b/util/sbase/wc.1 new file mode 100644 index 00000000..91c05018 --- /dev/null +++ b/util/sbase/wc.1 @@ -0,0 +1,28 @@ +.Dd October 8, 2015 +.Dt WC 1 +.Os sbase +.Sh NAME +.Nm wc +.Nd word count +.Sh SYNOPSIS +.Nm +.Op Fl c | Fl m +.Op Fl lw +.Op Ar file ... +.Sh DESCRIPTION +.Nm +writes the number of lines, words and bytes in each +.Ar file +to stdout. +If no +.Ar file +is given +.Nm +reads from stdin. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl c | Fl l | Fl m | Fl w +Print the number of bytes | lines | characters | words. +.El +.Sh STANDARDS +POSIX.1-2013. diff --git a/util/sbase/wc.c b/util/sbase/wc.c new file mode 100644 index 00000000..c89d19f8 --- /dev/null +++ b/util/sbase/wc.c @@ -0,0 +1,122 @@ +/* See LICENSE file for copyright and license details. */ +#include <string.h> + +#include "utf.h" +#include "util.h" + +static int lflag = 0; +static int wflag = 0; +static char cmode = 0; +static size_t tc = 0, tl = 0, tw = 0; + +static void +output(const char *str, size_t nc, size_t nl, size_t nw) +{ + int first = 1; + + if (lflag) { + first = 0; + printf("%zu", nl); + } + if (wflag) { + if (!first) + putchar(' '); + first = 0; + printf("%zu", nw); + } + if (cmode) { + if (!first) + putchar(' '); + printf("%zu", nc); + } + if (str) + printf(" %s", str); + putchar('\n'); +} + +static void +wc(FILE *fp, const char *str) +{ + int word = 0, rlen; + Rune c; + size_t nc = 0, nl = 0, nw = 0; + + while ((rlen = efgetrune(&c, fp, str))) { + nc += (cmode == 'c') ? rlen : (c != Runeerror); + if (c == '\n') + nl++; + if (!isspacerune(c)) + word = 1; + else if (word) { + word = 0; + nw++; + } + } + if (word) + nw++; + tc += nc; + tl += nl; + tw += nw; + output(str, nc, nl, nw); +} + +static void +usage(void) +{ + eprintf("usage: %s [-c | -m] [-lw] [file ...]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + FILE *fp; + int many; + int ret = 0; + + ARGBEGIN { + case 'c': + cmode = 'c'; + break; + case 'm': + cmode = 'm'; + break; + case 'l': + lflag = 1; + break; + case 'w': + wflag = 1; + break; + default: + usage(); + } ARGEND + + if (!lflag && !wflag && !cmode) { + cmode = 'c'; + lflag = 1; + wflag = 1; + } + + if (!argc) { + wc(stdin, NULL); + } else { + for (many = (argc > 1); *argv; argc--, argv++) { + if (!strcmp(*argv, "-")) { + *argv = "<stdin>"; + fp = stdin; + } else if (!(fp = fopen(*argv, "r"))) { + weprintf("fopen %s:", *argv); + ret = 1; + continue; + } + wc(fp, *argv); + if (fp != stdin && fshut(fp, *argv)) + ret = 1; + } + if (many) + output("total", tc, tl, tw); + } + + ret |= fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"); + + return ret; +} diff --git a/util/sbase/which.1 b/util/sbase/which.1 new file mode 100644 index 00000000..9ba4b224 --- /dev/null +++ b/util/sbase/which.1 @@ -0,0 +1,44 @@ +.Dd October 8, 2015 +.Dt WHICH 1 +.Os sbase +.Sh NAME +.Nm which +.Nd locate programs in the path +.Sh SYNOPSIS +.Nm +.Op Fl a +.Ar name ... +.Sh DESCRIPTION +.Nm +looks for each +.Ar name +in the +.Ev PATH +directories, stopping at the first match and printing +the full path to stdout. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl a +Don't stop at the first match and search all +.Ev PATH +directories. +.El +.Sh EXIT STATUS +.Bl -tag -width Ds +.It 0 +Each +.Ar name +was found. +.It 1 +At least one +.Ar name +was not found. +.It 2 +No +.Ar name +was found. +.It 3 +An error occurred. +.El +.Sh SEE ALSO +.Xr environ 7 diff --git a/util/sbase/which.c b/util/sbase/which.c new file mode 100644 index 00000000..abd030e7 --- /dev/null +++ b/util/sbase/which.c @@ -0,0 +1,101 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/stat.h> +#include <sys/types.h> + +#include <fcntl.h> +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "util.h" + +static int aflag; + +static int +canexec(int fd, const char *name) +{ + struct stat st; + + if (fstatat(fd, name, &st, 0) < 0 || !S_ISREG(st.st_mode)) + return 0; + return faccessat(fd, name, X_OK, AT_EACCESS) == 0; +} + +static int +which(const char *path, const char *name) +{ + char *ptr, *p; + size_t i, len; + int dirfd, found = 0; + + if (strchr(name, '/')) { + found = canexec(AT_FDCWD, name); + if (found) + puts(name); + return found; + } + + ptr = p = enstrdup(3, path); + len = strlen(p); + for (i = 0; i < len + 1; i++) { + if (ptr[i] != ':' && ptr[i] != '\0') + continue; + ptr[i] = '\0'; + if ((dirfd = open(p, O_RDONLY)) >= 0) { + if (canexec(dirfd, name)) { + found = 1; + fputs(p, stdout); + if (i && ptr[i - 1] != '/') + fputc('/', stdout); + puts(name); + } + close(dirfd); + if (!aflag && found) + break; + } + p = ptr + i + 1; + } + free(ptr); + + return found; +} + +static void +usage(void) +{ + eprintf("usage: %s [-a] name ...\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + char *path; + int found = 0, foundall = 1; + + ARGBEGIN { + case 'a': + aflag = 1; + break; + default: + usage(); + } ARGEND + + if (!argc) + usage(); + + if (!(path = getenv("PATH"))) + enprintf(3, "$PATH is not set\n"); + + for (; *argv; argc--, argv++) { + if (which(path, *argv)) { + found = 1; + } else { + weprintf("%s: not an external command\n", *argv); + foundall = 0; + } + } + + return found ? foundall ? 0 : 1 : 2; +} diff --git a/util/sbase/whoami.1 b/util/sbase/whoami.1 new file mode 100644 index 00000000..d552a327 --- /dev/null +++ b/util/sbase/whoami.1 @@ -0,0 +1,9 @@ +.Dd December 14, 2015 +.Dt WHOAMI 1 +.Os sbase +.Sh NAME +.Nm whoami +.Nd show effective uid +.Sh SYNOPSIS +.Nm +writes the name of the effective uid to stdout. diff --git a/util/sbase/whoami.c b/util/sbase/whoami.c new file mode 100644 index 00000000..c991ac29 --- /dev/null +++ b/util/sbase/whoami.c @@ -0,0 +1,37 @@ +/* See LICENSE file for copyright and license details. */ +#include <errno.h> +#include <stdio.h> +#include <unistd.h> +#include <pwd.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + uid_t uid; + struct passwd *pw; + + argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0; + + if (argc) + usage(); + + uid = geteuid(); + errno = 0; + if (!(pw = getpwuid(uid))) { + if (errno) + eprintf("getpwuid %d:", uid); + else + eprintf("getpwuid %d: no such user\n", uid); + } + puts(pw->pw_name); + + return fshut(stdout, "<stdout>"); +} diff --git a/util/sbase/xargs.1 b/util/sbase/xargs.1 new file mode 100644 index 00000000..e988278d --- /dev/null +++ b/util/sbase/xargs.1 @@ -0,0 +1,121 @@ +.Dd July 30, 2025 +.Dt XARGS 1 +.Os sbase +.Sh NAME +.Nm xargs +.Nd construct argument lists and execute command +.Sh SYNOPSIS +.Nm +.Op Fl 0prtx +.Op Fl E Ar eofstr +.Op Fl I Ar replstr +.Op Fl n Ar num +.Op Fl P Ar maxprocs +.Op Fl s Ar num +.Op Ar cmd Op Ar arg ... +.Sh DESCRIPTION +.Nm +reads space, tab, newline and EOF delimited strings from stdin +and executes the specified +.Ar cmd +with the strings as +.Ar arguments . +.Pp +Any arguments specified on the command line are given to the command upon +each invocation, followed by some number of the arguments read from +stdin. +The command is repeatedly executed one or more times until stdin is exhausted. +.Pp +Spaces, tabs and newlines may be embedded in arguments using single (`'') +or double (`"') quotes or backslashes ('\e'). +Single quotes escape all non-single quote characters, excluding newlines, up +to the matching single quote. +Double quotes escape all non-double quote characters, excluding newlines, up +to the matching double quote. +Any single character, including newlines, may be escaped by a backslash. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl 0 +Change +.Nm +to expect NUL ('\e0') characters as separators, instead of spaces +and newlines. +The quoting mechanisms described above are not performed. +.It Fl E Ar eofstr +Use +.Ar eofstr +as a logical EOF marker. +.It Fl I Ar replstr +Use +.Ar replstr +as the placeholder for the argument. +Sets the arguments count to 1 per command line. +It also implies the option x. +.It Fl n Ar num +Use at most +.Ar num +arguments per command line. +.It Fl p +Prompt mode: the user is asked whether to execute +.Ar cmd +at each invocation. +Trace mode (-t) is turned on to write the command instance to be executed, +followed by a prompt to standard error. +An affirmative response read from +.Pa /dev/tty +executes the command, otherwise it is skipped. +.It Fl P Ar maxprocs +Parallel mode: run at most maxprocs invocations of +.Ar cmd +at once. +.It Fl r +Do not run the command if there are no arguments. +Normally the command is executed at least once even if there are no arguments. +.It Fl s Ar num +Use at most +.Ar num +bytes per command line. +.It Fl t +Enable trace mode. +Write the command line to stderr before executing it. +.It Fl x +Terminate if the command line exceeds the system limit or the number of bytes +given with the +.Op Fl s +flag. +.El +.Sh EXIT STATUS +.Nm +exits with one of the following values: +.Bl -tag -width Ds +.It 0 +All invocations of +.Ar cmd +returned a zero exit status. +.It 123 +One or more invocations of +.Ar cmd +returned a nonzero exit status. +.It 124 +.Ar cmd +exited with a 255 exit status. +.It 125 +.Ar cmd +was killed or stopped by a signal. +.It 126 +.Ar cmd +was found but could not be executed. +.It 127 +.Ar cmd +could not be found. +.It 1 +Some other error occurred. +.El +.Sh STANDARDS +POSIX.1-2013. +.Pp +The +.Op Fl r +and +.Op Fl P +flag is an extension to that specification. diff --git a/util/sbase/xargs.c b/util/sbase/xargs.c new file mode 100644 index 00000000..b3b2a81c --- /dev/null +++ b/util/sbase/xargs.c @@ -0,0 +1,362 @@ +/* See LICENSE file for copyright and license details. */ +#include <sys/wait.h> + +#include <errno.h> +#include <limits.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "util.h" + +#define NARGS 10000 + +static int inputc(void); +static void fillargbuf(int); +static int eatspace(void); +static int parsequote(int); +static int parseescape(void); +static char *poparg(void); +static void waitchld(int); +static void spawn(void); + +static size_t argbsz; +static size_t argbpos; +static size_t maxargs; +static size_t curprocs, maxprocs = 1; +static int nerrors; +static int nulflag, nflag, pflag, rflag, tflag, xflag, Iflag; +static char *argb; +static char *cmd[NARGS]; +static char *eofstr; + +static int +inputc(void) +{ + int ch; + + ch = getc(stdin); + if (ch == EOF && ferror(stdin)) + eprintf("getc <stdin>:"); + + return ch; +} + +static void +fillargbuf(int ch) +{ + if (argbpos >= argbsz) { + argbsz = argbpos == 0 ? 1 : argbsz * 2; + argb = erealloc(argb, argbsz); + } + argb[argbpos] = ch; +} + +static int +eatspace(void) +{ + int ch; + + while ((ch = inputc()) != EOF) { + if (nulflag || !(ch == ' ' || ch == '\t' || ch == '\n')) { + ungetc(ch, stdin); + return ch; + } + } + return -1; +} + +static int +parsequote(int q) +{ + int ch; + + while ((ch = inputc()) != EOF) { + if (ch == q) + return 0; + if (ch != '\n') { + fillargbuf(ch); + argbpos++; + } + } + + return -1; +} + +static int +parseescape(void) +{ + int ch; + + if ((ch = inputc()) != EOF) { + fillargbuf(ch); + argbpos++; + return ch; + } + + return -1; +} + +static char * +poparg(void) +{ + int ch; + + argbpos = 0; + if (eatspace() < 0) + return NULL; + while ((ch = inputc()) != EOF) { + /* NUL separator: no escaping */ + if (nulflag) { + if (ch == '\0') + goto out; + else + goto fill; + } + + switch (ch) { + case ' ': + case '\t': + if (Iflag) + goto fill; + case '\n': + goto out; + case '\'': + if (parsequote('\'') < 0) + eprintf("unterminated single quote\n"); + break; + case '\"': + if (parsequote('\"') < 0) + eprintf("unterminated double quote\n"); + break; + case '\\': + if (parseescape() < 0) + eprintf("backslash at EOF\n"); + break; + default: + fill: + fillargbuf(ch); + argbpos++; + break; + } + } +out: + fillargbuf('\0'); + + return (eofstr && !strcmp(argb, eofstr)) ? NULL : argb; +} + +static void +waitchld(int waitall) +{ + pid_t pid; + int status; + + while ((pid = waitpid(-1, &status, !waitall && curprocs < maxprocs ? + WNOHANG : 0)) > 0) { + curprocs--; + + if (WIFEXITED(status)) { + if (WEXITSTATUS(status) == 255) + exit(124); + if (WEXITSTATUS(status) == 127 || + WEXITSTATUS(status) == 126) + exit(WEXITSTATUS(status)); + if (WEXITSTATUS(status)) + nerrors++; + } + if (WIFSIGNALED(status)) + exit(125); + } + if (pid == -1 && errno != ECHILD) + eprintf("waitpid:"); +} + +static int +prompt(void) +{ + FILE *fp; + int ch, ret; + + if (!(fp = fopen("/dev/tty", "r"))) + return -1; + + fputs("?...", stderr); + fflush(stderr); + + ch = fgetc(fp); + ret = (ch == 'y' || ch == 'Y'); + if (ch != EOF && ch != '\n') { + while ((ch = fgetc(fp)) != EOF) { + if (ch == '\n') + break; + } + } + + fclose(fp); + + return ret; +} + +static void +spawn(void) +{ + int savederrno; + int first = 1; + char **p; + + if (pflag || tflag) { + for (p = cmd; *p; p++) { + if (!first) + fputc(' ', stderr); + fputs(*p, stderr); + first = 0; + } + if (pflag) { + switch (prompt()) { + case -1: break; /* error */ + case 0: return; /* no */ + case 1: goto dospawn; /* yes */ + } + } + fputc('\n', stderr); + fflush(stderr); + } + +dospawn: + switch (fork()) { + case -1: + eprintf("fork:"); + case 0: + execvp(*cmd, cmd); + savederrno = errno; + weprintf("execvp %s:", *cmd); + _exit(126 + (savederrno == ENOENT)); + } + curprocs++; + waitchld(0); +} + +static void +usage(void) +{ + eprintf("usage: %s [-0prtx] [-E eofstr] [-n num] [-P maxprocs] [-s num] " + "[cmd [arg ...]]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int ret = 0, leftover = 0, i, j; + size_t argsz, argmaxsz; + size_t arglen, a; + char *arg = ""; + char *replstr; + + if ((argmaxsz = sysconf(_SC_ARG_MAX)) == (size_t)-1) + argmaxsz = _POSIX_ARG_MAX; + /* Leave some room for environment variables */ + argmaxsz -= 4096; + + ARGBEGIN { + case '0': + nulflag = 1; + break; + case 'n': + nflag = 1; + maxargs = estrtonum(EARGF(usage()), 1, MIN(SIZE_MAX, LLONG_MAX)); + break; + case 'p': + pflag = 1; + break; + case 'r': + rflag = 1; + break; + case 's': + argmaxsz = estrtonum(EARGF(usage()), 1, MIN(SIZE_MAX, LLONG_MAX)); + break; + case 't': + tflag = 1; + break; + case 'x': + xflag = 1; + break; + case 'E': + eofstr = EARGF(usage()); + break; + case 'I': + Iflag = 1; + xflag = 1; + nflag = 1; + maxargs = 1; + replstr = EARGF(usage()); + break; + case 'P': + maxprocs = estrtonum(EARGF(usage()), 1, MIN(SIZE_MAX, LLONG_MAX)); + break; + default: + usage(); + } ARGEND + + do { + argsz = 0; i = 0; a = 0; + if (argc) { + for (; i < argc; i++) { + cmd[i] = estrdup(argv[i]); + argsz += strlen(cmd[i]) + 1; + } + } else { + cmd[i] = estrdup("/bin/echo"); + argsz += strlen("/bin/echo") + 1; + i++; + } + while (leftover || (arg = poparg())) { + arglen = strlen(arg); + if (argsz + arglen >= argmaxsz || i >= NARGS - 1) { + if (xflag || arglen >= argmaxsz || leftover) + eprintf("insufficient argument space\n"); + leftover = 1; + break; + } + + if (!Iflag) { + cmd[i] = estrdup(arg); + argsz += arglen + 1; + } else { + for (j = 1; j < i; j++) { + char *p = cmd[j]; + argsz -= strlen(cmd[j]); + strnsubst(&cmd[j], replstr, arg, 255); + argsz += strlen(cmd[j]); + free(p); + } + } + + i++; + a++; + leftover = 0; + if (nflag && a >= maxargs) + break; + } + cmd[i] = NULL; + if (a >= maxargs && nflag) + spawn(); + else if (!a || (i == 1 && rflag)) + ; + else + spawn(); + for (; i >= 0; i--) + free(cmd[i]); + } while (arg); + + free(argb); + + waitchld(1); + + if (nerrors || (fshut(stdin, "<stdin>") | fshut(stdout, "<stdout>"))) + ret = 123; + + return ret; +} diff --git a/util/sbase/xinstall.1 b/util/sbase/xinstall.1 new file mode 100644 index 00000000..2d9535c0 --- /dev/null +++ b/util/sbase/xinstall.1 @@ -0,0 +1,86 @@ +.Dd December 3, 2016 +.Dt INSTALL 1 +.Os sbase +.Sh NAME +.Nm install +.Nd copy files and set attributes +.Sh SYNOPSIS +.Nm +.Op Fl g Ar group +.Op Fl o Ar owner +.Op Fl m Ar mode +.Po +.Fl d Ar dir ... +| +.Op Fl D +.Po +.Fl t Ar dest +.Ar source ... +| +.Ar source ... +.Ar dest +.Pc +.Pc +.Sh DESCRIPTION +.Nm +copies +.Ar source +to +.Ar dest . +If more than one +.Ar source +is given +.Ar dest +is treated as a directory. +Otherwise +.Ar dest +is treated as a filename. +.Nm +can also change the attributes of the copies. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl d +Create the directories +.Ar dir . +.It Fl D +Create missing parent directories to +.Ar dest . +If +.Ar dest +is to be treated as a directory, it is created too if missing. +.It Fl g Ar group +Change the installed files' group to +.Ar group . +This may be a group name or a group identifier. +.It Fl m Ar mode +Change the file modes. +Both numerical and symbolic values are supported. +See +.Xr chmod 1 +for the syntex. +Default mode 0755. +If a file has the mode 0644 and is copied with +.It Fl o Ar owner +Change the installed files' owner to +.Ar owner . +This may be a user name or a user identifier. +.It Fl t Ar dest +Copy files into the directory +.Ar dest . +.Nm install , +the copy's mode will be 0755 unless +.Fl m +is used to select another mode. +When the symbolic notation is used, the base mode is 0000. +.El +.Sh SEE ALSO +.Xr chmod 1 , +.Xr chown 1 , +.Xr cp 1 , +.Xr mkdir 1 +.Sh STANDARDS +The +.Nm +utility is not standardized. +This implementation is a subset of the GNU implementation and a subset +with extensions to the FreeBSD implementation. diff --git a/util/sbase/xinstall.c b/util/sbase/xinstall.c new file mode 100644 index 00000000..fe1a160e --- /dev/null +++ b/util/sbase/xinstall.c @@ -0,0 +1,194 @@ +/* See LICENSE file for copyright and license details. */ +#include <grp.h> +#include <pwd.h> +#include <errno.h> +#include <fcntl.h> +#include <unistd.h> +#include <stdlib.h> +#include <string.h> +#include <dirent.h> +#include <sys/stat.h> +#include <sys/wait.h> + +#include "util.h" + +static int Dflag = 0; +static gid_t group; +static uid_t owner; +static mode_t mode = 0755; + +static void +make_dir(char *dir, int was_missing) +{ + if (!mkdir(dir, was_missing ? 0755 : mode)) { + if (!was_missing && (lchown(dir, owner, group) < 0)) + eprintf("lchmod %s:", dir); + } else if (errno != EEXIST) { + eprintf("mkdir %s:", dir); + } +} + +static void +make_dirs(char *dir, int was_missing) +{ + char *p; + for (p = strchr(dir + (dir[0] == '/'), '/'); p; p = strchr(p + 1, '/')) { + *p = '\0'; + make_dir(dir, was_missing); + *p = '/'; + } + make_dir(dir, was_missing); +} + +static int +install(const char *s1, const char *s2, int depth) +{ + int f1, f2; + + if ((f1 = open(s1, O_RDONLY)) < 0) + eprintf("open %s:", s1); + if ((f2 = creat(s2, 0600)) < 0) { + if (unlink(s2) < 0 && errno != ENOENT) + eprintf("unlink %s:", s2); + if ((f2 = creat(s2, 0600)) < 0) + eprintf("creat %s:", s2); + } + if (concat(f1, s1, f2, s2) < 0) + goto fail; + if (fchmod(f2, mode) < 0) { + weprintf("fchmod %s:", s2); + goto fail; + } + if (fchown(f2, owner, group) < 0) { + weprintf("fchown %s:", s2); + goto fail; + } + + close(f1); + close(f2); + + return 0; + +fail: + unlink(s2); + exit(1); +} + +static void +usage(void) +{ + eprintf("usage: %s [-g group] [-o owner] [-m mode] (-d dir ... | [-D] (-t dest source ... | source ... dest))\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + int dflag = 0; + char *gflag = 0; + char *oflag = 0; + char *mflag = 0; + char *tflag = 0; + struct group *gr; + struct passwd *pw; + struct stat st; + char *p; + + ARGBEGIN { + case 'c': + /* no-op for compatibility */ + break; + case 'd': + dflag = 1; + break; + case 'D': + Dflag = 1; + break; + case 's': + /* no-op for compatibility */ + break; + case 'g': + gflag = EARGF(usage()); + break; + case 'o': + oflag = EARGF(usage()); + break; + case 'm': + mflag = EARGF(usage()); + break; + case 't': + tflag = EARGF(usage()); + break; + default: + usage(); + } ARGEND + + if (argc < 1 + (!tflag & !dflag) || dflag & (Dflag | !!tflag)) + usage(); + + if (gflag) { + errno = 0; + gr = getgrnam(gflag); + if (gr) { + group = gr->gr_gid; + } else { + if (errno) + eprintf("getgrnam %s:", gflag); + group = estrtonum(gflag, 0, UINT_MAX); + } + } else { + group = getgid(); + } + + if (oflag) { + errno = 0; + pw = getpwnam(oflag); + if (pw) { + owner = pw->pw_uid; + } else { + if (errno) + eprintf("getpwnam %s:", oflag); + owner = estrtonum(oflag, 0, UINT_MAX); + } + } else { + owner = getuid(); + } + + if (mflag) + mode = parsemode(mflag, mode, 0); + + if (dflag) { + for (; *argv; argc--, argv++) + make_dirs(*argv, 0); + return 0; + } + + if (tflag) { + argv = memmove(argv - 1, argv, argc * sizeof(*argv)); + argv[argc++] = tflag; + } + if (tflag || argc > 2) { + if (stat(argv[argc - 1], &st) < 0) { + if ((errno == ENOENT) && Dflag) { + make_dirs(argv[argc - 1], 1); + } else { + eprintf("stat %s:", argv[argc - 1]); + } + } else if (!S_ISDIR(st.st_mode)) { + eprintf("%s: not a directory\n", argv[argc - 1]); + } + } + if (stat(argv[argc - 1], &st) < 0) { + if (errno != ENOENT) + eprintf("stat %s:", argv[argc - 1]); + if (tflag || Dflag || argc > 2) { + if ((p = strrchr(argv[argc - 1], '/')) != NULL) { + *p = '\0'; + make_dirs(argv[argc - 1], 1); + *p = '/'; + } + } + } + enmasse(argc, argv, install); + + return 0; +} diff --git a/util/sbase/yes.1 b/util/sbase/yes.1 new file mode 100644 index 00000000..8415857c --- /dev/null +++ b/util/sbase/yes.1 @@ -0,0 +1,14 @@ +.Dd October 8, 2015 +.Dt YES 1 +.Os sbase +.Sh NAME +.Nm yes +.Nd output string repeatedly +.Sh SYNOPSIS +.Nm +.Op Ar string +.Sh DESCRIPTION +.Nm +will repeatedly write 'y' or +.Ar string +to stdout. diff --git a/util/sbase/yes.c b/util/sbase/yes.c new file mode 100644 index 00000000..b5c3c109 --- /dev/null +++ b/util/sbase/yes.c @@ -0,0 +1,25 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> + +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [string]\n", argv0); +} + +int +main(int argc, char *argv[]) +{ + const char *s; + + ARGBEGIN { + default: + usage(); + } ARGEND + + s = argc ? argv[0] : "y"; + for (;;) + puts(s); +} |