[coreboot-gerrit] Change in coreboot[master]: amd/stoneyridge: Change ACPI _PR.CPxx to _PR.Pxxx
Marc Jones (Code Review)
gerrit at coreboot.org
Thu Aug 24 00:51:09 CEST 2017
Marc Jones has uploaded this change for review. ( https://review.coreboot.org/21165
Change subject: amd/stoneyridge: Change ACPI _PR.CPxx to _PR.Pxxx
......................................................................
amd/stoneyridge: Change ACPI _PR.CPxx to _PR.Pxxx
This is a bug introduced by this commit:
stoneyridge: Fix CPU ASL \_PR table [commit I870f81]
The following error is found in dmesg
ACPI Error: [\_PR_.P000] Namespace lookup failure, AE_NOT_FOUND...
ACPI Exception: AE_NOT_FOUND, During name lookup/catalog...
ACPI Exception: AE_NOT_FOUND, (SSDT:AGESA ) while loading table...
ACPI Error: 1 table load failures, 3 successful...
...
acpi-cpufreq: overriding BIOS provided _PSD data
And, "ls -la /sys/devices/system/cpu/cpufreq/" doesn't work
The cause is that the Pstate SSDT table generated by AGESA expects CPU
variables \_PR.Pxxx, not \_PR.CPxx as generated by coreboot. Use an
AGESA specifc function to set Pxxx.
BRANCH=none
BUG=b:64885241
TEST= Check dmeg and ls -la /sys/devices/system/cpu/cpufreq/
Change-Id: I4929f9a1c39705c6df9d965c8d030f4d1f0b5e5f
Signed-off-by: Marc Jones <marcj303 at gmail.com>
---
M src/soc/amd/stoneyridge/acpi.c
1 file changed, 28 insertions(+), 4 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/65/21165/1
diff --git a/src/soc/amd/stoneyridge/acpi.c b/src/soc/amd/stoneyridge/acpi.c
index 9788a91..ed84d32 100644
--- a/src/soc/amd/stoneyridge/acpi.c
+++ b/src/soc/amd/stoneyridge/acpi.c
@@ -232,6 +232,30 @@
header->checksum = acpi_checksum((void *)fadt, sizeof(acpi_fadt_t));
}
+
+/**
+ * The AMD AGESA SSDT Pstate table expects Processor devices labeled \_PR.Pxxx,
+ * not _PR.CPxx, as the generic write acpigen_write_processor() generates.
+ */
+static void agesa_acpigen_write_processor(u8 cpuindex, u32 pblock_addr,
+ u8 pblock_len)
+{
+/*
+ Processor (\_PR.CPUcpuindex, cpuindex, pblock_addr, pblock_len)
+ {
+*/
+ char pscope[16];
+ acpigen_emit_ext_op(PROCESSOR_OP);
+ acpigen_write_len_f();
+
+ snprintf(pscope, sizeof(pscope),
+ "\\_PR.P%03d", (unsigned int) cpuindex);
+ acpigen_emit_namestring(pscope);
+ acpigen_emit_byte(cpuindex);
+ acpigen_emit_dword(pblock_addr);
+ acpigen_emit_byte(pblock_len);
+}
+
void generate_cpu_entries(device_t device)
{
int cores, cpu, plen = 6;
@@ -245,15 +269,15 @@
printk(BIOS_DEBUG, "ACPI \\_PR report %d core(s)\n", cores);
- /* Generate BSP \_PR.CPU0 */
- acpigen_write_processor(0, pcontrol_blk, plen);
+ /* Generate BSP \_PR.P000 */
+ agesa_acpigen_write_processor(0, pcontrol_blk, plen);
acpigen_pop_len();
- /* Generate AP \_PR.CPUx */
+ /* Generate AP \_PR.Pxxx */
pcontrol_blk = 0;
plen = 0;
for (cpu = 1; cpu < cores; cpu++) {
- acpigen_write_processor(cpu, pcontrol_blk, 0);
+ agesa_acpigen_write_processor(cpu, pcontrol_blk, 0);
acpigen_pop_len();
}
}
--
To view, visit https://review.coreboot.org/21165
To unsubscribe, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4929f9a1c39705c6df9d965c8d030f4d1f0b5e5f
Gerrit-Change-Number: 21165
Gerrit-PatchSet: 1
Gerrit-Owner: Marc Jones <marc at marcjonesconsulting.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20170823/92b7b0cb/attachment.html>
More information about the coreboot-gerrit
mailing list