Hello Aaron Durbin,
I'd like you to do a code review. Please visit
https://review.coreboot.org/c/coreboot/+/38420
to review the following change.
Change subject: commonlib: Add commonlib/bsd ......................................................................
commonlib: Add commonlib/bsd
This patch creates a new commonlib/bsd subdirectory with a similar purpose to the existing commonlib, with the difference that all files under this subdirectory shall be licensed under the BSD-3-Clause license (or compatible permissive license). The goal is to allow more code to be shared with libpayload in the future.
Initially, I'm going to move a few files there that have already been BSD-licensed in the existing commonlib. I am also exracting most contents of the often-needed <commonlib/helpers.h> as long as they have either been written by me (and are hereby relicensed) or have an existing equivalent in BSD-licensed libpayload code. I am also relicensing <commonlib/compression.h> (written by me).
Finally, I am extracting the cb_err error code definitions from <types.h> into a new BSD-licensed header so that future commonlib/bsd code can build upon a common set of error values. I am making the assumption here that the enum constants and the half-sentence fragments of documentation next to them by themselves do not meet the threshold of copyrightability.
Change-Id: I316cea70930f131e8e93d4218542ddb5ae4b63a2 Signed-off-by: Julius Werner jwerner@chromium.org --- M MAINTAINERS M Makefile.inc M src/arch/arm64/fit_payload.c M src/arch/riscv/boot.c M src/arch/riscv/fit_payload.c M src/commonlib/Makefile.inc A src/commonlib/bsd/include/commonlib/bsd/cb_err.h R src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h R src/commonlib/bsd/include/commonlib/bsd/compression.h A src/commonlib/bsd/include/commonlib/bsd/fmap_serialized.h A src/commonlib/bsd/include/commonlib/bsd/helpers.h R src/commonlib/bsd/lz4.c.inc R src/commonlib/bsd/lz4_wrapper.c M src/commonlib/include/commonlib/cbfs.h M src/commonlib/include/commonlib/compiler.h D src/commonlib/include/commonlib/fmap_serialized.h M src/commonlib/include/commonlib/helpers.h M src/include/fmap.h M src/include/types.h M src/lib/cbfs.c M src/lib/decompressor.c M src/lib/fit.c M src/lib/fit_payload.c M src/lib/fmap.c M src/lib/selfboot.c M src/mainboard/google/poppy/variants/nami/mainboard.c M util/cbfstool/Makefile.inc M util/cbfstool/cbfs-mkstage.c M util/cbfstool/compress.c M util/sconfig/Makefile.inc 30 files changed, 232 insertions(+), 325 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/20/38420/1
diff --git a/MAINTAINERS b/MAINTAINERS index 97ffaee..77769c0 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -490,7 +490,7 @@
CBFS F: src/include/cbfs.h -F: src/include/cbfs_serialized.h +F: src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h F: util/cbfstool/
CBMEM diff --git a/Makefile.inc b/Makefile.inc index 002d3e7..ae9dea4 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -394,7 +394,7 @@ COREBOOT_EXPORTS += COREBOOT_EXTRA_VERSION endif
-CPPFLAGS_common := -Isrc -Isrc/include -Isrc/commonlib/include -I$(obj) +CPPFLAGS_common := -Isrc -Isrc/include -Isrc/commonlib/include -Isrc/commonlib/bsd/include -I$(obj) VBOOT_SOURCE ?= 3rdparty/vboot CPPFLAGS_common += -I$(VBOOT_SOURCE)/firmware/include CPPFLAGS_common += -include $(src)/include/kconfig.h diff --git a/src/arch/arm64/fit_payload.c b/src/arch/arm64/fit_payload.c index 002df44..7009a3f 100644 --- a/src/arch/arm64/fit_payload.c +++ b/src/arch/arm64/fit_payload.c @@ -12,13 +12,12 @@ * GNU General Public License for more details. */
+#include <cbfs.h> +#include <commonlib/bsd/compression.h> #include <console/console.h> #include <bootmem.h> #include <program_loading.h> #include <string.h> -#include <commonlib/compression.h> -#include <commonlib/cbfs_serialized.h> -#include <commonlib/helpers.h> #include <lib.h> #include <fit.h> #include <endian.h> diff --git a/src/arch/riscv/boot.c b/src/arch/riscv/boot.c index aaaac48..f9f94a7 100644 --- a/src/arch/riscv/boot.c +++ b/src/arch/riscv/boot.c @@ -19,7 +19,7 @@ #include <arch/encoding.h> #include <arch/smp/smp.h> #include <mcall.h> -#include <commonlib/cbfs_serialized.h> +#include <cbfs.h> #include <console/console.h>
struct arch_prog_run_args { diff --git a/src/arch/riscv/fit_payload.c b/src/arch/riscv/fit_payload.c index 89263d3..63cda84 100644 --- a/src/arch/riscv/fit_payload.c +++ b/src/arch/riscv/fit_payload.c @@ -14,11 +14,11 @@ * GNU General Public License for more details. */
+#include <cbfs.h> +#include <commonlib/bsd/compression.h> #include <console/console.h> #include <bootmem.h> #include <program_loading.h> -#include <commonlib/compression.h> -#include <commonlib/cbfs_serialized.h> #include <lib.h> #include <fit.h> #include <endian.h> diff --git a/src/commonlib/Makefile.inc b/src/commonlib/Makefile.inc index b6e8913..5bd6cf9 100644 --- a/src/commonlib/Makefile.inc +++ b/src/commonlib/Makefile.inc @@ -30,11 +30,11 @@ smm-y += cbfs.c postcar-y += cbfs.c
-decompressor-y += lz4_wrapper.c -bootblock-y += lz4_wrapper.c -verstage-y += lz4_wrapper.c -romstage-y += lz4_wrapper.c -ramstage-y += lz4_wrapper.c -postcar-y += lz4_wrapper.c +decompressor-y += bsd/lz4_wrapper.c +bootblock-y += bsd/lz4_wrapper.c +verstage-y += bsd/lz4_wrapper.c +romstage-y += bsd/lz4_wrapper.c +ramstage-y += bsd/lz4_wrapper.c +postcar-y += bsd/lz4_wrapper.c
ramstage-y += sort.c diff --git a/src/commonlib/bsd/include/commonlib/bsd/cb_err.h b/src/commonlib/bsd/include/commonlib/bsd/cb_err.h new file mode 100644 index 0000000..ab419a7 --- /dev/null +++ b/src/commonlib/bsd/include/commonlib/bsd/cb_err.h @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-or-later */ + +#ifndef _COMMONLIB_BSD_CB_ERR_H_ +#define _COMMONLIB_BSD_CB_ERR_H_ + +#include <stdint.h> + +/** + * coreboot error codes + * + * Common error definitions that can be used for any function. All error values + * should be negative -- when useful, positive values can also be used to denote + * success. Allocate a new group or errors every 100 values. + */ +enum cb_err { + CB_SUCCESS = 0, /**< Call completed successfully */ + CB_ERR = -1, /**< Generic error code */ + CB_ERR_ARG = -2, /**< Invalid argument */ + + /* NVRAM/CMOS errors */ + CB_CMOS_OTABLE_DISABLED = -100, /**< Option table disabled */ + CB_CMOS_LAYOUT_NOT_FOUND = -101, /**< Layout file not found */ + CB_CMOS_OPTION_NOT_FOUND = -102, /**< Option string not found */ + CB_CMOS_ACCESS_ERROR = -103, /**< CMOS access error */ + CB_CMOS_CHECKSUM_INVALID = -104, /**< CMOS checksum is invalid */ + + /* Keyboard test failures */ + CB_KBD_CONTROLLER_FAILURE = -200, + CB_KBD_INTERFACE_FAILURE = -201, + + /* I2C controller failures */ + CB_I2C_NO_DEVICE = -300, /**< Device is not responding */ + CB_I2C_BUSY = -301, /**< Device tells it's busy */ + CB_I2C_PROTOCOL_ERROR = -302, /**< Data lost or spurious slave + device response, try again? */ + CB_I2C_TIMEOUT = -303, /**< Transmission timed out */ +}; + +/* Don't typedef the enum directly, so the size is unambiguous for serialization. */ +typedef int32_t cb_err_t; + +#endif /* _COMMONLIB_BSD_CB_ERR_H_ */ diff --git a/src/commonlib/include/commonlib/cbfs_serialized.h b/src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h similarity index 67% rename from src/commonlib/include/commonlib/cbfs_serialized.h rename to src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h index d3a18c6..d2fc626 100644 --- a/src/commonlib/include/commonlib/cbfs_serialized.h +++ b/src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h @@ -1,48 +1,4 @@ -/* - * This file is part of the coreboot project. - * - * Copyright (C) 2008 Jordan Crouse jordan@cosmicpenguin.net - * Copyright (C) 2012 Google, Inc. - * Copyright (C) 2013 The Chromium OS Authors. All rights reserved. - * - * This file is dual-licensed. You can choose between: - * - The GNU GPL, version 2, as published by the Free Software Foundation - * - The revised BSD license (without advertising clause) - * - * --------------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * --------------------------------------------------------------------------- - * 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. - * --------------------------------------------------------------------------- - */ +/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-only */
#ifndef _CBFS_SERIALIZED_H_ #define _CBFS_SERIALIZED_H_ diff --git a/src/commonlib/include/commonlib/compression.h b/src/commonlib/bsd/include/commonlib/bsd/compression.h similarity index 62% rename from src/commonlib/include/commonlib/compression.h rename to src/commonlib/bsd/include/commonlib/bsd/compression.h index 3988ef8..873e7e4 100644 --- a/src/commonlib/include/commonlib/compression.h +++ b/src/commonlib/bsd/include/commonlib/bsd/compression.h @@ -1,15 +1,4 @@ -/* - * This file is part of the coreboot project. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ +/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-only */
#ifndef _COMMONLIB_COMPRESSION_H_ #define _COMMONLIB_COMPRESSION_H_ diff --git a/src/commonlib/bsd/include/commonlib/bsd/fmap_serialized.h b/src/commonlib/bsd/include/commonlib/bsd/fmap_serialized.h new file mode 100644 index 0000000..3d328c4 --- /dev/null +++ b/src/commonlib/bsd/include/commonlib/bsd/fmap_serialized.h @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-only */ + +#ifndef FLASHMAP_SERIALIZED_H__ +#define FLASHMAP_SERIALIZED_H__ + +#include <stdint.h> + +#define FMAP_SIGNATURE "__FMAP__" +#define FMAP_VER_MAJOR 1 /* this header's FMAP minor version */ +#define FMAP_VER_MINOR 1 /* this header's FMAP minor version */ +#define FMAP_STRLEN 32 /* maximum length for strings, */ + /* including null-terminator */ + +enum fmap_flags { + FMAP_AREA_STATIC = 1 << 0, + FMAP_AREA_COMPRESSED = 1 << 1, + FMAP_AREA_RO = 1 << 2, + FMAP_AREA_PRESERVE = 1 << 3, +}; + +/* Mapping of volatile and static regions in firmware binary */ +struct fmap_area { + uint32_t offset; /* offset relative to base */ + uint32_t size; /* size in bytes */ + uint8_t name[FMAP_STRLEN]; /* descriptive name */ + uint16_t flags; /* flags for this area */ +} __packed; + +struct fmap { + uint8_t signature[8]; /* "__FMAP__" (0x5F5F464D41505F5F) */ + uint8_t ver_major; /* major version */ + uint8_t ver_minor; /* minor version */ + uint64_t base; /* address of the firmware binary */ + uint32_t size; /* size of firmware binary in bytes */ + uint8_t name[FMAP_STRLEN]; /* name of this firmware binary */ + uint16_t nareas; /* number of areas described by + fmap_areas[] below */ + struct fmap_area areas[]; +} __packed; + +#endif /* FLASHMAP_SERIALIZED_H__ */ diff --git a/src/commonlib/bsd/include/commonlib/bsd/helpers.h b/src/commonlib/bsd/include/commonlib/bsd/helpers.h new file mode 100644 index 0000000..d432565 --- /dev/null +++ b/src/commonlib/bsd/include/commonlib/bsd/helpers.h @@ -0,0 +1,103 @@ +/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-only */ + +#ifndef COMMONLIB_BSD_HELPERS_H +#define COMMONLIB_BSD_HELPERS_H + +#ifndef __ASSEMBLER__ +#include <stddef.h> +#endif + +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) +#endif + +#define ALIGN(x, a) __ALIGN_MASK(x, (__typeof__(x))(a)-1UL) +#define __ALIGN_MASK(x, mask) (((x)+(mask))&~(mask)) +#define ALIGN_UP(x, a) ALIGN((x), (a)) +#define ALIGN_DOWN(x, a) ((x) & ~((__typeof__(x))(a)-1UL)) +#define IS_ALIGNED(x, a) (((x) & ((__typeof__(x))(a)-1UL)) == 0) + +/* This evaluates to the type of the first expression, unless that is constant + in which case it evalutates to the type of the second. This is useful when + assigning macro parameters to temporary variables, because that would + normally circumvent the special loosened type promotion rules for integer + literals. By using this macro, the promotion can happen at the time the + literal is assigned to the temporary variable. If the literal doesn't fit in + the chosen type, -Werror=overflow will catch it, so this should be safe. */ +#define __TYPEOF_UNLESS_CONST(expr, fallback_expr) __typeof__( \ + __builtin_choose_expr(__builtin_constant_p(expr), fallback_expr, expr)) + +/* This creates a unique local variable name for use in macros. */ +#define __TMPNAME_3(i) __tmpname_##i +#define __TMPNAME_2(i) __TMPNAME_3(i) +#define __TMPNAME __TMPNAME_2(__COUNTER__) + +/* Double-evaluation unsafe min/max, for bitfields and outside of functions */ +#define __CMP_UNSAFE(a, b, op) ((a) op (b) ? (a) : (b)) +#define MIN_UNSAFE(a, b) __CMP_UNSAFE(a, b, <) +#define MAX_UNSAFE(a, b) __CMP_UNSAFE(a, b, >) + +#define __CMP_SAFE(a, b, op, var_a, var_b) ({ \ + __TYPEOF_UNLESS_CONST(a, b) var_a = (a); \ + __TYPEOF_UNLESS_CONST(b, a) var_b = (b); \ + var_a op var_b ? var_a : var_b; \ +}) + +#define __CMP(a, b, op) __builtin_choose_expr( \ + __builtin_constant_p(a) && __builtin_constant_p(b), \ + __CMP_UNSAFE(a, b, op), __CMP_SAFE(a, b, op, __TMPNAME, __TMPNAME)) + +#ifndef MIN +#define MIN(a, b) __CMP(a, b, <) +#endif +#ifndef MAX +#define MAX(a, b) __CMP(a, b, >) +#endif + +#ifndef ABS +#define ABS(a) ({ \ + __typeof__(a) _abs_local_a = (a); \ + (_abs_local_a < 0) ? (-_abs_local_a) : _abs_local_a; \ +}) +#endif + +#define IS_POWER_OF_2(x) ({ \ + __typeof__(x) _power_local_x = (x); \ + (_power_local_x & (_power_local_x - 1)) == 0; \ +}) + +#define DIV_ROUND_UP(x, y) ({ \ + __typeof__(x) _div_local_x = (x); \ + __typeof__(y) _div_local_y = (y); \ + (_div_local_x + _div_local_y - 1) / _div_local_y; \ +}) + +#define SWAP(a, b) do { \ + __typeof__(&(a)) _swap_local_a = &(a); \ + __typeof__(&(b)) _swap_local_b = &(b); \ + __typeof__(a) _swap_local_tmp = *_swap_local_a; \ + *_swap_local_a = *_swap_local_b; \ + *_swap_local_b = _swap_local_tmp; \ +} while (0) + +/* Standard units. */ +#define KiB (1<<10) +#define MiB (1<<20) +#define GiB (1<<30) + +#define KHz (1000) +#define MHz (1000 * KHz) +#define GHz (1000 * MHz) + +#ifndef offsetof +#define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) +#endif + +#define check_member(structure, member, offset) _Static_assert( \ + offsetof(struct structure, member) == offset, \ + "`struct " #structure "` offset for `" #member "` is not " #offset) + +/* Calculate size of structure member. */ +#define member_size(type, member) (sizeof(((type *)0)->member)) + +#endif /* COMMONLIB_BSD_HELPERS_H */ diff --git a/src/commonlib/lz4.c.inc b/src/commonlib/bsd/lz4.c.inc similarity index 100% rename from src/commonlib/lz4.c.inc rename to src/commonlib/bsd/lz4.c.inc diff --git a/src/commonlib/lz4_wrapper.c b/src/commonlib/bsd/lz4_wrapper.c similarity index 70% rename from src/commonlib/lz4_wrapper.c rename to src/commonlib/bsd/lz4_wrapper.c index 474df64..2367afc 100644 --- a/src/commonlib/lz4_wrapper.c +++ b/src/commonlib/bsd/lz4_wrapper.c @@ -1,37 +1,8 @@ -/* - * Copyright 2015-2016 Google Inc. - * - * 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. - * - * Alternatively, this software may be distributed under the terms of the - * GNU General Public License ("GPL") version 2 as published by the Free - * Software Foundation. - * - * 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. - */ +/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-only */
-#include <commonlib/compression.h> -#include <commonlib/endian.h> -#include <commonlib/helpers.h> +#include <commonlib/bsd/compression.h> +#include <commonlib/bsd/helpers.h> +#include <endian.h> #include <stdint.h> #include <string.h>
@@ -41,7 +12,7 @@ * access support), we can easily write the ones we need ourselves. */ static uint16_t LZ4_readLE16(const void *src) { - return read_le16(src); + return le16toh(*(const uint16_t *)src); } static void LZ4_copy8(void *dst, const void *src) { @@ -143,7 +114,7 @@ return 0; /* input overrun */
/* We assume there's always only a single, standard frame. */ - if (read_le32(&h->magic) != LZ4F_MAGICNUMBER || h->version != 1) + if (le32toh(h->magic) != LZ4F_MAGICNUMBER || h->version != 1) return 0; /* unknown format */ if (h->reserved0 || h->reserved1 || h->reserved2) return 0; /* reserved must be zero */ @@ -158,7 +129,9 @@ }
while (1) { - struct lz4_block_header b = { { .raw = read_le32(in) } }; + struct lz4_block_header b = { + { .raw = le32toh(*(const uint32_t *)in) } + }; in += sizeof(struct lz4_block_header);
if ((size_t)(in - src) + b.size > srcn) diff --git a/src/commonlib/include/commonlib/cbfs.h b/src/commonlib/include/commonlib/cbfs.h index b0aa9d3..4701730 100644 --- a/src/commonlib/include/commonlib/cbfs.h +++ b/src/commonlib/include/commonlib/cbfs.h @@ -14,7 +14,7 @@ #ifndef _COMMONLIB_CBFS_H_ #define _COMMONLIB_CBFS_H_
-#include <commonlib/cbfs_serialized.h> +#include <commonlib/bsd/cbfs_serialized.h> #include <commonlib/region.h> #include <vb2_api.h>
diff --git a/src/commonlib/include/commonlib/compiler.h b/src/commonlib/include/commonlib/compiler.h index 972a229..4017173 100644 --- a/src/commonlib/include/commonlib/compiler.h +++ b/src/commonlib/include/commonlib/compiler.h @@ -46,19 +46,4 @@ #define __always_inline inline __attribute__((always_inline)) #endif
-/* This evaluates to the type of the first expression, unless that is constant - in which case it evalutates to the type of the second. This is useful when - assigning macro parameters to temporary variables, because that would - normally circumvent the special loosened type promotion rules for integer - literals. By using this macro, the promotion can happen at the time the - literal is assigned to the temporary variable. If the literal doesn't fit in - the chosen type, -Werror=overflow will catch it, so this should be safe. */ -#define __TYPEOF_UNLESS_CONST(expr, fallback_expr) __typeof__( \ - __builtin_choose_expr(__builtin_constant_p(expr), fallback_expr, expr)) - -/* This creates a unique local variable name for use in macros. */ -#define __TMPNAME_3(i) __tmpname_##i -#define __TMPNAME_2(i) __TMPNAME_3(i) -#define __TMPNAME __TMPNAME_2(__COUNTER__) - #endif diff --git a/src/commonlib/include/commonlib/fmap_serialized.h b/src/commonlib/include/commonlib/fmap_serialized.h deleted file mode 100644 index 53a09af..0000000 --- a/src/commonlib/include/commonlib/fmap_serialized.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2010, Google Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. 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 COPYRIGHT HOLDERS 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 COPYRIGHT - * OWNER 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. - * - * Alternatively, this software may be distributed under the terms of the - * GNU General Public License ("GPL") version 2 as published by the Free - * Software Foundation. - */ - -#ifndef FLASHMAP_SERIALIZED_H__ -#define FLASHMAP_SERIALIZED_H__ - -#include <stdint.h> - -#define FMAP_SIGNATURE "__FMAP__" -#define FMAP_VER_MAJOR 1 /* this header's FMAP minor version */ -#define FMAP_VER_MINOR 1 /* this header's FMAP minor version */ -#define FMAP_STRLEN 32 /* maximum length for strings, */ - /* including null-terminator */ - -enum fmap_flags { - FMAP_AREA_STATIC = 1 << 0, - FMAP_AREA_COMPRESSED = 1 << 1, - FMAP_AREA_RO = 1 << 2, - FMAP_AREA_PRESERVE = 1 << 3, -}; - -/* Mapping of volatile and static regions in firmware binary */ -struct fmap_area { - uint32_t offset; /* offset relative to base */ - uint32_t size; /* size in bytes */ - uint8_t name[FMAP_STRLEN]; /* descriptive name */ - uint16_t flags; /* flags for this area */ -} __packed; - -struct fmap { - uint8_t signature[8]; /* "__FMAP__" (0x5F5F464D41505F5F) */ - uint8_t ver_major; /* major version */ - uint8_t ver_minor; /* minor version */ - uint64_t base; /* address of the firmware binary */ - uint32_t size; /* size of firmware binary in bytes */ - uint8_t name[FMAP_STRLEN]; /* name of this firmware binary */ - uint16_t nareas; /* number of areas described by - fmap_areas[] below */ - struct fmap_area areas[]; -} __packed; - -#endif /* FLASHMAP_SERIALIZED_H__ */ diff --git a/src/commonlib/include/commonlib/helpers.h b/src/commonlib/include/commonlib/helpers.h index f07b6c2..08f9ed5 100644 --- a/src/commonlib/include/commonlib/helpers.h +++ b/src/commonlib/include/commonlib/helpers.h @@ -13,72 +13,16 @@
#ifndef COMMONLIB_HELPERS_H #define COMMONLIB_HELPERS_H -/* This file is for helpers for both coreboot firmware and its utilities. */
+/* This file is for helpers for both coreboot firmware and its utilities. Most + of this has moved into <commonlib/bsd/helpers.h> now, this wrapper is just + for the stuff that nobody bothered to confirm BSD-licensability of yet. */ + +#include <commonlib/bsd/helpers.h> #ifndef __ASSEMBLER__ #include <commonlib/compiler.h> -#include <stddef.h> #endif
-#ifndef ARRAY_SIZE -#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) -#endif - -#define ALIGN(x, a) __ALIGN_MASK(x, (__typeof__(x))(a)-1UL) -#define __ALIGN_MASK(x, mask) (((x)+(mask))&~(mask)) -#define ALIGN_UP(x, a) ALIGN((x), (a)) -#define ALIGN_DOWN(x, a) ((x) & ~((__typeof__(x))(a)-1UL)) -#define IS_ALIGNED(x, a) (((x) & ((__typeof__(x))(a)-1UL)) == 0) - -/* Double-evaluation unsafe min/max, for bitfields and outside of functions */ -#define __CMP_UNSAFE(a, b, op) ((a) op (b) ? (a) : (b)) -#define MIN_UNSAFE(a, b) __CMP_UNSAFE(a, b, <) -#define MAX_UNSAFE(a, b) __CMP_UNSAFE(a, b, >) - -#define __CMP_SAFE(a, b, op, var_a, var_b) ({ \ - __TYPEOF_UNLESS_CONST(a, b) var_a = (a); \ - __TYPEOF_UNLESS_CONST(b, a) var_b = (b); \ - var_a op var_b ? var_a : var_b; \ -}) - - -#define __CMP(a, b, op) __builtin_choose_expr( \ - __builtin_constant_p(a) && __builtin_constant_p(b), \ - __CMP_UNSAFE(a, b, op), __CMP_SAFE(a, b, op, __TMPNAME, __TMPNAME)) - -#ifndef MIN -#define MIN(a, b) __CMP(a, b, <) -#endif -#ifndef MAX -#define MAX(a, b) __CMP(a, b, >) -#endif - -#ifndef ABS -#define ABS(a) ({ \ - __typeof__(a) _abs_local_a = (a); \ - (_abs_local_a < 0) ? (-_abs_local_a) : _abs_local_a; \ -}) -#endif - -#define IS_POWER_OF_2(x) ({ \ - __typeof__(x) _power_local_x = (x); \ - (_power_local_x & (_power_local_x - 1)) == 0; \ -}) - -#define DIV_ROUND_UP(x, y) ({ \ - __typeof__(x) _div_local_x = (x); \ - __typeof__(y) _div_local_y = (y); \ - (_div_local_x + _div_local_y - 1) / _div_local_y; \ -}) - -#define SWAP(a, b) do { \ - __typeof__(&(a)) _swap_local_a = &(a); \ - __typeof__(&(b)) _swap_local_b = &(b); \ - __typeof__(a) _swap_local_tmp = *_swap_local_a; \ - *_swap_local_a = *_swap_local_b; \ - *_swap_local_b = _swap_local_tmp; \ -} while (0) - /* * Divide positive or negative dividend by positive divisor and round * to closest integer. Result is undefined for negative divisors and @@ -93,25 +37,6 @@ ((_div_local_x - (_div_local_d / 2)) / _div_local_d); \ })
-/* Standard units. */ -#define KiB (1<<10) -#define MiB (1<<20) -#define GiB (1<<30) -/* Could we ever run into this one? I hope we get this much memory! */ -#define TiB (1<<40) - -#define KHz (1000) -#define MHz (1000 * KHz) -#define GHz (1000 * MHz) - -#ifndef offsetof -#define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) -#endif - -#define check_member(structure, member, offset) _Static_assert( \ - offsetof(struct structure, member) == offset, \ - "`struct " #structure "` offset for `" #member "` is not " #offset) - /** * container_of - cast a member of a structure out to the containing structure * @param ptr: the pointer to the member. @@ -123,9 +48,6 @@ const __typeof__(((type *)0)->member) *__mptr = (ptr); \ (type *)((char *)__mptr - offsetof(type, member)); })
-/* Calculate size of structure member. */ -#define member_size(type, member) (sizeof(((type *)0)->member)) - #ifndef __unused #define __unused __attribute__((unused)) #endif diff --git a/src/include/fmap.h b/src/include/fmap.h index 649ecc0..9c974ce 100644 --- a/src/include/fmap.h +++ b/src/include/fmap.h @@ -16,8 +16,8 @@ #ifndef _FMAP_H_ #define _FMAP_H_
+#include <commonlib/bsd/fmap_serialized.h> #include <commonlib/region.h> -#include <commonlib/fmap_serialized.h>
/* Locate the named area in the fmap and fill in a region device representing * that area. The region is a sub-region of the readonly boot media. Return diff --git a/src/include/types.h b/src/include/types.h index 30f243f..ffb14c9 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -17,6 +17,7 @@ #define __TYPES_H
/* types.h is supposed to provide the standard headers defined in here: */ +#include <commonlib/bsd/cb_err.h> #include <stdbool.h> #include <stdint.h> #include <stddef.h> @@ -30,36 +31,4 @@ #define BIT(x) (1ul << (x)) #endif
-/** - * coreboot error codes - * - * When building functions that return a status or an error code, use cb_err as - * the return type. When failure reason needs to be communicated by the return - * value, define a it here. Start new enum groups with values in decrements of - * 100. - */ -enum cb_err { - CB_SUCCESS = 0, /**< Call completed successfully */ - CB_ERR = -1, /**< Generic error code */ - CB_ERR_ARG = -2, /**< Invalid argument */ - - /* NVRAM/CMOS errors */ - CB_CMOS_OTABLE_DISABLED = -100, /**< Option table disabled */ - CB_CMOS_LAYOUT_NOT_FOUND = -101, /**< Layout file not found */ - CB_CMOS_OPTION_NOT_FOUND = -102, /**< Option string not found */ - CB_CMOS_ACCESS_ERROR = -103, /**< CMOS access error */ - CB_CMOS_CHECKSUM_INVALID = -104, /**< CMOS checksum is invalid */ - - /* Keyboard test failures */ - CB_KBD_CONTROLLER_FAILURE = -200, - CB_KBD_INTERFACE_FAILURE = -201, - - /* I2C controller failures */ - CB_I2C_NO_DEVICE = -300, /**< Device is not responding */ - CB_I2C_BUSY = -301, /**< Device tells it's busy */ - CB_I2C_PROTOCOL_ERROR = -302, /**< Data lost or spurious slave - device response, try again? */ - CB_I2C_TIMEOUT = -303, /**< Transmission timed out */ -}; - #endif /* __TYPES_H */ diff --git a/src/lib/cbfs.c b/src/lib/cbfs.c index e31c7cc..c712f76 100644 --- a/src/lib/cbfs.c +++ b/src/lib/cbfs.c @@ -20,7 +20,7 @@ #include <stdlib.h> #include <boot_device.h> #include <cbfs.h> -#include <commonlib/compression.h> +#include <commonlib/bsd/compression.h> #include <endian.h> #include <lib.h> #include <symbols.h> diff --git a/src/lib/decompressor.c b/src/lib/decompressor.c index eb7f16c..9471059 100644 --- a/src/lib/decompressor.c +++ b/src/lib/decompressor.c @@ -15,7 +15,7 @@ */
#include <bootblock_common.h> -#include <commonlib/compression.h> +#include <commonlib/bsd/compression.h> #include <delay.h> #include <program_loading.h> #include <symbols.h> diff --git a/src/lib/fit.c b/src/lib/fit.c index 831e518..edac192 100644 --- a/src/lib/fit.c +++ b/src/lib/fit.c @@ -16,6 +16,7 @@ */
#include <assert.h> +#include <cbfs.h> #include <console/console.h> #include <ctype.h> #include <endian.h> @@ -27,7 +28,6 @@ #include <memrange.h> #include <fit.h> #include <boardid.h> -#include <commonlib/cbfs_serialized.h> #include <commonlib/stdlib.h>
static struct list_node image_nodes; diff --git a/src/lib/fit_payload.c b/src/lib/fit_payload.c index 1b6c986..83e9b8e 100644 --- a/src/lib/fit_payload.c +++ b/src/lib/fit_payload.c @@ -15,6 +15,8 @@ * GNU General Public License for more details. */
+#include <cbfs.h> +#include <commonlib/bsd/compression.h> #include <console/console.h> #include <bootmem.h> #include <cbmem.h> @@ -25,8 +27,6 @@ #include <program_loading.h> #include <timestamp.h> #include <string.h> -#include <commonlib/cbfs_serialized.h> -#include <commonlib/compression.h> #include <lib.h> #include <fit_payload.h> #include <boardid.h> diff --git a/src/lib/fmap.c b/src/lib/fmap.c index 9d2b4e7..c8843a7 100644 --- a/src/lib/fmap.c +++ b/src/lib/fmap.c @@ -17,7 +17,6 @@ #include <cbmem.h> #include <console/console.h> #include <fmap.h> -#include <commonlib/fmap_serialized.h> #include <stddef.h> #include <string.h> #include <symbols.h> diff --git a/src/lib/selfboot.c b/src/lib/selfboot.c index 8cf7a6f..11fdff3 100644 --- a/src/lib/selfboot.c +++ b/src/lib/selfboot.c @@ -15,7 +15,7 @@ * GNU General Public License for more details. */
-#include <commonlib/compression.h> +#include <commonlib/bsd/compression.h> #include <commonlib/endian.h> #include <console/console.h> #include <stdint.h> diff --git a/src/mainboard/google/poppy/variants/nami/mainboard.c b/src/mainboard/google/poppy/variants/nami/mainboard.c index e3855bd..6d54e17 100644 --- a/src/mainboard/google/poppy/variants/nami/mainboard.c +++ b/src/mainboard/google/poppy/variants/nami/mainboard.c @@ -18,7 +18,6 @@ #include <baseboard/variants.h> #include <cbfs.h> #include <chip.h> -#include <commonlib/cbfs_serialized.h> #include <console/console.h> #include <device/device.h> #include <drivers/intel/gma/opregion.h> diff --git a/util/cbfstool/Makefile.inc b/util/cbfstool/Makefile.inc index 066ef34..bb292a8 100644 --- a/util/cbfstool/Makefile.inc +++ b/util/cbfstool/Makefile.inc @@ -113,7 +113,7 @@ TOOLCPPFLAGS += -I$(top)/util/cbfstool/flashmap TOOLCPPFLAGS += -I$(top)/util/cbfstool TOOLCPPFLAGS += -I$(objutil)/cbfstool -TOOLCPPFLAGS += -I$(top)/src/commonlib/include +TOOLCPPFLAGS += -I$(top)/src/commonlib/include -I$(top)/src/commonlib/bsd/include TOOLCPPFLAGS += -include $(top)/src/commonlib/include/commonlib/compiler.h TOOLCPPFLAGS += -I$(VBOOT_SOURCE)/firmware/include TOOLCPPFLAGS += -I$(VBOOT_SOURCE)/firmware/2lib/include @@ -163,6 +163,10 @@ printf " HOSTCC $(subst $(objutil)/,,$(@))\n" $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
+$(objutil)/cbfstool/%.o: $(top)/src/commonlib/bsd/%.c + printf " HOSTCC $(subst $(objutil)/,,$(@))\n" + $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< + $(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lz4/lib/%.c printf " HOSTCC $(subst $(objutil)/,,$(@))\n" $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< diff --git a/util/cbfstool/cbfs-mkstage.c b/util/cbfstool/cbfs-mkstage.c index 6071437..be920b4 100644 --- a/util/cbfstool/cbfs-mkstage.c +++ b/util/cbfstool/cbfs-mkstage.c @@ -26,7 +26,7 @@ #include "cbfs.h" #include "rmodule.h"
-#include <commonlib/compression.h> +#include <commonlib/bsd/compression.h>
/* Checks if program segment contains the ignored section */ static int is_phdr_ignored(Elf64_Phdr *phdr, Elf64_Shdr *shdr) diff --git a/util/cbfstool/compress.c b/util/cbfstool/compress.c index a6a0df4..9938094 100644 --- a/util/cbfstool/compress.c +++ b/util/cbfstool/compress.c @@ -23,7 +23,7 @@ #include <stdlib.h> #include "common.h" #include "lz4/lib/lz4frame.h" -#include <commonlib/compression.h> +#include <commonlib/bsd/compression.h>
static int lz4_compress(char *in, int in_len, char *out, int *out_len) { diff --git a/util/sconfig/Makefile.inc b/util/sconfig/Makefile.inc index c47b439..b821f06 100644 --- a/util/sconfig/Makefile.inc +++ b/util/sconfig/Makefile.inc @@ -4,7 +4,7 @@ sconfigobj += main.o
SCONFIGFLAGS += -I$(top)/util/sconfig -I$(objutil)/sconfig -SCONFIGFLAGS += -I$(top)/src/commonlib/include +SCONFIGFLAGS += -I$(top)/src/commonlib/include -I$(top)/src/commonlib/bsd/include
$(objutil)/sconfig: mkdir -p $@
build bot (Jenkins) has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
Patch Set 1:
(1 comment)
https://review.coreboot.org/c/coreboot/+/38420/1/src/commonlib/bsd/include/c... File src/commonlib/bsd/include/commonlib/bsd/helpers.h:
https://review.coreboot.org/c/coreboot/+/38420/1/src/commonlib/bsd/include/c... PS1, Line 36: #define __CMP_UNSAFE(a, b, op) ((a) op (b) ? (a) : (b)) space prohibited between function name and open parenthesis '('
Paul Menzel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
Patch Set 1: Code-Review+1
Hello Aaron Durbin, ron minnich, Paul Menzel, build bot (Jenkins), Philipp Hug, Patrick Georgi, Martin Roth,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/38420
to look at the new patch set (#2).
Change subject: commonlib: Add commonlib/bsd ......................................................................
commonlib: Add commonlib/bsd
This patch creates a new commonlib/bsd subdirectory with a similar purpose to the existing commonlib, with the difference that all files under this subdirectory shall be licensed under the BSD-3-Clause license (or compatible permissive license). The goal is to allow more code to be shared with libpayload in the future.
Initially, I'm going to move a few files there that have already been BSD-licensed in the existing commonlib. I am also exracting most contents of the often-needed <commonlib/helpers.h> as long as they have either been written by me (and are hereby relicensed) or have an existing equivalent in BSD-licensed libpayload code. I am also relicensing <commonlib/compression.h> (written by me).
Finally, I am extracting the cb_err error code definitions from <types.h> into a new BSD-licensed header so that future commonlib/bsd code can build upon a common set of error values. I am making the assumption here that the enum constants and the half-sentence fragments of documentation next to them by themselves do not meet the threshold of copyrightability.
Change-Id: I316cea70930f131e8e93d4218542ddb5ae4b63a2 Signed-off-by: Julius Werner jwerner@chromium.org --- M MAINTAINERS M Makefile.inc M src/arch/arm64/fit_payload.c M src/arch/riscv/boot.c M src/arch/riscv/fit_payload.c M src/commonlib/Makefile.inc A src/commonlib/bsd/include/commonlib/bsd/cb_err.h R src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h R src/commonlib/bsd/include/commonlib/bsd/compression.h A src/commonlib/bsd/include/commonlib/bsd/fmap_serialized.h A src/commonlib/bsd/include/commonlib/bsd/helpers.h R src/commonlib/bsd/lz4.c.inc R src/commonlib/bsd/lz4_wrapper.c M src/commonlib/include/commonlib/cbfs.h M src/commonlib/include/commonlib/compiler.h D src/commonlib/include/commonlib/fmap_serialized.h M src/commonlib/include/commonlib/helpers.h M src/include/fmap.h M src/include/types.h M src/lib/cbfs.c M src/lib/decompressor.c M src/lib/fit.c M src/lib/fit_payload.c M src/lib/fmap.c M src/lib/selfboot.c M src/mainboard/google/poppy/variants/nami/mainboard.c M util/cbfstool/Makefile.inc M util/cbfstool/cbfs-mkstage.c M util/cbfstool/compress.c M util/cbmem/Makefile M util/ifdtool/Makefile M util/inteltool/Makefile M util/intelvbttool/Makefile M util/sconfig/Makefile.inc 34 files changed, 237 insertions(+), 329 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/20/38420/2
build bot (Jenkins) has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
Patch Set 2:
(1 comment)
https://review.coreboot.org/c/coreboot/+/38420/2/src/commonlib/bsd/include/c... File src/commonlib/bsd/include/commonlib/bsd/helpers.h:
https://review.coreboot.org/c/coreboot/+/38420/2/src/commonlib/bsd/include/c... PS2, Line 36: #define __CMP_UNSAFE(a, b, op) ((a) op (b) ? (a) : (b)) space prohibited between function name and open parenthesis '('
Hello Aaron Durbin, ron minnich, Stefan Reinauer, Paul Menzel, build bot (Jenkins), Philipp Hug, Patrick Georgi, Martin Roth,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/38420
to look at the new patch set (#3).
Change subject: commonlib: Add commonlib/bsd ......................................................................
commonlib: Add commonlib/bsd
This patch creates a new commonlib/bsd subdirectory with a similar purpose to the existing commonlib, with the difference that all files under this subdirectory shall be licensed under the BSD-3-Clause license (or compatible permissive license). The goal is to allow more code to be shared with libpayload in the future.
Initially, I'm going to move a few files there that have already been BSD-licensed in the existing commonlib. I am also exracting most contents of the often-needed <commonlib/helpers.h> as long as they have either been written by me (and are hereby relicensed) or have an existing equivalent in BSD-licensed libpayload code. I am also relicensing <commonlib/compression.h> (written by me).
Finally, I am extracting the cb_err error code definitions from <types.h> into a new BSD-licensed header so that future commonlib/bsd code can build upon a common set of error values. I am making the assumption here that the enum constants and the half-sentence fragments of documentation next to them by themselves do not meet the threshold of copyrightability.
Change-Id: I316cea70930f131e8e93d4218542ddb5ae4b63a2 Signed-off-by: Julius Werner jwerner@chromium.org --- M MAINTAINERS M Makefile.inc M src/arch/arm64/fit_payload.c M src/arch/riscv/boot.c M src/arch/riscv/fit_payload.c M src/commonlib/Makefile.inc A src/commonlib/bsd/include/commonlib/bsd/cb_err.h R src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h R src/commonlib/bsd/include/commonlib/bsd/compression.h A src/commonlib/bsd/include/commonlib/bsd/fmap_serialized.h A src/commonlib/bsd/include/commonlib/bsd/helpers.h R src/commonlib/bsd/lz4.c.inc R src/commonlib/bsd/lz4_wrapper.c M src/commonlib/include/commonlib/cbfs.h M src/commonlib/include/commonlib/compiler.h D src/commonlib/include/commonlib/fmap_serialized.h M src/commonlib/include/commonlib/helpers.h M src/include/fmap.h M src/include/types.h M src/lib/cbfs.c M src/lib/decompressor.c M src/lib/fit.c M src/lib/fit_payload.c M src/lib/fmap.c M src/lib/selfboot.c M src/mainboard/google/poppy/variants/nami/mainboard.c M src/vendorcode/amd/pi/Makefile.inc M util/cbfstool/Makefile.inc M util/cbfstool/cbfs-mkstage.c M util/cbfstool/compress.c M util/cbmem/Makefile M util/ifdtool/Makefile M util/inteltool/Makefile M util/intelvbttool/Makefile M util/sconfig/Makefile.inc 35 files changed, 238 insertions(+), 329 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/20/38420/3
build bot (Jenkins) has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
Patch Set 3:
(1 comment)
https://review.coreboot.org/c/coreboot/+/38420/3/src/commonlib/bsd/include/c... File src/commonlib/bsd/include/commonlib/bsd/helpers.h:
https://review.coreboot.org/c/coreboot/+/38420/3/src/commonlib/bsd/include/c... PS3, Line 36: #define __CMP_UNSAFE(a, b, op) ((a) op (b) ? (a) : (b)) space prohibited between function name and open parenthesis '('
Aaron Durbin has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
Patch Set 3: Code-Review+1
(1 comment)
https://review.coreboot.org/c/coreboot/+/38420/3/src/commonlib/bsd/include/c... File src/commonlib/bsd/include/commonlib/bsd/fmap_serialized.h:
https://review.coreboot.org/c/coreboot/+/38420/3/src/commonlib/bsd/include/c... PS3, Line 27: __packed Shouldn't we #including commonlib/compiler.h for __packed definition?
Julius Werner has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
Patch Set 3:
(1 comment)
https://review.coreboot.org/c/coreboot/+/38420/3/src/commonlib/bsd/include/c... File src/commonlib/bsd/include/commonlib/bsd/fmap_serialized.h:
https://review.coreboot.org/c/coreboot/+/38420/3/src/commonlib/bsd/include/c... PS3, Line 27: __packed
Shouldn't we #including commonlib/compiler. […]
Oops, true. But I can't have #includes from commonlib/bsd back into commonlib. Let me pull the rest of compiler.h into commonlib/bsd as well.
Hello Aaron Durbin, ron minnich, Stefan Reinauer, Paul Menzel, build bot (Jenkins), Philipp Hug, Patrick Georgi, Martin Roth,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/38420
to look at the new patch set (#4).
Change subject: commonlib: Add commonlib/bsd ......................................................................
commonlib: Add commonlib/bsd
This patch creates a new commonlib/bsd subdirectory with a similar purpose to the existing commonlib, with the difference that all files under this subdirectory shall be licensed under the BSD-3-Clause license (or compatible permissive license). The goal is to allow more code to be shared with libpayload in the future.
Initially, I'm going to move a few files there that have already been BSD-licensed in the existing commonlib. I am also exracting most contents of the often-needed <commonlib/helpers.h> as long as they have either been written by me (and are hereby relicensed) or have an existing equivalent in BSD-licensed libpayload code. I am also relicensing <commonlib/compression.h> (written by me) and <commonlib/compiler.h> (same stuff exists in libpayload).
Finally, I am extracting the cb_err error code definitions from <types.h> into a new BSD-licensed header so that future commonlib/bsd code can build upon a common set of error values. I am making the assumption here that the enum constants and the half-sentence fragments of documentation next to them by themselves do not meet the threshold of copyrightability.
Change-Id: I316cea70930f131e8e93d4218542ddb5ae4b63a2 Signed-off-by: Julius Werner jwerner@chromium.org --- M MAINTAINERS M Makefile.inc M src/arch/arm64/fit_payload.c M src/arch/riscv/boot.c M src/arch/riscv/fit_payload.c M src/arch/riscv/sbi.c M src/arch/riscv/smp.c M src/commonlib/Makefile.inc A src/commonlib/bsd/include/commonlib/bsd/cb_err.h R src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h R src/commonlib/bsd/include/commonlib/bsd/compiler.h R src/commonlib/bsd/include/commonlib/bsd/compression.h A src/commonlib/bsd/include/commonlib/bsd/fmap_serialized.h A src/commonlib/bsd/include/commonlib/bsd/helpers.h R src/commonlib/bsd/lz4.c.inc R src/commonlib/bsd/lz4_wrapper.c M src/commonlib/include/commonlib/cbfs.h D src/commonlib/include/commonlib/fmap_serialized.h M src/commonlib/include/commonlib/helpers.h M src/include/fmap.h M src/include/types.h M src/lib/cbfs.c M src/lib/decompressor.c M src/lib/fit.c M src/lib/fit_payload.c M src/lib/fmap.c M src/lib/selfboot.c M src/mainboard/google/poppy/variants/nami/mainboard.c M src/soc/nvidia/tegra124/lp0/Makefile M src/soc/nvidia/tegra210/lp0/Makefile M src/vendorcode/amd/pi/00670F00/Makefile.inc M src/vendorcode/amd/pi/Makefile.inc M util/cbfstool/Makefile.inc M util/cbfstool/cbfs-mkstage.c M util/cbfstool/compress.c M util/cbmem/Makefile M util/ifdtool/Makefile M util/inteltool/Makefile M util/intelvbttool/Makefile M util/sconfig/Makefile.inc 40 files changed, 244 insertions(+), 350 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/20/38420/4
build bot (Jenkins) has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
Patch Set 4:
(1 comment)
https://review.coreboot.org/c/coreboot/+/38420/4/src/commonlib/bsd/include/c... File src/commonlib/bsd/include/commonlib/bsd/helpers.h:
https://review.coreboot.org/c/coreboot/+/38420/4/src/commonlib/bsd/include/c... PS4, Line 22: #define __CMP_UNSAFE(a, b, op) ((a) op (b) ? (a) : (b)) space prohibited between function name and open parenthesis '('
Patrick Rudolph has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
Patch Set 4: Code-Review+2
Julius Werner has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
Patch Set 4:
(1 comment)
https://review.coreboot.org/c/coreboot/+/38420/3/src/commonlib/bsd/include/c... File src/commonlib/bsd/include/commonlib/bsd/fmap_serialized.h:
https://review.coreboot.org/c/coreboot/+/38420/3/src/commonlib/bsd/include/c... PS3, Line 27: __packed
Oops, true. But I can't have #includes from commonlib/bsd back into commonlib. […]
Done
Julius Werner has submitted this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
commonlib: Add commonlib/bsd
This patch creates a new commonlib/bsd subdirectory with a similar purpose to the existing commonlib, with the difference that all files under this subdirectory shall be licensed under the BSD-3-Clause license (or compatible permissive license). The goal is to allow more code to be shared with libpayload in the future.
Initially, I'm going to move a few files there that have already been BSD-licensed in the existing commonlib. I am also exracting most contents of the often-needed <commonlib/helpers.h> as long as they have either been written by me (and are hereby relicensed) or have an existing equivalent in BSD-licensed libpayload code. I am also relicensing <commonlib/compression.h> (written by me) and <commonlib/compiler.h> (same stuff exists in libpayload).
Finally, I am extracting the cb_err error code definitions from <types.h> into a new BSD-licensed header so that future commonlib/bsd code can build upon a common set of error values. I am making the assumption here that the enum constants and the half-sentence fragments of documentation next to them by themselves do not meet the threshold of copyrightability.
Change-Id: I316cea70930f131e8e93d4218542ddb5ae4b63a2 Signed-off-by: Julius Werner jwerner@chromium.org Reviewed-on: https://review.coreboot.org/c/coreboot/+/38420 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Patrick Rudolph siro@das-labor.org --- M MAINTAINERS M Makefile.inc M src/arch/arm64/fit_payload.c M src/arch/riscv/boot.c M src/arch/riscv/fit_payload.c M src/arch/riscv/sbi.c M src/arch/riscv/smp.c M src/commonlib/Makefile.inc A src/commonlib/bsd/include/commonlib/bsd/cb_err.h R src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h R src/commonlib/bsd/include/commonlib/bsd/compiler.h R src/commonlib/bsd/include/commonlib/bsd/compression.h A src/commonlib/bsd/include/commonlib/bsd/fmap_serialized.h A src/commonlib/bsd/include/commonlib/bsd/helpers.h R src/commonlib/bsd/lz4.c.inc R src/commonlib/bsd/lz4_wrapper.c M src/commonlib/include/commonlib/cbfs.h D src/commonlib/include/commonlib/fmap_serialized.h M src/commonlib/include/commonlib/helpers.h M src/include/fmap.h M src/include/types.h M src/lib/cbfs.c M src/lib/decompressor.c M src/lib/fit.c M src/lib/fit_payload.c M src/lib/fmap.c M src/lib/selfboot.c M src/mainboard/google/poppy/variants/nami/mainboard.c M src/soc/nvidia/tegra124/lp0/Makefile M src/soc/nvidia/tegra210/lp0/Makefile M src/vendorcode/amd/pi/00670F00/Makefile.inc M src/vendorcode/amd/pi/Makefile.inc M util/cbfstool/Makefile.inc M util/cbfstool/cbfs-mkstage.c M util/cbfstool/compress.c M util/cbmem/Makefile M util/ifdtool/Makefile M util/inteltool/Makefile M util/intelvbttool/Makefile M util/sconfig/Makefile.inc 40 files changed, 244 insertions(+), 350 deletions(-)
Approvals: build bot (Jenkins): Verified Patrick Rudolph: Looks good to me, approved
diff --git a/MAINTAINERS b/MAINTAINERS index 97ffaee..77769c0 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -490,7 +490,7 @@
CBFS F: src/include/cbfs.h -F: src/include/cbfs_serialized.h +F: src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h F: util/cbfstool/
CBMEM diff --git a/Makefile.inc b/Makefile.inc index 002d3e7..e9c5054 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -394,12 +394,12 @@ COREBOOT_EXPORTS += COREBOOT_EXTRA_VERSION endif
-CPPFLAGS_common := -Isrc -Isrc/include -Isrc/commonlib/include -I$(obj) +CPPFLAGS_common := -Isrc -Isrc/include -Isrc/commonlib/include -Isrc/commonlib/bsd/include -I$(obj) VBOOT_SOURCE ?= 3rdparty/vboot CPPFLAGS_common += -I$(VBOOT_SOURCE)/firmware/include CPPFLAGS_common += -include $(src)/include/kconfig.h CPPFLAGS_common += -include $(src)/include/rules.h -CPPFLAGS_common += -include $(src)/commonlib/include/commonlib/compiler.h +CPPFLAGS_common += -include $(src)/commonlib/bsd/include/commonlib/bsd/compiler.h CPPFLAGS_common += -I3rdparty CPPFLAGS_common += -D__BUILD_DIR__="$(obj)"
diff --git a/src/arch/arm64/fit_payload.c b/src/arch/arm64/fit_payload.c index 002df44..7009a3f 100644 --- a/src/arch/arm64/fit_payload.c +++ b/src/arch/arm64/fit_payload.c @@ -12,13 +12,12 @@ * GNU General Public License for more details. */
+#include <cbfs.h> +#include <commonlib/bsd/compression.h> #include <console/console.h> #include <bootmem.h> #include <program_loading.h> #include <string.h> -#include <commonlib/compression.h> -#include <commonlib/cbfs_serialized.h> -#include <commonlib/helpers.h> #include <lib.h> #include <fit.h> #include <endian.h> diff --git a/src/arch/riscv/boot.c b/src/arch/riscv/boot.c index aaaac48..f9f94a7 100644 --- a/src/arch/riscv/boot.c +++ b/src/arch/riscv/boot.c @@ -19,7 +19,7 @@ #include <arch/encoding.h> #include <arch/smp/smp.h> #include <mcall.h> -#include <commonlib/cbfs_serialized.h> +#include <cbfs.h> #include <console/console.h>
struct arch_prog_run_args { diff --git a/src/arch/riscv/fit_payload.c b/src/arch/riscv/fit_payload.c index 89263d3..63cda84 100644 --- a/src/arch/riscv/fit_payload.c +++ b/src/arch/riscv/fit_payload.c @@ -14,11 +14,11 @@ * GNU General Public License for more details. */
+#include <cbfs.h> +#include <commonlib/bsd/compression.h> #include <console/console.h> #include <bootmem.h> #include <program_loading.h> -#include <commonlib/compression.h> -#include <commonlib/cbfs_serialized.h> #include <lib.h> #include <fit.h> #include <endian.h> diff --git a/src/arch/riscv/sbi.c b/src/arch/riscv/sbi.c index e0d7c60..2770189 100644 --- a/src/arch/riscv/sbi.c +++ b/src/arch/riscv/sbi.c @@ -15,7 +15,6 @@
#include <mcall.h> #include <stdint.h> -#include <commonlib/compiler.h> #include <arch/exception.h> #include <sbi.h> #include <vm.h> diff --git a/src/arch/riscv/smp.c b/src/arch/riscv/smp.c index b32e4b8..95d116a 100644 --- a/src/arch/riscv/smp.c +++ b/src/arch/riscv/smp.c @@ -18,7 +18,6 @@ #include <arch/smp/smp.h> #include <arch/smp/spinlock.h> #include <mcall.h> -#include <commonlib/compiler.h> #include <console/console.h>
void smp_pause(int working_hartid) diff --git a/src/commonlib/Makefile.inc b/src/commonlib/Makefile.inc index b6e8913..5bd6cf9 100644 --- a/src/commonlib/Makefile.inc +++ b/src/commonlib/Makefile.inc @@ -30,11 +30,11 @@ smm-y += cbfs.c postcar-y += cbfs.c
-decompressor-y += lz4_wrapper.c -bootblock-y += lz4_wrapper.c -verstage-y += lz4_wrapper.c -romstage-y += lz4_wrapper.c -ramstage-y += lz4_wrapper.c -postcar-y += lz4_wrapper.c +decompressor-y += bsd/lz4_wrapper.c +bootblock-y += bsd/lz4_wrapper.c +verstage-y += bsd/lz4_wrapper.c +romstage-y += bsd/lz4_wrapper.c +ramstage-y += bsd/lz4_wrapper.c +postcar-y += bsd/lz4_wrapper.c
ramstage-y += sort.c diff --git a/src/commonlib/bsd/include/commonlib/bsd/cb_err.h b/src/commonlib/bsd/include/commonlib/bsd/cb_err.h new file mode 100644 index 0000000..ab419a7 --- /dev/null +++ b/src/commonlib/bsd/include/commonlib/bsd/cb_err.h @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-or-later */ + +#ifndef _COMMONLIB_BSD_CB_ERR_H_ +#define _COMMONLIB_BSD_CB_ERR_H_ + +#include <stdint.h> + +/** + * coreboot error codes + * + * Common error definitions that can be used for any function. All error values + * should be negative -- when useful, positive values can also be used to denote + * success. Allocate a new group or errors every 100 values. + */ +enum cb_err { + CB_SUCCESS = 0, /**< Call completed successfully */ + CB_ERR = -1, /**< Generic error code */ + CB_ERR_ARG = -2, /**< Invalid argument */ + + /* NVRAM/CMOS errors */ + CB_CMOS_OTABLE_DISABLED = -100, /**< Option table disabled */ + CB_CMOS_LAYOUT_NOT_FOUND = -101, /**< Layout file not found */ + CB_CMOS_OPTION_NOT_FOUND = -102, /**< Option string not found */ + CB_CMOS_ACCESS_ERROR = -103, /**< CMOS access error */ + CB_CMOS_CHECKSUM_INVALID = -104, /**< CMOS checksum is invalid */ + + /* Keyboard test failures */ + CB_KBD_CONTROLLER_FAILURE = -200, + CB_KBD_INTERFACE_FAILURE = -201, + + /* I2C controller failures */ + CB_I2C_NO_DEVICE = -300, /**< Device is not responding */ + CB_I2C_BUSY = -301, /**< Device tells it's busy */ + CB_I2C_PROTOCOL_ERROR = -302, /**< Data lost or spurious slave + device response, try again? */ + CB_I2C_TIMEOUT = -303, /**< Transmission timed out */ +}; + +/* Don't typedef the enum directly, so the size is unambiguous for serialization. */ +typedef int32_t cb_err_t; + +#endif /* _COMMONLIB_BSD_CB_ERR_H_ */ diff --git a/src/commonlib/include/commonlib/cbfs_serialized.h b/src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h similarity index 67% rename from src/commonlib/include/commonlib/cbfs_serialized.h rename to src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h index d3a18c6..d2fc626 100644 --- a/src/commonlib/include/commonlib/cbfs_serialized.h +++ b/src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h @@ -1,48 +1,4 @@ -/* - * This file is part of the coreboot project. - * - * Copyright (C) 2008 Jordan Crouse jordan@cosmicpenguin.net - * Copyright (C) 2012 Google, Inc. - * Copyright (C) 2013 The Chromium OS Authors. All rights reserved. - * - * This file is dual-licensed. You can choose between: - * - The GNU GPL, version 2, as published by the Free Software Foundation - * - The revised BSD license (without advertising clause) - * - * --------------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * --------------------------------------------------------------------------- - * 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. - * --------------------------------------------------------------------------- - */ +/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-only */
#ifndef _CBFS_SERIALIZED_H_ #define _CBFS_SERIALIZED_H_ diff --git a/src/commonlib/include/commonlib/compiler.h b/src/commonlib/bsd/include/commonlib/bsd/compiler.h similarity index 72% rename from src/commonlib/include/commonlib/compiler.h rename to src/commonlib/bsd/include/commonlib/bsd/compiler.h index 972a229..ee2ff88 100644 --- a/src/commonlib/include/commonlib/compiler.h +++ b/src/commonlib/bsd/include/commonlib/bsd/compiler.h @@ -1,18 +1,7 @@ -/* - * This file is part of the coreboot project. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ +/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-only */
-#ifndef _COMMONLIB_COMPILER_H_ -#define _COMMONLIB_COMPILER_H_ +#ifndef _COMMONLIB_BSD_COMPILER_H_ +#define _COMMONLIB_BSD_COMPILER_H_
#ifndef __packed #if defined(__WIN32) || defined(__WIN64) diff --git a/src/commonlib/include/commonlib/compression.h b/src/commonlib/bsd/include/commonlib/bsd/compression.h similarity index 62% rename from src/commonlib/include/commonlib/compression.h rename to src/commonlib/bsd/include/commonlib/bsd/compression.h index 3988ef8..873e7e4 100644 --- a/src/commonlib/include/commonlib/compression.h +++ b/src/commonlib/bsd/include/commonlib/bsd/compression.h @@ -1,15 +1,4 @@ -/* - * This file is part of the coreboot project. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ +/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-only */
#ifndef _COMMONLIB_COMPRESSION_H_ #define _COMMONLIB_COMPRESSION_H_ diff --git a/src/commonlib/bsd/include/commonlib/bsd/fmap_serialized.h b/src/commonlib/bsd/include/commonlib/bsd/fmap_serialized.h new file mode 100644 index 0000000..3d328c4 --- /dev/null +++ b/src/commonlib/bsd/include/commonlib/bsd/fmap_serialized.h @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-only */ + +#ifndef FLASHMAP_SERIALIZED_H__ +#define FLASHMAP_SERIALIZED_H__ + +#include <stdint.h> + +#define FMAP_SIGNATURE "__FMAP__" +#define FMAP_VER_MAJOR 1 /* this header's FMAP minor version */ +#define FMAP_VER_MINOR 1 /* this header's FMAP minor version */ +#define FMAP_STRLEN 32 /* maximum length for strings, */ + /* including null-terminator */ + +enum fmap_flags { + FMAP_AREA_STATIC = 1 << 0, + FMAP_AREA_COMPRESSED = 1 << 1, + FMAP_AREA_RO = 1 << 2, + FMAP_AREA_PRESERVE = 1 << 3, +}; + +/* Mapping of volatile and static regions in firmware binary */ +struct fmap_area { + uint32_t offset; /* offset relative to base */ + uint32_t size; /* size in bytes */ + uint8_t name[FMAP_STRLEN]; /* descriptive name */ + uint16_t flags; /* flags for this area */ +} __packed; + +struct fmap { + uint8_t signature[8]; /* "__FMAP__" (0x5F5F464D41505F5F) */ + uint8_t ver_major; /* major version */ + uint8_t ver_minor; /* minor version */ + uint64_t base; /* address of the firmware binary */ + uint32_t size; /* size of firmware binary in bytes */ + uint8_t name[FMAP_STRLEN]; /* name of this firmware binary */ + uint16_t nareas; /* number of areas described by + fmap_areas[] below */ + struct fmap_area areas[]; +} __packed; + +#endif /* FLASHMAP_SERIALIZED_H__ */ diff --git a/src/commonlib/bsd/include/commonlib/bsd/helpers.h b/src/commonlib/bsd/include/commonlib/bsd/helpers.h new file mode 100644 index 0000000..a305df0 --- /dev/null +++ b/src/commonlib/bsd/include/commonlib/bsd/helpers.h @@ -0,0 +1,89 @@ +/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-only */ + +#ifndef COMMONLIB_BSD_HELPERS_H +#define COMMONLIB_BSD_HELPERS_H + +#ifndef __ASSEMBLER__ +#include <commonlib/bsd/compiler.h> +#include <stddef.h> +#endif + +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) +#endif + +#define ALIGN(x, a) __ALIGN_MASK(x, (__typeof__(x))(a)-1UL) +#define __ALIGN_MASK(x, mask) (((x)+(mask))&~(mask)) +#define ALIGN_UP(x, a) ALIGN((x), (a)) +#define ALIGN_DOWN(x, a) ((x) & ~((__typeof__(x))(a)-1UL)) +#define IS_ALIGNED(x, a) (((x) & ((__typeof__(x))(a)-1UL)) == 0) + +/* Double-evaluation unsafe min/max, for bitfields and outside of functions */ +#define __CMP_UNSAFE(a, b, op) ((a) op (b) ? (a) : (b)) +#define MIN_UNSAFE(a, b) __CMP_UNSAFE(a, b, <) +#define MAX_UNSAFE(a, b) __CMP_UNSAFE(a, b, >) + +#define __CMP_SAFE(a, b, op, var_a, var_b) ({ \ + __TYPEOF_UNLESS_CONST(a, b) var_a = (a); \ + __TYPEOF_UNLESS_CONST(b, a) var_b = (b); \ + var_a op var_b ? var_a : var_b; \ +}) + +#define __CMP(a, b, op) __builtin_choose_expr( \ + __builtin_constant_p(a) && __builtin_constant_p(b), \ + __CMP_UNSAFE(a, b, op), __CMP_SAFE(a, b, op, __TMPNAME, __TMPNAME)) + +#ifndef MIN +#define MIN(a, b) __CMP(a, b, <) +#endif +#ifndef MAX +#define MAX(a, b) __CMP(a, b, >) +#endif + +#ifndef ABS +#define ABS(a) ({ \ + __typeof__(a) _abs_local_a = (a); \ + (_abs_local_a < 0) ? (-_abs_local_a) : _abs_local_a; \ +}) +#endif + +#define IS_POWER_OF_2(x) ({ \ + __typeof__(x) _power_local_x = (x); \ + (_power_local_x & (_power_local_x - 1)) == 0; \ +}) + +#define DIV_ROUND_UP(x, y) ({ \ + __typeof__(x) _div_local_x = (x); \ + __typeof__(y) _div_local_y = (y); \ + (_div_local_x + _div_local_y - 1) / _div_local_y; \ +}) + +#define SWAP(a, b) do { \ + __typeof__(&(a)) _swap_local_a = &(a); \ + __typeof__(&(b)) _swap_local_b = &(b); \ + __typeof__(a) _swap_local_tmp = *_swap_local_a; \ + *_swap_local_a = *_swap_local_b; \ + *_swap_local_b = _swap_local_tmp; \ +} while (0) + +/* Standard units. */ +#define KiB (1<<10) +#define MiB (1<<20) +#define GiB (1<<30) + +#define KHz (1000) +#define MHz (1000 * KHz) +#define GHz (1000 * MHz) + +#ifndef offsetof +#define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) +#endif + +#define check_member(structure, member, offset) _Static_assert( \ + offsetof(struct structure, member) == offset, \ + "`struct " #structure "` offset for `" #member "` is not " #offset) + +/* Calculate size of structure member. */ +#define member_size(type, member) (sizeof(((type *)0)->member)) + +#endif /* COMMONLIB_BSD_HELPERS_H */ diff --git a/src/commonlib/lz4.c.inc b/src/commonlib/bsd/lz4.c.inc similarity index 100% rename from src/commonlib/lz4.c.inc rename to src/commonlib/bsd/lz4.c.inc diff --git a/src/commonlib/lz4_wrapper.c b/src/commonlib/bsd/lz4_wrapper.c similarity index 70% rename from src/commonlib/lz4_wrapper.c rename to src/commonlib/bsd/lz4_wrapper.c index 474df64..2367afc 100644 --- a/src/commonlib/lz4_wrapper.c +++ b/src/commonlib/bsd/lz4_wrapper.c @@ -1,37 +1,8 @@ -/* - * Copyright 2015-2016 Google Inc. - * - * 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. - * - * Alternatively, this software may be distributed under the terms of the - * GNU General Public License ("GPL") version 2 as published by the Free - * Software Foundation. - * - * 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. - */ +/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-only */
-#include <commonlib/compression.h> -#include <commonlib/endian.h> -#include <commonlib/helpers.h> +#include <commonlib/bsd/compression.h> +#include <commonlib/bsd/helpers.h> +#include <endian.h> #include <stdint.h> #include <string.h>
@@ -41,7 +12,7 @@ * access support), we can easily write the ones we need ourselves. */ static uint16_t LZ4_readLE16(const void *src) { - return read_le16(src); + return le16toh(*(const uint16_t *)src); } static void LZ4_copy8(void *dst, const void *src) { @@ -143,7 +114,7 @@ return 0; /* input overrun */
/* We assume there's always only a single, standard frame. */ - if (read_le32(&h->magic) != LZ4F_MAGICNUMBER || h->version != 1) + if (le32toh(h->magic) != LZ4F_MAGICNUMBER || h->version != 1) return 0; /* unknown format */ if (h->reserved0 || h->reserved1 || h->reserved2) return 0; /* reserved must be zero */ @@ -158,7 +129,9 @@ }
while (1) { - struct lz4_block_header b = { { .raw = read_le32(in) } }; + struct lz4_block_header b = { + { .raw = le32toh(*(const uint32_t *)in) } + }; in += sizeof(struct lz4_block_header);
if ((size_t)(in - src) + b.size > srcn) diff --git a/src/commonlib/include/commonlib/cbfs.h b/src/commonlib/include/commonlib/cbfs.h index b0aa9d3..4701730 100644 --- a/src/commonlib/include/commonlib/cbfs.h +++ b/src/commonlib/include/commonlib/cbfs.h @@ -14,7 +14,7 @@ #ifndef _COMMONLIB_CBFS_H_ #define _COMMONLIB_CBFS_H_
-#include <commonlib/cbfs_serialized.h> +#include <commonlib/bsd/cbfs_serialized.h> #include <commonlib/region.h> #include <vb2_api.h>
diff --git a/src/commonlib/include/commonlib/fmap_serialized.h b/src/commonlib/include/commonlib/fmap_serialized.h deleted file mode 100644 index 53a09af..0000000 --- a/src/commonlib/include/commonlib/fmap_serialized.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2010, Google Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. 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 COPYRIGHT HOLDERS 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 COPYRIGHT - * OWNER 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. - * - * Alternatively, this software may be distributed under the terms of the - * GNU General Public License ("GPL") version 2 as published by the Free - * Software Foundation. - */ - -#ifndef FLASHMAP_SERIALIZED_H__ -#define FLASHMAP_SERIALIZED_H__ - -#include <stdint.h> - -#define FMAP_SIGNATURE "__FMAP__" -#define FMAP_VER_MAJOR 1 /* this header's FMAP minor version */ -#define FMAP_VER_MINOR 1 /* this header's FMAP minor version */ -#define FMAP_STRLEN 32 /* maximum length for strings, */ - /* including null-terminator */ - -enum fmap_flags { - FMAP_AREA_STATIC = 1 << 0, - FMAP_AREA_COMPRESSED = 1 << 1, - FMAP_AREA_RO = 1 << 2, - FMAP_AREA_PRESERVE = 1 << 3, -}; - -/* Mapping of volatile and static regions in firmware binary */ -struct fmap_area { - uint32_t offset; /* offset relative to base */ - uint32_t size; /* size in bytes */ - uint8_t name[FMAP_STRLEN]; /* descriptive name */ - uint16_t flags; /* flags for this area */ -} __packed; - -struct fmap { - uint8_t signature[8]; /* "__FMAP__" (0x5F5F464D41505F5F) */ - uint8_t ver_major; /* major version */ - uint8_t ver_minor; /* minor version */ - uint64_t base; /* address of the firmware binary */ - uint32_t size; /* size of firmware binary in bytes */ - uint8_t name[FMAP_STRLEN]; /* name of this firmware binary */ - uint16_t nareas; /* number of areas described by - fmap_areas[] below */ - struct fmap_area areas[]; -} __packed; - -#endif /* FLASHMAP_SERIALIZED_H__ */ diff --git a/src/commonlib/include/commonlib/helpers.h b/src/commonlib/include/commonlib/helpers.h index f07b6c2..a5fe87d 100644 --- a/src/commonlib/include/commonlib/helpers.h +++ b/src/commonlib/include/commonlib/helpers.h @@ -13,71 +13,12 @@
#ifndef COMMONLIB_HELPERS_H #define COMMONLIB_HELPERS_H -/* This file is for helpers for both coreboot firmware and its utilities. */
-#ifndef __ASSEMBLER__ -#include <commonlib/compiler.h> -#include <stddef.h> -#endif +/* This file is for helpers for both coreboot firmware and its utilities. Most + of this has moved into <commonlib/bsd/helpers.h> now, this wrapper is just + for the stuff that nobody bothered to confirm BSD-licensability of yet. */
-#ifndef ARRAY_SIZE -#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) -#endif - -#define ALIGN(x, a) __ALIGN_MASK(x, (__typeof__(x))(a)-1UL) -#define __ALIGN_MASK(x, mask) (((x)+(mask))&~(mask)) -#define ALIGN_UP(x, a) ALIGN((x), (a)) -#define ALIGN_DOWN(x, a) ((x) & ~((__typeof__(x))(a)-1UL)) -#define IS_ALIGNED(x, a) (((x) & ((__typeof__(x))(a)-1UL)) == 0) - -/* Double-evaluation unsafe min/max, for bitfields and outside of functions */ -#define __CMP_UNSAFE(a, b, op) ((a) op (b) ? (a) : (b)) -#define MIN_UNSAFE(a, b) __CMP_UNSAFE(a, b, <) -#define MAX_UNSAFE(a, b) __CMP_UNSAFE(a, b, >) - -#define __CMP_SAFE(a, b, op, var_a, var_b) ({ \ - __TYPEOF_UNLESS_CONST(a, b) var_a = (a); \ - __TYPEOF_UNLESS_CONST(b, a) var_b = (b); \ - var_a op var_b ? var_a : var_b; \ -}) - - -#define __CMP(a, b, op) __builtin_choose_expr( \ - __builtin_constant_p(a) && __builtin_constant_p(b), \ - __CMP_UNSAFE(a, b, op), __CMP_SAFE(a, b, op, __TMPNAME, __TMPNAME)) - -#ifndef MIN -#define MIN(a, b) __CMP(a, b, <) -#endif -#ifndef MAX -#define MAX(a, b) __CMP(a, b, >) -#endif - -#ifndef ABS -#define ABS(a) ({ \ - __typeof__(a) _abs_local_a = (a); \ - (_abs_local_a < 0) ? (-_abs_local_a) : _abs_local_a; \ -}) -#endif - -#define IS_POWER_OF_2(x) ({ \ - __typeof__(x) _power_local_x = (x); \ - (_power_local_x & (_power_local_x - 1)) == 0; \ -}) - -#define DIV_ROUND_UP(x, y) ({ \ - __typeof__(x) _div_local_x = (x); \ - __typeof__(y) _div_local_y = (y); \ - (_div_local_x + _div_local_y - 1) / _div_local_y; \ -}) - -#define SWAP(a, b) do { \ - __typeof__(&(a)) _swap_local_a = &(a); \ - __typeof__(&(b)) _swap_local_b = &(b); \ - __typeof__(a) _swap_local_tmp = *_swap_local_a; \ - *_swap_local_a = *_swap_local_b; \ - *_swap_local_b = _swap_local_tmp; \ -} while (0) +#include <commonlib/bsd/helpers.h>
/* * Divide positive or negative dividend by positive divisor and round @@ -93,25 +34,6 @@ ((_div_local_x - (_div_local_d / 2)) / _div_local_d); \ })
-/* Standard units. */ -#define KiB (1<<10) -#define MiB (1<<20) -#define GiB (1<<30) -/* Could we ever run into this one? I hope we get this much memory! */ -#define TiB (1<<40) - -#define KHz (1000) -#define MHz (1000 * KHz) -#define GHz (1000 * MHz) - -#ifndef offsetof -#define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) -#endif - -#define check_member(structure, member, offset) _Static_assert( \ - offsetof(struct structure, member) == offset, \ - "`struct " #structure "` offset for `" #member "` is not " #offset) - /** * container_of - cast a member of a structure out to the containing structure * @param ptr: the pointer to the member. @@ -123,9 +45,6 @@ const __typeof__(((type *)0)->member) *__mptr = (ptr); \ (type *)((char *)__mptr - offsetof(type, member)); })
-/* Calculate size of structure member. */ -#define member_size(type, member) (sizeof(((type *)0)->member)) - #ifndef __unused #define __unused __attribute__((unused)) #endif diff --git a/src/include/fmap.h b/src/include/fmap.h index 649ecc0..9c974ce 100644 --- a/src/include/fmap.h +++ b/src/include/fmap.h @@ -16,8 +16,8 @@ #ifndef _FMAP_H_ #define _FMAP_H_
+#include <commonlib/bsd/fmap_serialized.h> #include <commonlib/region.h> -#include <commonlib/fmap_serialized.h>
/* Locate the named area in the fmap and fill in a region device representing * that area. The region is a sub-region of the readonly boot media. Return diff --git a/src/include/types.h b/src/include/types.h index 30f243f..ffb14c9 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -17,6 +17,7 @@ #define __TYPES_H
/* types.h is supposed to provide the standard headers defined in here: */ +#include <commonlib/bsd/cb_err.h> #include <stdbool.h> #include <stdint.h> #include <stddef.h> @@ -30,36 +31,4 @@ #define BIT(x) (1ul << (x)) #endif
-/** - * coreboot error codes - * - * When building functions that return a status or an error code, use cb_err as - * the return type. When failure reason needs to be communicated by the return - * value, define a it here. Start new enum groups with values in decrements of - * 100. - */ -enum cb_err { - CB_SUCCESS = 0, /**< Call completed successfully */ - CB_ERR = -1, /**< Generic error code */ - CB_ERR_ARG = -2, /**< Invalid argument */ - - /* NVRAM/CMOS errors */ - CB_CMOS_OTABLE_DISABLED = -100, /**< Option table disabled */ - CB_CMOS_LAYOUT_NOT_FOUND = -101, /**< Layout file not found */ - CB_CMOS_OPTION_NOT_FOUND = -102, /**< Option string not found */ - CB_CMOS_ACCESS_ERROR = -103, /**< CMOS access error */ - CB_CMOS_CHECKSUM_INVALID = -104, /**< CMOS checksum is invalid */ - - /* Keyboard test failures */ - CB_KBD_CONTROLLER_FAILURE = -200, - CB_KBD_INTERFACE_FAILURE = -201, - - /* I2C controller failures */ - CB_I2C_NO_DEVICE = -300, /**< Device is not responding */ - CB_I2C_BUSY = -301, /**< Device tells it's busy */ - CB_I2C_PROTOCOL_ERROR = -302, /**< Data lost or spurious slave - device response, try again? */ - CB_I2C_TIMEOUT = -303, /**< Transmission timed out */ -}; - #endif /* __TYPES_H */ diff --git a/src/lib/cbfs.c b/src/lib/cbfs.c index e31c7cc..c712f76 100644 --- a/src/lib/cbfs.c +++ b/src/lib/cbfs.c @@ -20,7 +20,7 @@ #include <stdlib.h> #include <boot_device.h> #include <cbfs.h> -#include <commonlib/compression.h> +#include <commonlib/bsd/compression.h> #include <endian.h> #include <lib.h> #include <symbols.h> diff --git a/src/lib/decompressor.c b/src/lib/decompressor.c index eb7f16c..9471059 100644 --- a/src/lib/decompressor.c +++ b/src/lib/decompressor.c @@ -15,7 +15,7 @@ */
#include <bootblock_common.h> -#include <commonlib/compression.h> +#include <commonlib/bsd/compression.h> #include <delay.h> #include <program_loading.h> #include <symbols.h> diff --git a/src/lib/fit.c b/src/lib/fit.c index 831e518..edac192 100644 --- a/src/lib/fit.c +++ b/src/lib/fit.c @@ -16,6 +16,7 @@ */
#include <assert.h> +#include <cbfs.h> #include <console/console.h> #include <ctype.h> #include <endian.h> @@ -27,7 +28,6 @@ #include <memrange.h> #include <fit.h> #include <boardid.h> -#include <commonlib/cbfs_serialized.h> #include <commonlib/stdlib.h>
static struct list_node image_nodes; diff --git a/src/lib/fit_payload.c b/src/lib/fit_payload.c index 1b6c986..83e9b8e 100644 --- a/src/lib/fit_payload.c +++ b/src/lib/fit_payload.c @@ -15,6 +15,8 @@ * GNU General Public License for more details. */
+#include <cbfs.h> +#include <commonlib/bsd/compression.h> #include <console/console.h> #include <bootmem.h> #include <cbmem.h> @@ -25,8 +27,6 @@ #include <program_loading.h> #include <timestamp.h> #include <string.h> -#include <commonlib/cbfs_serialized.h> -#include <commonlib/compression.h> #include <lib.h> #include <fit_payload.h> #include <boardid.h> diff --git a/src/lib/fmap.c b/src/lib/fmap.c index 9d2b4e7..c8843a7 100644 --- a/src/lib/fmap.c +++ b/src/lib/fmap.c @@ -17,7 +17,6 @@ #include <cbmem.h> #include <console/console.h> #include <fmap.h> -#include <commonlib/fmap_serialized.h> #include <stddef.h> #include <string.h> #include <symbols.h> diff --git a/src/lib/selfboot.c b/src/lib/selfboot.c index 8cf7a6f..11fdff3 100644 --- a/src/lib/selfboot.c +++ b/src/lib/selfboot.c @@ -15,7 +15,7 @@ * GNU General Public License for more details. */
-#include <commonlib/compression.h> +#include <commonlib/bsd/compression.h> #include <commonlib/endian.h> #include <console/console.h> #include <stdint.h> diff --git a/src/mainboard/google/poppy/variants/nami/mainboard.c b/src/mainboard/google/poppy/variants/nami/mainboard.c index e3855bd..6d54e17 100644 --- a/src/mainboard/google/poppy/variants/nami/mainboard.c +++ b/src/mainboard/google/poppy/variants/nami/mainboard.c @@ -18,7 +18,6 @@ #include <baseboard/variants.h> #include <cbfs.h> #include <chip.h> -#include <commonlib/cbfs_serialized.h> #include <console/console.h> #include <device/device.h> #include <drivers/intel/gma/opregion.h> diff --git a/src/soc/nvidia/tegra124/lp0/Makefile b/src/soc/nvidia/tegra124/lp0/Makefile index e82edaa..a4bbc07 100644 --- a/src/soc/nvidia/tegra124/lp0/Makefile +++ b/src/soc/nvidia/tegra124/lp0/Makefile @@ -35,7 +35,7 @@ $(CC) -marm -march=armv4t -mno-unaligned-access -nostdlib -static \ -Os -fpie -Wl,--build-id=none -ggdb3 -T tegra_lp0_resume.ld \ -include ../../../../include/stdint.h \ - -include ../../../../commonlib/include/commonlib/compiler.h \ + -include ../../../../commonlib/bsd/include/commonlib/bsd/compiler.h \ -o $@ $(filter %.c,$+)
tegra_lp0_resume.fw: tegra_lp0_resume.elf diff --git a/src/soc/nvidia/tegra210/lp0/Makefile b/src/soc/nvidia/tegra210/lp0/Makefile index e82edaa..a4bbc07 100644 --- a/src/soc/nvidia/tegra210/lp0/Makefile +++ b/src/soc/nvidia/tegra210/lp0/Makefile @@ -35,7 +35,7 @@ $(CC) -marm -march=armv4t -mno-unaligned-access -nostdlib -static \ -Os -fpie -Wl,--build-id=none -ggdb3 -T tegra_lp0_resume.ld \ -include ../../../../include/stdint.h \ - -include ../../../../commonlib/include/commonlib/compiler.h \ + -include ../../../../commonlib/bsd/include/commonlib/bsd/compiler.h \ -o $@ $(filter %.c,$+)
tegra_lp0_resume.fw: tegra_lp0_resume.elf diff --git a/src/vendorcode/amd/pi/00670F00/Makefile.inc b/src/vendorcode/amd/pi/00670F00/Makefile.inc index f6cd8eb..34dae71 100644 --- a/src/vendorcode/amd/pi/00670F00/Makefile.inc +++ b/src/vendorcode/amd/pi/00670F00/Makefile.inc @@ -75,12 +75,12 @@
$(call src-to-obj,libagesa,$1): $(agesa_src_path)/$(notdir $1) $(obj)/config.h $(src)/include/kconfig.h @printf " CC $$(subst $(obj)/,,$$(@))\n" - $(CC_libagesa) -c -MMD $(CFLAGS_libagesa) $(AGESA_CFLAGS) \ - $(AGESA_INC) \ - -include $(src)/include/kconfig.h \ - -include $(src)/include/rules.h \ - -include $(src)/commonlib/include/commonlib/compiler.h \ - -o $$@ \ + $(CC_libagesa) -c -MMD $(CFLAGS_libagesa) $(AGESA_CFLAGS) \ + $(AGESA_INC) \ + -include $(src)/include/kconfig.h \ + -include $(src)/include/rules.h \ + -include $(src)/commonlib/bsd/include/commonlib/bsd/compiler.h \ + -o $$@ \ $(agesa_src_path)/$(notdir $1)
endef diff --git a/src/vendorcode/amd/pi/Makefile.inc b/src/vendorcode/amd/pi/Makefile.inc index 9b3a0e6..8f27d64 100644 --- a/src/vendorcode/amd/pi/Makefile.inc +++ b/src/vendorcode/amd/pi/Makefile.inc @@ -66,6 +66,7 @@ AGESA_INC += -I$(src)/arch/x86/include AGESA_INC += -I$(src)/include AGESA_INC += -I$(src)/commonlib/include +AGESA_INC += -I$(src)/commonlib/bsd/include AGESA_INC += -I$(VBOOT_SOURCE)/firmware/include
AGESA_CFLAGS += -march=amdfam10 -mno-3dnow @@ -98,12 +99,12 @@
$(call src-to-obj,libagesa,$1): $(agesa_src_path)/$(notdir $1) $(obj)/config.h $(src)/include/kconfig.h @printf " CC $$(subst $(obj)/,,$$(@))\n" - $(CC_libagesa) -c -MMD $(CFLAGS_libagesa) $(AGESA_CFLAGS) \ - $(AGESA_INC) \ - -include $(src)/include/kconfig.h \ - -include $(src)/include/rules.h \ - -include $(src)/commonlib/include/commonlib/compiler.h \ - -o $$@ \ + $(CC_libagesa) -c -MMD $(CFLAGS_libagesa) $(AGESA_CFLAGS) \ + $(AGESA_INC) \ + -include $(src)/include/kconfig.h \ + -include $(src)/include/rules.h \ + -include $(src)/commonlib/bsd/include/commonlib/bsd/compiler.h \ + -o $$@ \ $(agesa_src_path)/$(notdir $1)
endef diff --git a/util/cbfstool/Makefile.inc b/util/cbfstool/Makefile.inc index 066ef34..d8ad959 100644 --- a/util/cbfstool/Makefile.inc +++ b/util/cbfstool/Makefile.inc @@ -113,8 +113,8 @@ TOOLCPPFLAGS += -I$(top)/util/cbfstool/flashmap TOOLCPPFLAGS += -I$(top)/util/cbfstool TOOLCPPFLAGS += -I$(objutil)/cbfstool -TOOLCPPFLAGS += -I$(top)/src/commonlib/include -TOOLCPPFLAGS += -include $(top)/src/commonlib/include/commonlib/compiler.h +TOOLCPPFLAGS += -I$(top)/src/commonlib/include -I$(top)/src/commonlib/bsd/include +TOOLCPPFLAGS += -include $(top)/src/commonlib/bsd/include/commonlib/bsd/compiler.h TOOLCPPFLAGS += -I$(VBOOT_SOURCE)/firmware/include TOOLCPPFLAGS += -I$(VBOOT_SOURCE)/firmware/2lib/include # UEFI header file support. It's not pretty, but that's what we currently @@ -163,6 +163,10 @@ printf " HOSTCC $(subst $(objutil)/,,$(@))\n" $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
+$(objutil)/cbfstool/%.o: $(top)/src/commonlib/bsd/%.c + printf " HOSTCC $(subst $(objutil)/,,$(@))\n" + $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< + $(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lz4/lib/%.c printf " HOSTCC $(subst $(objutil)/,,$(@))\n" $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< diff --git a/util/cbfstool/cbfs-mkstage.c b/util/cbfstool/cbfs-mkstage.c index 6071437..be920b4 100644 --- a/util/cbfstool/cbfs-mkstage.c +++ b/util/cbfstool/cbfs-mkstage.c @@ -26,7 +26,7 @@ #include "cbfs.h" #include "rmodule.h"
-#include <commonlib/compression.h> +#include <commonlib/bsd/compression.h>
/* Checks if program segment contains the ignored section */ static int is_phdr_ignored(Elf64_Phdr *phdr, Elf64_Shdr *shdr) diff --git a/util/cbfstool/compress.c b/util/cbfstool/compress.c index a6a0df4..9938094 100644 --- a/util/cbfstool/compress.c +++ b/util/cbfstool/compress.c @@ -23,7 +23,7 @@ #include <stdlib.h> #include "common.h" #include "lz4/lib/lz4frame.h" -#include <commonlib/compression.h> +#include <commonlib/bsd/compression.h>
static int lz4_compress(char *in, int in_len, char *out, int *out_len) { diff --git a/util/cbmem/Makefile b/util/cbmem/Makefile index 55a4e10..56445d8 100644 --- a/util/cbmem/Makefile +++ b/util/cbmem/Makefile @@ -20,8 +20,8 @@ PREFIX ?= /usr/local CFLAGS ?= -O2 CFLAGS += -Wall -Wextra -Wmissing-prototypes -Werror -CPPFLAGS += -I . -I $(ROOT)/commonlib/include -CPPFLAGS += -include commonlib/compiler.h +CPPFLAGS += -I . -I $(ROOT)/commonlib/include -I $(ROOT)/commonlib/bsd/include +CPPFLAGS += -include $(ROOT)/commonlib/bsd/include/commonlib/bsd/compiler.h
OBJS = $(PROGRAM).o
diff --git a/util/ifdtool/Makefile b/util/ifdtool/Makefile index a4f0af6..50c6c30 100644 --- a/util/ifdtool/Makefile +++ b/util/ifdtool/Makefile @@ -19,9 +19,9 @@ INSTALL = /usr/bin/env install PREFIX = /usr/local CFLAGS = -O2 -g -Wall -Wextra -Wmissing-prototypes -Werror -CFLAGS += -I../../src/commonlib/include +CFLAGS += -I../../src/commonlib/include -I../../src/commonlib/bsd/include CFLAGS += -I../cbfstool/flashmap -CFLAGS += -include ../../src/commonlib/include/commonlib/compiler.h +CFLAGS += -include ../../src/commonlib/bsd/include/commonlib/bsd/compiler.h LDFLAGS =
OBJS = ifdtool.o diff --git a/util/inteltool/Makefile b/util/inteltool/Makefile index cd02fa8..23ea8a6 100644 --- a/util/inteltool/Makefile +++ b/util/inteltool/Makefile @@ -25,7 +25,8 @@ CFLAGS ?= -O2 -g -Wall -Wextra -Wmissing-prototypes LDFLAGS += -lpci -lz
-CPPFLAGS += -I$(top)/src/commonlib/include +CPPFLAGS += -I$(top)/src/commonlib/include -I$(top)/src/commonlib/bsd/include +
OBJS = inteltool.o pcr.o cpu.o gpio.o gpio_groups.o rootcmplx.o powermgt.o \ memory.o pcie.o amb.o ivy_memory.o spi.o gfx.o ahci.o \ diff --git a/util/intelvbttool/Makefile b/util/intelvbttool/Makefile index fb9aade..57f2627 100644 --- a/util/intelvbttool/Makefile +++ b/util/intelvbttool/Makefile @@ -17,7 +17,7 @@ CC ?= gcc CFLAGS ?= -O2 -g CFLAGS += -Wall -Werror -CFLAGS += -I../../src/commonlib/include +CFLAGS += -I../../src/commonlib/include -I ../../src/commonlib/bsd/include
all: $(PROGRAM)
diff --git a/util/sconfig/Makefile.inc b/util/sconfig/Makefile.inc index c47b439..b821f06 100644 --- a/util/sconfig/Makefile.inc +++ b/util/sconfig/Makefile.inc @@ -4,7 +4,7 @@ sconfigobj += main.o
SCONFIGFLAGS += -I$(top)/util/sconfig -I$(objutil)/sconfig -SCONFIGFLAGS += -I$(top)/src/commonlib/include +SCONFIGFLAGS += -I$(top)/src/commonlib/include -I$(top)/src/commonlib/bsd/include
$(objutil)/sconfig: mkdir -p $@
9elements QA has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
Patch Set 5:
Automatic boot test returned (PASS/FAIL/TOTAL): 3/0/3 Emulation targets: EMULATION_QEMU_X86_Q35 using payload TianoCore : SUCCESS : https://lava.9esec.io/r/309 EMULATION_QEMU_X86_Q35 using payload SeaBIOS : SUCCESS : https://lava.9esec.io/r/308 EMULATION_QEMU_X86_I440FX using payload SeaBIOS : SUCCESS : https://lava.9esec.io/r/307
Please note: This test is under development and might not be accurate at all!
Werner Zeh has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
Patch Set 5:
This patch leads to a compile failure with glibc-headers-2.12-1.212 (currently installed on one of my systems) due to old endian.h in this package.
On a system with glibc-headers-2.28-42 things are OK so far.
Julius Werner has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
Patch Set 5:
This patch leads to a compile failure with glibc-headers-2.12-1.212 (currently installed on one of my systems) due to old endian.h in this package.
Is it missing le32toh()? I intentionally tried to standardize on something that I thought would be more widely available with this new commonlib/bsd code (as opposed to things like le32_to_cpu() which we also have in coreboot but I think are less widespread).
AFAIK there's no fully official POSIX API for little-endian stuff (only ntohl() for big-endian), so I think this is the next best thing we can try to rely on. Is this a big problem or are you okay with just requiring the newer version?
Werner Zeh has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
Patch Set 5:
Patch Set 5:
This patch leads to a compile failure with glibc-headers-2.12-1.212 (currently installed on one of my systems) due to old endian.h in this package.
Is it missing le32toh()? I intentionally tried to standardize on something that I thought would be more widely available with this new commonlib/bsd code (as opposed to things like le32_to_cpu() which we also have in coreboot but I think are less widespread).
AFAIK there's no fully official POSIX API for little-endian stuff (only ntohl() for big-endian), so I think this is the next best thing we can try to rely on. Is this a big problem or are you okay with just requiring the newer version?
Yes, it is related to le16toh() and le32toh():
src/commonlib/bsd/lz4_wrapper.c:15:9: error: implicit declaration of function 'le16toh' [-Werror=implicit-function-declaration]
coreboot/src/commonlib/bsd/lz4_wrapper.c:117:7: error: implicit declaration of function 'le32toh' [-Werror=implicit-function-declaration]
Unfortunately I cannot simply update the to the needed glibc version on this machine. Do you have any approaches that could fix this issue while still stay maintainable?
Julius Werner has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
Patch Set 5:
Unfortunately I cannot simply update the to the needed glibc version on this machine. Do you have any approaches that could fix this issue while still stay maintainable?
After diving through a dark, murky swamp of glibc headers, I think I found something that should help you. Can you try CB:38638?
Werner Zeh has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
Patch Set 5:
Patch Set 5:
Unfortunately I cannot simply update the to the needed glibc version on this machine. Do you have any approaches that could fix this issue while still stay maintainable?
After diving through a dark, murky swamp of glibc headers, I think I found something that should help you. Can you try CB:38638?
Thanks, works perfekt.
Idwer Vollering has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/38420 )
Change subject: commonlib: Add commonlib/bsd ......................................................................
Patch Set 5:
When will we have that non-linux builder :)