Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

xen/acpi: Workaround broken BIOSes exporting non-existing C-states.

We did a similar check for the P-states but did not do it for
the C-states. What we want to do is ignore cases where the DSDT
has definition for sixteen CPUs, but the machine only has eight
CPUs and we get:
xen-acpi-processor: (CX): Hypervisor error (-22) for ACPI CPU14

Reported-by: Tobias Geiger <tobias.geiger@vido.info>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>

+4 -1
+4 -1
drivers/xen/xen-acpi-processor.c
··· 128 128 pr_debug(" C%d: %s %d uS\n", 129 129 cx->type, cx->desc, (u32)cx->latency); 130 130 } 131 - } else 131 + } else if (ret != -EINVAL) 132 + /* EINVAL means the ACPI ID is incorrect - meaning the ACPI 133 + * table is referencing a non-existing CPU - which can happen 134 + * with broken ACPI tables. */ 132 135 pr_err(DRV_NAME "(CX): Hypervisor error (%d) for ACPI CPU%u\n", 133 136 ret, _pr->acpi_id); 134 137