diff options
author | Simon Glass <sjg@chromium.org> | 2020-09-22 12:45:31 -0600 |
---|---|---|
committer | Bin Meng <bmeng.cn@gmail.com> | 2020-09-25 11:27:23 +0800 |
commit | 4ff3591988a4aefad7bafc9a2ee8701cccf03d74 (patch) | |
tree | 5d8a558d6785fbca65ecc4b7073d553ec04ca1e7 /arch | |
parent | 26c3d3d7d598ec3421cf0573df0c0d159d6183c0 (diff) |
x86: Correct handling of MADT table CPUs
At present if hyperthreading is disabled the CPU numbering is not
sequential. Fix this.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/lib/acpi_table.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/x86/lib/acpi_table.c b/arch/x86/lib/acpi_table.c index 86a9a35cb2..5876355afe 100644 --- a/arch/x86/lib/acpi_table.c +++ b/arch/x86/lib/acpi_table.c @@ -66,14 +66,17 @@ int acpi_create_madt_lapics(u32 current) { struct udevice *dev; int total_length = 0; + int cpu_num = 0; for (uclass_find_first_device(UCLASS_CPU, &dev); dev; uclass_find_next_device(&dev)) { struct cpu_platdata *plat = dev_get_parent_platdata(dev); - int length = acpi_create_madt_lapic( - (struct acpi_madt_lapic *)current, - plat->cpu_id, plat->cpu_id); + int length; + + length = acpi_create_madt_lapic( + (struct acpi_madt_lapic *)current, cpu_num++, + plat->cpu_id); current += length; total_length += length; } |