T. Eichstädt
2009-Oct-23 22:02 UTC
[Xen-users] [PATCH] RHEL/CentOS 5, Xen 3.4.1 and Power Management
Dear all, Hypervisor-based PM is not working under CentOS 5 with its original kernel. I had some difficulties to get at least Domain0 based cpufreq working under the CentOS 5 Kernel and Xen 3.4.1. There are problems with the detection of the corrrect Processor ID because the interface of Xen changed a little bit. With the following patch power management in the combination of CentOS 5 Kernel and Xen 3.4.1 is working again (It is mainly a revert of http://xen.markmail.org/message/ptnjmjaobb3bsutp?q=cpu_id.phys_id). Hope somebody finds this useful. Best regards Thimo Eichstädt !!! ATTENTION, PATCH IS ONLY MEANT TO GET PM WORKING WITH CENTOS 5 KERNEL !!! diff -uNr xen-3.4.1.orig/xen/arch/x86/domain.c xen-3.4.1/xen/arch/x86/domain.c --- xen-3.4.1.orig/xen/arch/x86/domain.c 2009-08-06 15:57:27.000000000 +0200 +++ xen-3.4.1/xen/arch/x86/domain.c 2009-09-07 22:15:33.000000000 +0200 @@ -911,9 +911,8 @@ if ( !v->domain->is_pinned ) break; - cpu_id.phys_id - (uint64_t)x86_cpu_to_apicid[v->vcpu_id] | - ((uint64_t)acpi_get_processor_id(v->vcpu_id) << 32); + cpu_id.phys_id = (x86_cpu_to_apicid[v->vcpu_id] | + (acpi_get_processor_id(v->vcpu_id) << 8)); rc = -EFAULT; if ( copy_to_guest(arg, &cpu_id, 1) ) diff -uNr xen-3.4.1.orig/xen/common/domain.c xen-3.4.1/xen/common/domain.c --- xen-3.4.1.orig/xen/common/domain.c 2009-08-06 15:57:27.000000000 +0200 +++ xen-3.4.1/xen/common/domain.c 2009-09-07 22:14:13.000000000 +0200 @@ -41,7 +41,7 @@ boolean_param("dom0_vcpus_pin", opt_dom0_vcpus_pin); /* set xen as default cpufreq */ -enum cpufreq_controller cpufreq_controller = FREQCTL_xen; +enum cpufreq_controller cpufreq_controller = FREQCTL_dom0_kernel; static void __init setup_cpufreq_option(char *str) { _______________________________________________ Xen-users mailing list Xen-users@lists.xensource.com http://lists.xensource.com/xen-users
Stephen Spector
2009-Oct-23 23:57 UTC
[Xen-devel] RE: [Xen-users] [PATCH] RHEL/CentOS 5, Xen 3.4.1 and Power Management
Forwarded to xen-devel mailing list for review. Thanks for the Patch. Stephen Spector -----Original Message----- From: xen-users-bounces@lists.xensource.com [mailto:xen-users-bounces@lists.xensource.com] On Behalf Of "T. Eichstädt" Sent: Friday, October 23, 2009 6:03 PM To: xen-users@lists.xensource.com Subject: [Xen-users] [PATCH] RHEL/CentOS 5, Xen 3.4.1 and Power Management Dear all, Hypervisor-based PM is not working under CentOS 5 with its original kernel. I had some difficulties to get at least Domain0 based cpufreq working under the CentOS 5 Kernel and Xen 3.4.1. There are problems with the detection of the corrrect Processor ID because the interface of Xen changed a little bit. With the following patch power management in the combination of CentOS 5 Kernel and Xen 3.4.1 is working again (It is mainly a revert of http://xen.markmail.org/message/ptnjmjaobb3bsutp?q=cpu_id.phys_id). Hope somebody finds this useful. Best regards Thimo Eichstädt !!! ATTENTION, PATCH IS ONLY MEANT TO GET PM WORKING WITH CENTOS 5 KERNEL !!! diff -uNr xen-3.4.1.orig/xen/arch/x86/domain.c xen-3.4.1/xen/arch/x86/domain.c --- xen-3.4.1.orig/xen/arch/x86/domain.c 2009-08-06 15:57:27.000000000 +0200 +++ xen-3.4.1/xen/arch/x86/domain.c 2009-09-07 22:15:33.000000000 +0200 @@ -911,9 +911,8 @@ if ( !v->domain->is_pinned ) break; - cpu_id.phys_id - (uint64_t)x86_cpu_to_apicid[v->vcpu_id] | - ((uint64_t)acpi_get_processor_id(v->vcpu_id) << 32); + cpu_id.phys_id = (x86_cpu_to_apicid[v->vcpu_id] | + (acpi_get_processor_id(v->vcpu_id) << 8)); rc = -EFAULT; if ( copy_to_guest(arg, &cpu_id, 1) ) diff -uNr xen-3.4.1.orig/xen/common/domain.c xen-3.4.1/xen/common/domain.c --- xen-3.4.1.orig/xen/common/domain.c 2009-08-06 15:57:27.000000000 +0200 +++ xen-3.4.1/xen/common/domain.c 2009-09-07 22:14:13.000000000 +0200 @@ -41,7 +41,7 @@ boolean_param("dom0_vcpus_pin", opt_dom0_vcpus_pin); /* set xen as default cpufreq */ -enum cpufreq_controller cpufreq_controller = FREQCTL_xen; +enum cpufreq_controller cpufreq_controller = FREQCTL_dom0_kernel; static void __init setup_cpufreq_option(char *str) { _______________________________________________ Xen-users mailing list Xen-users@lists.xensource.com http://lists.xensource.com/xen-users _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel