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();
|
||||
}
|
||||
|
||||
/* 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
|
||||
* 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,
|
||||
unsigned int first_core,
|
||||
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_TSD_package(u32 domain, u32 numprocs, PSD_coord coordtype);
|
||||
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. */
|
||||
acpigen_write_processor_package("PPKG", 0, cores_per_package);
|
||||
|
||||
/* Add a method to notify processor nodes */
|
||||
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();
|
||||
acpigen_write_processor_cnot(cores_per_package);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue