diff --git a/resources/coreboot/hp_8560w_cherrypick/patches/0001-mb-hp-Add-Elitebook-8560w-as-an-HP-Sandy-Ivy-Bridge-.patch b/resources/coreboot/hp_8560w_cherrypick/patches/0001-mb-hp-Add-Elitebook-8560w-as-an-HP-Sandy-Ivy-Bridge-.patch index 3bff35e937fd8d959779923c4d46fbaa54710813..6340212c6704a5405e3350690a8a48152e407bfe 100644 --- a/resources/coreboot/hp_8560w_cherrypick/patches/0001-mb-hp-Add-Elitebook-8560w-as-an-HP-Sandy-Ivy-Bridge-.patch +++ b/resources/coreboot/hp_8560w_cherrypick/patches/0001-mb-hp-Add-Elitebook-8560w-as-an-HP-Sandy-Ivy-Bridge-.patch @@ -1,7 +1,7 @@ From 6b382ea8ac5f1e0ac5fd772adce394daf150a7e6 Mon Sep 17 00:00:00 2001 From: Iru Cai <mytbk920423@gmail.com> Date: Tue, 5 Mar 2019 16:27:36 +0800 -Subject: [PATCH 1/2] mb/hp: Add Elitebook 8560w as an HP Sandy/Ivy Bridge +Subject: [PATCH 1/3] mb/hp: Add Elitebook 8560w as an HP Sandy/Ivy Bridge laptop variant Change-Id: I15181792b1efa45a2a94d78e43c6257da1acf950 diff --git a/resources/coreboot/hp_8560w_cherrypick/patches/0002-coreboot-default-fix-crossgcc-build.patch b/resources/coreboot/hp_8560w_cherrypick/patches/0002-coreboot-default-fix-crossgcc-build.patch index 142a4631f369ffacb8cdcf9f93fcdd433a4bfb43..1260f3b8d23492fff639d1d43a94074873c1719d 100644 --- a/resources/coreboot/hp_8560w_cherrypick/patches/0002-coreboot-default-fix-crossgcc-build.patch +++ b/resources/coreboot/hp_8560w_cherrypick/patches/0002-coreboot-default-fix-crossgcc-build.patch @@ -1,7 +1,7 @@ From 5bfcf6e8cb17eaa2aa4ed2cd07c1e3a9776ed82f Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Sat, 19 Nov 2022 03:30:34 +0000 -Subject: [PATCH 2/2] coreboot/default: fix crossgcc build +Subject: [PATCH 2/3] coreboot/default: fix crossgcc build patch copied from coreboot f9b5665d280faa35c6b41fe0c48a9e9e1afd634b diff --git a/resources/coreboot/hp_8560w_cherrypick/patches/0003-Revert-util-cbfstool-Port-elogtool-to-libflashrom.patch b/resources/coreboot/hp_8560w_cherrypick/patches/0003-Revert-util-cbfstool-Port-elogtool-to-libflashrom.patch new file mode 100644 index 0000000000000000000000000000000000000000..67c6011fb68ad4b6b42077810738be17fff81538 --- /dev/null +++ b/resources/coreboot/hp_8560w_cherrypick/patches/0003-Revert-util-cbfstool-Port-elogtool-to-libflashrom.patch @@ -0,0 +1,373 @@ +From 47c49bf908911a160ca9b1f405d02b61fa8d36d9 Mon Sep 17 00:00:00 2001 +From: Martin Roth <martin@coreboot.org> +Date: Fri, 25 Feb 2022 17:28:04 -0700 +Subject: [PATCH 3/3] Revert "util/cbfstool: Port elogtool to libflashrom" + +This reverts commit d74b8d9c990780ba64515b36aaff79d719d71ead. + +This change breaks the 'make all' build of the cbfstool tools +from the util/cbfstool directory unless libflashrom-dev is +installed, complaining that flashrom is not installed. + +Even with libflashrom-dev installed, it breaks building +elogtool with the public version of libflashrom-dev. + +Signed-off-by: Martin Roth <martin@coreboot.org> +Change-Id: I572daa0c0f3998e20a8ed76df21228fdbb384baf +Reviewed-on: https://review.coreboot.org/c/coreboot/+/62404 +Reviewed-by: Nico Huber <nico.h@gmx.de> +Reviewed-by: ron minnich <rminnich@gmail.com> +Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> +Reviewed-by: Felix Singer <felixsinger@posteo.net> +Tested-by: build bot (Jenkins) <no-reply@coreboot.org> +--- + util/cbfstool/Makefile.inc | 13 +-- + util/cbfstool/elogtool.c | 25 ++--- + util/cbfstool/uflashrom.c | 210 ------------------------------------- + util/cbfstool/uflashrom.h | 17 --- + 4 files changed, 11 insertions(+), 254 deletions(-) + delete mode 100644 util/cbfstool/uflashrom.c + delete mode 100644 util/cbfstool/uflashrom.h + +diff --git a/util/cbfstool/Makefile.inc b/util/cbfstool/Makefile.inc +index a568e9aef6..3787a56578 100644 +--- a/util/cbfstool/Makefile.inc ++++ b/util/cbfstool/Makefile.inc +@@ -1,5 +1,3 @@ +-HOSTPKGCONFIG ?= /usr/bin/pkg-config +- + compressionobj := + compressionobj += compress.o + # LZ4 +@@ -94,7 +92,6 @@ amdcompobj += xdr.o + elogobj := + elogobj := elogtool.o + elogobj += eventlog.o +-elogobj += uflashrom.o + elogobj += valstr.o + elogobj += elog.o + elogobj += common.o +@@ -147,12 +144,6 @@ else + TOOLCFLAGS+=-std=c11 + endif + +-.PHONY: check-flashrom-presence +-check-flashrom-presence: +- $(HOSTPKGCONFIG) --exists flashrom || \ +- (echo "Error: Ensure that pkg-config and flashrom are installed."; exit 1) +- +-FLASHROM := $$($(HOSTPKGCONFIG) --libs flashrom) + VBOOT_HOSTLIB = $(VBOOT_HOST_BUILD)/libvboot_host.a + + $(VBOOT_HOSTLIB): +@@ -233,9 +224,9 @@ $(objutil)/cbfstool/amdcompress: $(addprefix $(objutil)/cbfstool/,$(amdcompobj)) + printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" + $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(amdcompobj)) -lz + +-$(objutil)/cbfstool/elogtool: | check-flashrom-presence $(addprefix $(objutil)/cbfstool/,$(elogobj)) ++$(objutil)/cbfstool/elogtool: $(addprefix $(objutil)/cbfstool/,$(elogobj)) $(VBOOT_HOSTLIB) + printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" +- $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(elogobj)) $(FLASHROM) ++ $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(elogobj)) $(VBOOT_HOSTLIB) + + $(objutil)/cbfstool/cse_fpt: $(addprefix $(objutil)/cbfstool/,$(cse_fpt_obj)) + printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" +diff --git a/util/cbfstool/elogtool.c b/util/cbfstool/elogtool.c +index 44823dd89a..253e2ee95a 100644 +--- a/util/cbfstool/elogtool.c ++++ b/util/cbfstool/elogtool.c +@@ -11,9 +11,9 @@ + + #include <common.h> + #include <commonlib/bsd/elog.h> ++#include <flashrom.h> + + #include "eventlog.h" +-#include "uflashrom.h" + + /* Only refers to the data max size. The "-1" is the checksum byte */ + #define ELOG_MAX_EVENT_DATA_SIZE (ELOG_MAX_EVENT_SIZE - sizeof(struct event_header) - 1) +@@ -78,18 +78,16 @@ static void usage(char *invoked_as) + */ + static int elog_read(struct buffer *buffer, const char *filename) + { +- struct firmware_programmer image = { +- .programmer = FLASHROM_PROGRAMMER_INTERNAL_AP, +- .data = NULL, +- .size = 0, +- }; +- + if (filename == NULL) { +- if (flashrom_read(&image, ELOG_RW_REGION_NAME) != 0) { ++ uint8_t *buf; ++ uint32_t buf_size; ++ ++ if (flashrom_read(FLASHROM_PROGRAMMER_INTERNAL_AP, ELOG_RW_REGION_NAME, ++ &buf, &buf_size) != VB2_SUCCESS) { + fprintf(stderr, "Could not read RW_ELOG region using flashrom\n"); + return ELOGTOOL_EXIT_READ_ERROR; + } +- buffer_init(buffer, NULL, image.data, image.size); ++ buffer_init(buffer, NULL, buf, buf_size); + } else if (buffer_from_file(buffer, filename) != 0) { + fprintf(stderr, "Could not read input file: %s\n", filename); + return ELOGTOOL_EXIT_READ_ERROR; +@@ -110,14 +108,9 @@ static int elog_read(struct buffer *buffer, const char *filename) + */ + static int elog_write(struct buffer *buf, const char *filename) + { +- struct firmware_programmer image = { +- .programmer = FLASHROM_PROGRAMMER_INTERNAL_AP, +- .data = buffer_get(buf), +- .size = buffer_size(buf), +- }; +- + if (filename == NULL) { +- if (flashrom_write(&image, ELOG_RW_REGION_NAME) != 0) { ++ if (flashrom_write(FLASHROM_PROGRAMMER_INTERNAL_AP, ELOG_RW_REGION_NAME, ++ buffer_get(buf), buffer_size(buf)) != VB2_SUCCESS) { + fprintf(stderr, + "Failed to write to RW_ELOG region using flashrom\n"); + return ELOGTOOL_EXIT_WRITE_ERROR; +diff --git a/util/cbfstool/uflashrom.c b/util/cbfstool/uflashrom.c +deleted file mode 100644 +index faa45b6b49..0000000000 +--- a/util/cbfstool/uflashrom.c ++++ /dev/null +@@ -1,210 +0,0 @@ +-/* SPDX-License-Identifier: BSD-3-Clause */ +- +-#include <assert.h> +-#include <stdio.h> +-#include <stdint.h> +-#include <stdlib.h> +-#include <string.h> +- +-#include <libflashrom.h> +- +-#include "uflashrom.h" +- +-static int flashrom_print_cb(enum flashrom_log_level level, const char *fmt, va_list ap) +-{ +- int ret = 0; +- FILE *output_type = stderr; +- +- if (level > FLASHROM_MSG_INFO) +- return ret; +- +- ret = vfprintf(output_type, fmt, ap); +- /* msg_*spew often happens inside chip accessors +- * in possibly time-critical operations. +- * If increasing verbosity, don't slow them down by flushing. +- */ +- fflush(output_type); +- +- return ret; +-} +- +-static size_t resize_buf_to_offset(uint8_t **buf, unsigned int start, unsigned int len) +-{ +- uint8_t *old = *buf; // make a copy to free the old heap. +- +- *buf = calloc(1, len); +- memcpy(*buf, &old[start], len); +- free(old); +- +- return len; +-} +- +-static uint8_t *resize_buf_from_offset(const uint8_t *buf, size_t len, unsigned int rstart, +- unsigned int rlen) +-{ +- size_t nlen = rstart + rlen; +- if (nlen > len) +- return NULL; +- +- uint8_t *nbuf = calloc(1, len); /* NOTE: full len buf required for writes. */ +- memcpy(nbuf + rstart, buf, rlen); +- +- return nbuf; +-} +- +-/** +- * @brief Reads from flash into a buffer with an optional region. +- * +- * @param image, containing the programmer to use, unallocated buffer and size. +- * @param region, (optional) the string of the region to read from. +- * @return 0 on success +- */ +-int flashrom_read(struct firmware_programmer *image, const char *region) +-{ +- int r = 0; +- size_t len = 0; +- +- struct flashrom_programmer *prog = NULL; +- struct flashrom_flashctx *flashctx = NULL; +- struct flashrom_layout *layout = NULL; +- +- flashrom_set_log_callback((flashrom_log_callback *)&flashrom_print_cb); +- +- r |= flashrom_init(1); +- r |= flashrom_programmer_init(&prog, image->programmer, NULL); +- r |= flashrom_flash_probe(&flashctx, prog, NULL); +- if (r) { +- r = -1; +- goto err_cleanup; +- } +- +- len = flashrom_flash_getsize(flashctx); +- if (region) { +- r = flashrom_layout_read_fmap_from_rom(&layout, flashctx, 0, len); +- if (r > 0) { +- fprintf(stderr, "could not read fmap from rom, r=%d\n", r); +- r = -1; +- goto err_cleanup; +- } +- /* empty region causes seg fault in API. */ +- r |= flashrom_layout_include_region(layout, region); +- if (r > 0) { +- fprintf(stderr, "could not include region = '%s'\n", region); +- r = -1; +- goto err_cleanup; +- } +- flashrom_layout_set(flashctx, layout); +- } +- /* Due to how the libflashrom API works we first need a buffer sized +- * to the entire flash and after the read has finished, find the +- * the precise region size then resize the buffer accordingly. +- */ +- image->data = calloc(1, len); +- image->size = len; +- +- r |= flashrom_image_read(flashctx, image->data, len); +- +- /* Here we resize the buffer from being the entire flash down to the specific +- * region size read and that we were interested in. Note that we only include +- * a singular region. +- */ +- if (region) { +- unsigned int r_start, r_len; +- flashrom_layout_get_region_range(layout, region, &r_start, &r_len); +- image->size = resize_buf_to_offset(&image->data, r_start, r_len); +- } +- +-err_cleanup: +- flashrom_programmer_shutdown(prog); +- if (layout) +- flashrom_layout_release(layout); +- if (flashctx) +- flashrom_flash_release(flashctx); +- +- return r; +-} +- +-/** +- * @brief Writes flash from a buffer with an optional region. +- * +- * @param image, containing the programmer to use, allocated buffer and its size. +- * @param region, (optional) the string of the region to write to. +- * @return 0 on success +- */ +-int flashrom_write(struct firmware_programmer *image, const char *region) +-{ +- int r = 0; +- size_t len = 0; +- uint8_t *buf = image->data; +- +- struct flashrom_programmer *prog = NULL; +- struct flashrom_flashctx *flashctx = NULL; +- struct flashrom_layout *layout = NULL; +- +- flashrom_set_log_callback((flashrom_log_callback *)&flashrom_print_cb); +- +- r |= flashrom_init(1); +- r |= flashrom_programmer_init(&prog, image->programmer, NULL); +- r |= flashrom_flash_probe(&flashctx, prog, NULL); +- if (r) { +- r = -1; +- goto err_cleanup; +- } +- +- len = flashrom_flash_getsize(flashctx); +- if (len == 0) { +- fprintf(stderr, "zero sized flash detected\n"); +- r = -1; +- goto err_cleanup; +- } +- if (region) { +- r = flashrom_layout_read_fmap_from_buffer( +- &layout, flashctx, (const uint8_t *)image->data, image->size); +- if (r > 0) { +- r = flashrom_layout_read_fmap_from_rom(&layout, flashctx, 0, len); +- if (r > 0) { +- fprintf(stderr, "could not read fmap from image or rom, r=%d\n", +- r); +- r = -1; +- goto err_cleanup; +- } +- } +- /* empty region causes seg fault in API. */ +- r |= flashrom_layout_include_region(layout, region); +- if (r > 0) { +- fprintf(stderr, "could not include region = '%s'\n", region); +- r = -1; +- goto err_cleanup; +- } +- flashrom_layout_set(flashctx, layout); +- +- unsigned int r_start, r_len; +- flashrom_layout_get_region_range(layout, region, &r_start, &r_len); +- assert(r_len == image->size); +- buf = resize_buf_from_offset(image->data, len, r_start, r_len); +- if (!buf) { +- r = -1; +- goto err_cleanup_free; +- } +- } else if (image->size != len) { +- r = -1; +- goto err_cleanup; +- } +- +- flashrom_flag_set(flashctx, FLASHROM_FLAG_VERIFY_WHOLE_CHIP, false); +- flashrom_flag_set(flashctx, FLASHROM_FLAG_VERIFY_AFTER_WRITE, true); +- +- r |= flashrom_image_write(flashctx, buf, len, NULL); +- +-err_cleanup_free: +- if (region) +- free(buf); +-err_cleanup: +- flashrom_programmer_shutdown(prog); +- if (layout) +- flashrom_layout_release(layout); +- if (flashctx) +- flashrom_flash_release(flashctx); +- +- return r; +-} +diff --git a/util/cbfstool/uflashrom.h b/util/cbfstool/uflashrom.h +deleted file mode 100644 +index 1ef0085dd9..0000000000 +--- a/util/cbfstool/uflashrom.h ++++ /dev/null +@@ -1,17 +0,0 @@ +-/* SPDX-License-Identifier: BSD-3-Clause */ +- +-#ifndef UFLASHROM_H +-#define UFLASHROM_H +- +-#define FLASHROM_PROGRAMMER_INTERNAL_AP "internal" +- +-struct firmware_programmer { +- const char *programmer; +- uint32_t size; +- uint8_t *data; +-}; +- +-int flashrom_read(struct firmware_programmer *image, const char *region); +-int flashrom_write(struct firmware_programmer *image, const char *region); +- +-#endif /* UFLASHROM_H */ +-- +2.39.2 +