summaryrefslogtreecommitdiff
path: root/3rdparty/opensbi
diff options
context:
space:
mode:
authorJeremy Compostella <jeremy.compostella@intel.com>2023-09-01 16:17:51 -0700
committerSubrata Banik <subratabanik@google.com>2023-09-12 16:08:57 +0000
commitba7a9eefcf4e571bc73d4be1141f676fc5547057 (patch)
tree15c15536bac498a1229465ef3df85e34d817b26a /3rdparty/opensbi
parent2a6a79c70657435880be7f00e48debdd559b91b5 (diff)
soc/intel/common: Fix invalid MADT entries creation
commit f8ac3dda02f22ebf857efb5b845db97f00598f7d ("soc/intel/common: Order the CPUs based on their APIC IDs") sort algorithnm walks all the `cpu_info' entries without discarding empty ones. Since `cpu_info' is not initialized, the data that is used is undefined and it generally results in the creation of invalid `Local x2APIC' entries in the MADT ("APIC") ACPI table. Depending on the X2APIC ID value the Linux kernel behavior changes (cf. arch/x86/kernel/acpi/boot.c::acpi_register_lapic()): 1. If (int)ID >= MAX_LOCAL_APIC (32768), the Linux kernel discards the entry with the "skipped apicid that is too big" INFO level message. 2. If (int)ID < MAX_LOCAL_APIC (32768) (including negative) this data is taken into account and it can lead to undesirable behavior such as core being disabled as (cf. "native_cpu_up: bad cpu" ERROR kernel message). TEST=Verified the MADT does not contain any invalid entries on rex. Change-Id: I19c7aa51f232bf48201bd6d28f108e9120a21f7e Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/77615 Reviewed-by: Bora Guvendik <bora.guvendik@intel.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Wonkyu Kim <wonkyu.kim@intel.com>
Diffstat (limited to '3rdparty/opensbi')
0 files changed, 0 insertions, 0 deletions