coreboot/payloads/libpayload
Subrata Banik ea6b6acd01 soc/intel/cmn/cse: Refactor CBMEM ID handling for flexibility
This patch refactors the handling of CSE CBMEM IDs to enable platforms
to choose whether to perform CSE sync operations within coreboot or
defer it to the payload. This separation improves code organization,
ensuring `cse_lite.c` focuses on coreboot-specific CSE Lite tasks.

Now, platforms can select:
  * `SOC_INTEL_CSE_LITE_SKU` for CSE sync within coreboot
  * `SOC_INTEL_CSE_LITE_SYNC_BY_PAYLOAD` for deferred payload sync

This change ensures mutually exclusive options, avoiding unnecessary
SPI flash size increases.

BUG=b:305898363
TEST=Builds and boots successfully:
    * google/rex0 with SOC_INTEL_CSE_LITE_SKU
    * google/rex64 with SOC_INTEL_CSE_LITE_SYNC_BY_PAYLOAD

Change-Id: I74f70959715f9fd6d4d298faf310592874cc35d4
Signed-off-by: Subrata Banik <subratabanik@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83393
Reviewed-by: Nick Vaccaro <nvaccaro@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2024-07-11 15:23:17 +00:00
..
arch libpayload/x86: Extend exception handling to x86_64 architecture 2024-06-20 19:51:18 +00:00
bin libpayload: Add x86_64 (64-bit) support 2024-05-26 01:26:31 +00:00
configs libpayload/unit-tests: Rename ARCH_BIG_ENDIAN to ARCH_MOCK_BIG_ENDIAN 2023-11-25 16:00:19 +00:00
crypto payloads: Rename Makefiles from .inc to .mk 2024-01-24 10:15:10 +00:00
curses payloads: Rename Makefiles from .inc to .mk 2024-01-24 10:15:10 +00:00
drivers libpayload: Add x86_64 (64-bit) support 2024-05-26 01:26:31 +00:00
gdb libpayload: gdb: Make die_if() format string a literal 2024-03-19 22:50:03 +00:00
include libpayload/include/endian.h: Add 64 bit enc/dec 2024-06-22 03:59:03 +00:00
libc soc/intel/cmn/cse: Refactor CBMEM ID handling for flexibility 2024-07-11 15:23:17 +00:00
libcbfs libpayload: Remove legacy CBFS API 2024-02-22 21:18:39 +00:00
liblz4 payloads: Rename Makefiles from .inc to .mk 2024-01-24 10:15:10 +00:00
liblzma payloads: Rename Makefiles from .inc to .mk 2024-01-24 10:15:10 +00:00
libpci payloads: Rename Makefiles from .inc to .mk 2024-01-24 10:15:10 +00:00
sample
tests libpayload: Make GPL commonlib includes available to payloads and tests 2024-03-17 16:53:06 +00:00
vboot libpayload: Add x86_64 (64-bit) support 2024-05-26 01:26:31 +00:00
.gitignore
Doxyfile
Kconfig libpayload: Add x86_64 (64-bit) support 2024-05-26 01:26:31 +00:00
LICENSE_GPL
LICENSES
Makefile libpayload: Add x86_64 (64-bit) support 2024-05-26 01:26:31 +00:00
Makefile.mk libpayload: Include libpayload-config.h in lib target 2024-05-29 09:18:26 +00:00
Makefile.payload libpayload/Makefile.payload: Fix CFLAGS 2022-06-15 18:06:39 +00:00
README

-------------------------------------------------------------------------------
libpayload README
-------------------------------------------------------------------------------

libpayload is a minimal library to support standalone payloads
that can be booted with firmware like coreboot. It handles the setup
code, and provides common C library symbols such as malloc() and printf().

Note: This is _not_ a standard library for use with an operating system,
rather it's only useful for coreboot payload development!
See https://www.coreboot.org for details on coreboot.


Installation
------------

 $ git clone https://review.coreboot.org/coreboot.git

 $ cd coreboot/payloads/libpayload

 $ make menuconfig

 $ make

 $ make install (optional, will install into ./install per default)

On x86 systems, libpayload will always be 32-bit even if your host OS runs
in 64-bit, so you might have to install the 32-bit libgcc version.
On Debian systems you'd do 'apt-get install gcc-multilib' for example.

Run 'make distclean' before switching boards. This command will remove
your current .config file, so you need 'make menuconfig' again or
'make defconfig' in order to set up configuration. Default configuration
is based on 'configs/defconfig'. See the configs/ directory for examples
of configuration.


Usage
-----

Here's an example of a very simple payload (hello.c) and how to build it:

 #include <libpayload.h>

 int main(void)
 {
     printf("Hello, world!\n");
     return 0;
 }

Building the payload using the 'lpgcc' compiler wrapper:

 $ lpgcc -o hello.elf hello.c

Please see the sample/ directory for details.


Website and Mailing List
------------------------

The main website is https://www.coreboot.org/Libpayload.

For additional information, patches, and discussions, please join the
coreboot mailing list at https://www.coreboot.org/Mailinglist, where most
libpayload developers are subscribed.


Copyright and License
---------------------

See LICENSES.