Konrad Rzeszutek Wilk
2013-Mar-22 13:58 UTC
Regression - Xen ACPI CPU hotplug processor causes the Xen ACPI P and C-states to stop working.
The reason is that the Xen CPU hotplug (xen-acpi-cpuhotplug.c)
registers itself as the "processor" type object. That means the
generic processor (processor_driver.c) stops working and it does
not call (acpi_processor_add) which populates the
per_cpu(processors, pr->id) = pr;
structure. Previous to the population (acpi_processor_add) also calls
''acpi_processor_get_info'' which does the job of finding the
C-states and
figuring out PBLK address and all of that ends up in the ''pr''
structure.
The ''processors->pr'' is then used by Xen ACPI Processor
(the one that
uploads C and P states to the hypervisor) to gather the data. Since it
is NULL, it skips the gathering of _PSD, _PSS, _PCT, etc and we never
end up uploading said data.
The end is that enabling the CONFIG_XEN_STUB means that xen-acpi-processor
is not working anymore.
This temporary patch:
diff --git a/drivers/xen/Kconfig b/drivers/xen/Kconfig
index 5a32232..67af155 100644
--- a/drivers/xen/Kconfig
+++ b/drivers/xen/Kconfig
@@ -182,7 +182,7 @@ config XEN_PRIVCMD
config XEN_STUB
bool "Xen stub drivers"
- depends on XEN && X86_64
+ depends on XEN && X86_64 && BROKEN
default n
help
Allow kernel to install stub drivers, to reserve space for Xen drivers,
fixes the regression, but this problem needs to be fixed long-term.