diff options
author | Felix Held <felix-coreboot@felixheld.de> | 2023-02-16 19:38:49 +0100 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2023-05-13 00:14:32 +0000 |
commit | c391bff443c7fc5db0fc8c470952d5a3387b1166 (patch) | |
tree | 2069285b3ac96c148e0721aefe75becacc6bd59d /src/northbridge | |
parent | 0a2c9d7913978dfc82f14e26dded7fa1b89f47d1 (diff) |
cpu,nb/amd/pi/00730F01: dynamically generate CPU devices
Instead of having the maximum number of possible CPU objects defined in
the DSDT, dynamically generate the number of needed CPU devices in the
SSDT like it's done on all other x86 platforms in coreboot.
TEST=APU2 still boots and Linux doesn't show any ACPI errors with this
patch applied and it prints "ACPI: \_SB_.P000: Found 2 idle states".
Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Change-Id: Id6f057ad130a27b371722fa66ce0a982afc43c6c
Reviewed-on: https://review.coreboot.org/c/coreboot/+/73073
Reviewed-by: Martin Roth <martin.roth@amd.corp-partner.google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Diffstat (limited to 'src/northbridge')
-rw-r--r-- | src/northbridge/amd/pi/00730F01/northbridge.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/northbridge/amd/pi/00730F01/northbridge.c b/src/northbridge/amd/pi/00730F01/northbridge.c index 46610c51e2..355820a815 100644 --- a/src/northbridge/amd/pi/00730F01/northbridge.c +++ b/src/northbridge/amd/pi/00730F01/northbridge.c @@ -869,10 +869,25 @@ void mp_init_cpus(struct bus *cpu_bus) MTRR_TYPE_WRPROT); } +void generate_cpu_entries(const struct device *device) +{ + int cpu; + const int cores = get_cpu_count(); + + printk(BIOS_DEBUG, "ACPI \\_SB report %d core(s)\n", cores); + + /* Generate \_SB.Pxxx */ + for (cpu = 0; cpu < cores; cpu++) { + acpigen_write_processor_device(cpu); + acpigen_write_processor_device_end(); + } +} + static struct device_operations cpu_bus_ops = { - .read_resources = noop_read_resources, - .set_resources = noop_set_resources, - .init = mp_cpu_bus_init, + .read_resources = noop_read_resources, + .set_resources = noop_set_resources, + .init = mp_cpu_bus_init, + .acpi_fill_ssdt = generate_cpu_entries, }; static void root_complex_enable_dev(struct device *dev) |