coreboot/src/include
Raul E Rangel e6cd6caf31 cpu/x86/smm: Add weak SoC init and exit methods
This change provides hooks for the SoC so it can perform any
initialization and cleanup in the SMM handler.

For example, if we have a UART enabled firmware with DEBUG_SMI, the UART
controller could have been powered off by the OS. In this case we need
to power on the UART when entering SMM, and then power it off before we
exit. If the OS had the UART enabled when entering SMM, we should
snapshot the UART register state, and restore it on exit. Otherwise we
risk clearing some interrupt enable bits.

BUG=b:221231786, b:217968734
TEST=Build test guybrush

Signed-off-by: Raul E Rangel <rrangel@chromium.org>
Change-Id: I946619cd62a974a98c575a92943b43ea639fc329
Reviewed-on: https://review.coreboot.org/c/coreboot/+/62500
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Karthik Ramasubramanian <kramasub@google.com>
2022-03-10 17:06:51 +00:00
..
acpi coreboot_tables.c: Expose the ACPI RSDP 2022-03-09 14:21:01 +00:00
boot coreboot_table: Move VBOOT_VBNV support 2021-02-04 08:43:39 +00:00
console cpu/x86/smm,lib/cbmem_console: Enable CBMEMC when using DEBUG_SMI 2022-03-09 14:26:26 +00:00
cpu cpu/x86/smm: Add weak SoC init and exit methods 2022-03-10 17:06:51 +00:00
device soc/intel/common: Include Meteor Lake device IDs 2022-03-09 22:28:33 +00:00
efi efi_datatype: Add typedef for EFI_PHYSICAL_ADDRESS 2022-01-20 04:54:32 +00:00
mipi commonlib/bsd: Remove cb_err_t 2022-03-09 02:18:21 +00:00
pc80 src/include: Drop unneeded empty lines 2020-09-14 07:09:41 +00:00
smp Add ENV_STAGE_SUPPORTS_SMP to clean up spinlock stubs 2021-11-13 22:26:53 +00:00
superio src/include: Add PnP/HWM unset_and_set functions 2020-09-18 12:06:38 +00:00
sys src/include: Add guards on all header files 2017-08-01 23:04:15 +00:00
adainit.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
asan.h include/asan.h: Add missing includes 2020-08-21 13:36:10 +00:00
assert.h arch/x86: Use ENV_X86_64 instead of _x86_64_ 2021-07-06 06:09:13 +00:00
b64_decode.h treewide: replace GPLv2 long form headers with SPDX header 2020-05-06 22:20:57 +00:00
base3.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
boardid.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
boot_device.h cbfs: Move more stuff into cbfs_boot_lookup() 2020-12-02 22:13:06 +00:00
bootblock_common.h decompressor: Add CBFS_VERIFICATION support 2021-04-06 07:49:15 +00:00
bootmem.h cbfs: Remove prog_locate() for payloads (SELF and FIT) 2021-03-17 00:13:53 +00:00
bootmode.h Reland "vboot_logic: Set VB2_CONTEXT_EC_TRUSTED in verstage_main" 2021-11-15 12:00:12 +00:00
bootsplash.h drivers/intel/fsp1_1,fsp2_0: Refactor logo display 2021-02-09 07:52:31 +00:00
bootstate.h lib/hardwaremain: Drop boot_state_current_{block,unblock}() 2021-07-18 15:16:26 +00:00
cbfs.h commonlib/bsd: Remove cb_err_t 2022-03-09 02:18:21 +00:00
cbfs_glue.h include/cbfsglue.h: Use BIOS_INFO for LOG macro 2021-04-06 06:53:17 +00:00
cbmem.h commonlib: Move commonlib/cbmem_id.h to commonlib/bsd/ 2021-11-30 17:23:37 +00:00
cper.h include/bcd: move bcd code to commonlib/bsd/include 2021-08-23 14:08:47 +00:00
crc_byte.h src/include: Add missing includes 2020-07-26 21:37:35 +00:00
ctype.h add ctype.h header 2019-06-24 21:15:14 +00:00
delay.h cpu/x86/lapic: Refactor timer_fsb() 2019-09-19 09:28:55 +00:00
device_tree.h src/include: Drop unneeded empty lines 2020-09-14 07:09:41 +00:00
dimm_info_util.h arch/x86: Refactor the SMBIOS type 17 write function 2021-11-11 09:10:10 +00:00
dp_aux.h google/trogdor: Add backlight support for Parade ps8640 2021-11-02 08:17:21 +00:00
edid.h include/edid.h: Remove repeated word 2021-01-18 07:37:04 +00:00
elog.h elog: move MAX_EVENT_SIZE to commonlib/bsd/include 2021-09-10 22:53:19 +00:00
endian.h treewide: replace GPLv2 long form headers with SPDX header 2020-05-06 22:20:57 +00:00
espi.h lib/espi_debug: Add espi_show_slave_peripheral_channel_configuration 2021-04-23 21:20:26 +00:00
fallback.h drivers/pc80/rtc: Clean up some headers 2020-01-07 18:40:02 +00:00
fit.h treewide: replace GPLv2 long form headers with SPDX header 2020-05-06 22:20:57 +00:00
fmap.h src/include: Add missing includes 2020-07-26 21:37:35 +00:00
framebuffer_info.h src: Remove unused <stdbool> 2022-01-19 15:15:50 +00:00
fw_config.h fw_config: Add helper function fw_config_probe_dev 2021-05-24 16:55:27 +00:00
gpio.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
halt.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
imd.h include/imd: Improve API documentation 2020-08-26 07:32:37 +00:00
imd_private.h src: Add missing <cbmem.h> 2021-02-09 15:26:51 +00:00
input-event-codes.h src/include: Drop unneeded empty lines 2020-09-14 07:09:41 +00:00
inttypes.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
ip_checksum.h src/include: Wrap lines at 80 columns 2017-03-13 17:23:37 +01:00
kconfig.h kconfig: Drop IS_ENABLED() macro 2019-06-04 13:33:40 +00:00
lib.h lib: Add __fls() (Find Last Set) 2021-12-13 02:57:07 +00:00
limits.h include/limits.h: Add file (read: borrow from Linux) 2021-06-10 06:57:54 +00:00
list.h lib/list: Add list_append 2021-11-03 08:29:16 +00:00
main_decl.h
memlayout.h memlayout: Store region sizes as separate symbols 2021-02-19 08:39:26 +00:00
memory_info.h src: Remove unused <stdbool> 2022-01-19 15:15:50 +00:00
memrange.h include/memrange.h: Remove repeated word 2021-01-18 07:36:18 +00:00
metadata_hash.h src: Drop "This file is part of the coreboot project" lines 2021-05-10 15:07:33 +00:00
mrc_cache.h mrc_cache: Change mrc_cache_load_current to return size of entry 2020-10-09 05:38:04 +00:00
nhlt.h soc/intel/skylake: Use correct NHLT_PDM_DEV definition 2020-11-24 09:42:14 +00:00
option.h option: Turn CMOS option backend into choice 2021-05-28 11:37:16 +00:00
post.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
program_loading.h prog_loader: Change legacy_romstage_select_and_load() to return cb_err 2022-03-09 17:20:48 +00:00
ramdetect.h src/include/ramdetect.h: Add missing includes 2020-07-25 01:25:57 +00:00
random.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
reg_script.h src/include: Drop unneeded empty lines 2020-09-14 07:09:41 +00:00
region_file.h region_file_update_data_arr: Modify region_file with array of buffers 2020-09-16 16:02:54 +00:00
reset.h reset: Finalize move to new API 2018-10-31 15:29:42 +00:00
rmodule.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
romstage_handoff.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
rtc.h lib/rtc: Add sanity check for time and date 2021-05-30 20:24:13 +00:00
rules.h rules.h, thread.h, lib/cbfs: Add ENV_STAGE_SUPPORTS_COOP 2021-12-15 23:25:32 +00:00
sar.h wifi: Update deny list entry size to uint16_t 2021-09-09 15:01:35 +00:00
sdram_mode.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
smbios.h soc/intel/common: Add DDR5 and LPDDR5 into the SMBIOS table 2021-10-30 18:45:09 +00:00
smmstore.h drivers/smmstore: Implement SMMSTORE version 2 2020-10-22 12:29:47 +00:00
spd.h arch/x86: Refactor the SMBIOS type 17 write function 2021-11-11 09:10:10 +00:00
spd_bin.h spd_bin: Replace get_spd_cbfs_rdev() with spd_cbfs_map() 2021-03-17 08:10:35 +00:00
spd_cache.h src/lib: Add Kconfig option for SPD cache in FMAP 2020-12-14 08:23:41 +00:00
spi-generic.h drivers/spi/spi-generic: document SPI_CNTRLR_DEDUCT_CMD_LEN better 2021-12-15 22:39:21 +00:00
spi_bitbang.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
spi_flash.h drivers: spi_flash: Add Fast Read Dual I/O support 2021-07-15 14:05:34 +00:00
spi_sdcard.h src/include: Add missing includes 2020-07-26 21:37:35 +00:00
stage_cache.h stage_cache: Add resume_from_stage_cache() 2021-01-29 10:53:33 +00:00
stdarg.h create stdio.h and stdarg.h for {,v}snprintf 2020-03-25 23:38:46 +00:00
stdbool.h src/include: Remove unused 'include <stdint.h>' 2020-07-26 20:59:16 +00:00
stddef.h stddef.h: Use compiler macros for built-in integer types 2021-06-10 05:36:30 +00:00
stdint.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
stdio.h create stdio.h and stdarg.h for {,v}snprintf 2020-03-25 23:38:46 +00:00
stdlib.h lib: Add obvious definition for calloc 2021-04-06 06:50:38 +00:00
string.h lib/string: Add standard strstr() function 2020-08-03 05:12:23 +00:00
swab.h Drop ROMCC code and header guards 2019-12-19 03:25:05 +00:00
symbols.h lib/prog_loaders, soc/amd/: Make payload_preload use cbfs_preload 2021-11-16 18:20:31 +00:00
thread.h src: Drop duplicated includes 2022-01-01 14:55:51 +00:00
timer.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
timestamp.h timestamp: Allow timestamp_add to accept a negative number 2022-01-21 22:42:19 +00:00
types.h include/types.h: #include <limits.h> 2021-12-26 09:59:12 +00:00
uuid.h include/uuid.h: Add missing include 2020-05-28 16:20:40 +00:00
vbe.h src: Use 'include <boot/coreboot_tables.h>' when appropriate 2019-10-27 17:48:30 +00:00
version.h ACPI: Correct asl_compiler_revision value 2019-02-21 19:07:31 +00:00
watchdog.h coreboot: Replace all IS_ENABLED(CONFIG_XXX) with CONFIG(XXX) 2019-03-08 08:33:24 +00:00
wrdd.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00