arch/x86/acpigen.c: Add a method to notify all CPU cores
Change-Id: If8b07fdcec51c344a82309d4af3b6127ad758baf Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/29895 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
This commit is contained in:
parent
6df3b64c77
commit
8f05527485
|
@ -369,6 +369,23 @@ void acpigen_write_processor_package(const char *const name,
|
||||||
acpigen_pop_len();
|
acpigen_pop_len();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Method to notify all CPU cores */
|
||||||
|
void acpigen_write_processor_cnot(const unsigned int number_of_cores)
|
||||||
|
{
|
||||||
|
int core_id;
|
||||||
|
|
||||||
|
acpigen_write_method("\\_PR.CNOT", 1);
|
||||||
|
for (core_id = 0; core_id < number_of_cores; core_id++) {
|
||||||
|
char buffer[DEVICE_PATH_MAX];
|
||||||
|
snprintf(buffer, sizeof(buffer), CONFIG_ACPI_CPU_STRING,
|
||||||
|
core_id);
|
||||||
|
acpigen_emit_byte(NOTIFY_OP);
|
||||||
|
acpigen_emit_namestring(buffer);
|
||||||
|
acpigen_emit_byte(ARG0_OP);
|
||||||
|
}
|
||||||
|
acpigen_pop_len();
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generate ACPI AML code for OperationRegion
|
* Generate ACPI AML code for OperationRegion
|
||||||
* Arg0: Pointer to struct opregion opreg = OPREGION(rname, space, offset, len)
|
* Arg0: Pointer to struct opregion opreg = OPREGION(rname, space, offset, len)
|
||||||
|
|
|
@ -277,6 +277,7 @@ void acpigen_write_processor(u8 cpuindex, u32 pblock_addr, u8 pblock_len);
|
||||||
void acpigen_write_processor_package(const char *name,
|
void acpigen_write_processor_package(const char *name,
|
||||||
unsigned int first_core,
|
unsigned int first_core,
|
||||||
unsigned int core_count);
|
unsigned int core_count);
|
||||||
|
void acpigen_write_processor_cnot(const unsigned int number_of_cores);
|
||||||
void acpigen_write_TSS_package(int entries, acpi_tstate_t *tstate_list);
|
void acpigen_write_TSS_package(int entries, acpi_tstate_t *tstate_list);
|
||||||
void acpigen_write_TSD_package(u32 domain, u32 numprocs, PSD_coord coordtype);
|
void acpigen_write_TSD_package(u32 domain, u32 numprocs, PSD_coord coordtype);
|
||||||
void acpigen_write_mem32fixed(int readwrite, u32 base, u32 size);
|
void acpigen_write_mem32fixed(int readwrite, u32 base, u32 size);
|
||||||
|
|
|
@ -166,15 +166,5 @@ void generate_cpu_entries(struct device *device)
|
||||||
of the first and only package. */
|
of the first and only package. */
|
||||||
acpigen_write_processor_package("PPKG", 0, cores_per_package);
|
acpigen_write_processor_package("PPKG", 0, cores_per_package);
|
||||||
|
|
||||||
/* Add a method to notify processor nodes */
|
acpigen_write_processor_cnot(cores_per_package);
|
||||||
acpigen_write_method("\\_PR.CNOT", 1);
|
|
||||||
for (coreID = 0; coreID < cores_per_package; coreID++) {
|
|
||||||
char buffer[DEVICE_PATH_MAX];
|
|
||||||
snprintf(buffer, sizeof(buffer), "\\_PR.CP%c%c",
|
|
||||||
'0' + coreID / 10, '0' + coreID % 10);
|
|
||||||
acpigen_emit_byte(NOTIFY_OP);
|
|
||||||
acpigen_emit_namestring(buffer);
|
|
||||||
acpigen_emit_byte(ARG0_OP);
|
|
||||||
}
|
|
||||||
acpigen_pop_len();
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue