coreboot-kgpe-d16/src
Raul E Rangel 12c0542e6f soc/amd/common/block/espi_util: Work around in-band reset race condition
When performing an in-band reset the host controller and the
peripheral can have mismatched IO configs.

i.e., The eSPI peripheral can be in IO-4 mode while, the
eSPI host will be in IO-1. This results in the peripheral
getting invalid packets and thus not responding. This causes the
NO_RESPONSE status bit to be set and cause eSPI init to fail.

If the peripheral is alerting when we perform an in-band
reset, there is a race condition in espi_send_command.
1) espi_send_command clears the interrupt status.
2) eSPI host controller hardware notices the alert and sends
   a GET_STATUS.
3) espi_send_command writes the in-band reset command.
4) eSPI hardware enqueues the in-band reset until GET_STATUS
   is complete.
5) GET_STATUS fails with NO_RESPONSE and sets the interrupt
   status.
6) eSPI hardware performs in-band reset.
7) espi_send_command checks the status and sees a
   NO_RESPONSE bit.

As a workaround we allow the NO_RESPONSE status code when
we perform an in-band reset.

BUG=b:186135022
TEST=suspend_stress_test and S5->S0 tests on guybrush and zork.

Signed-off-by: Raul E Rangel <rrangel@chromium.org>
Change-Id: I71271377f20eaf29032214be98794e1645d9b70a
Reviewed-on: https://review.coreboot.org/c/coreboot/+/54070
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
Reviewed-by: Rob Barnes <robbarnes@google.com>
2021-05-19 16:26:44 +00:00
..
acpi src/acpi: Add initial support for HMAT 2021-05-14 08:56:59 +00:00
arch option: Introduce `CMOS_LAYOUT_FILE` Kconfig symbol 2021-05-18 11:43:49 +00:00
commonlib commonlib/region: Turn addrspace_32bit into a more official API 2021-04-21 02:06:26 +00:00
console src: Retype option API to use unsigned integers 2021-05-06 14:48:15 +00:00
cpu cpu/x86: Only include smm code if CONFIG_HAVE_SMI_HANDLER=y 2021-05-18 16:54:21 +00:00
device device/device.c: Print bus numbers in decimal 2021-05-11 12:52:30 +00:00
drivers drivers/intel/usb4: Update driver to support Retimer firmware upgrade 2021-05-18 21:58:45 +00:00
ec ec/google/chromeec: Provide EC access for Retimer firmware upgrade 2021-05-18 22:00:22 +00:00
include soc/intel/alderlake: Update CPU and IGD Device IDs 2021-05-14 09:03:01 +00:00
lib cbfs: Increase mcache size defaults 2021-05-14 00:35:46 +00:00
mainboard mb/google/brya/brya0: Manually probe fw_config for DB_LTE 2021-05-19 15:13:32 +00:00
northbridge nb/intel/gm45: Guard even more macro parameters 2021-05-16 21:53:36 +00:00
security vboot/secdata_mock: Make v0 kernel secdata context 2021-05-18 15:30:47 +00:00
soc soc/amd/common/block/espi_util: Work around in-band reset race condition 2021-05-19 16:26:44 +00:00
southbridge sb/intel: Drop outdated SMBus I/O BAR comment 2021-05-16 22:09:14 +00:00
superio src: Retype option API to use unsigned integers 2021-05-06 14:48:15 +00:00
vendorcode vendorcode/intel/fsp: Add Alder Lake FSP headers for FSP v2162_00 2021-05-16 22:17:26 +00:00
Kconfig option: Introduce `CMOS_LAYOUT_FILE` Kconfig symbol 2021-05-18 11:43:49 +00:00