xen-users
Re: [Xen-users] Setting CPU (core) frequency from dom0
I did some additional poking around and figure out that the failure I am experiencing (no sysfs interface for cpufreq) is because the call to powernow_k8_cpu_init_acpi() in powernowk8_cpu_init() is failing (returning a value != 0) and I have more than 1 CPU. When I enabled debugging, the system printed the following error:
powernow-k8: Found 32 Quad-Core AMD Opteron(tm) Processor 8356 processors (version 2.20.00) cpufreq-core: trying to register driver powernow-k8 cpufreq-core: adding CPU 0
powernow-k8: Your BIOS does not provide _PSS objects. PowerNow! does not work on SMP systems without _PSS objects. Complain to your BIOS vendor. cpufreq-core: initialization failed cpufreq-core: adding CPU 1
powernow-k8: Your BIOS does not provide _PSS objects. PowerNow! does not work on SMP systems without _PSS objects. Complain to your BIOS vendor. cpufreq-core: initialization failed . .
.
And continues to print this for all 32 cores. After this it prints the following message:
cpufreq-core: initialization failed cpufreq-core: no CPU initialized for driver powernow-k8
cpufreq-core: unregistering CPU 0 cpufreq-core: unregistering CPU 1 . . . cpufreq-core: unregistering CPU 31
The code gets a bit cryptic, but it seems to me that the failure may be due to the code not properly recognizing my Barcelona processors.check_supported_cpu() is probably failing to set cpu_family to CPU_HW_PSTATE, although I have not yet confirmed that this is the case.
Have you seen this type of problem recently?
Thank you,
Alberto
On Fri, Nov 21, 2008 at 8:47 AM, Alberto Munoz <ajmunoz@xxxxxxxxxx> wrote:
Hi Kevin,
On Thu, Nov 20, 2008 at 7:02 PM, Tian, Kevin <kevin.tian@xxxxxxxxx> wrote:
ETA can be in one or two weeks, and now coding is close to
end (by Jinsong). This patch sets will cover many control bits besides
allowing user to change freq as I said earlier.
Excellent! How do I find out when the patch has been made available?
For the code you
mentioned, it's one bug since as you cited that return-0 means success. However
it looks that this warning doesn't hurt the
behavior:
if
(!cpufreq_register_notifier(&time_cpufreq_notifier_block,
CPUFREQ_TRANSITION_NOTIFIER))
{
printk(KERN_ERR "failed to set up cpufreq
notifier\n");
return -ENODEV; }
return
0;
Notifier is registered successfully and there's no code
to reverse the effect even when -ENODEV is returned. :-)
Yes, I figured that out yesterday. Other than printing the error, the system does nothing with the -ENODEV return. Still, I am not getting a sysfs interface for cpufreq and I haven't been able to figure out why.
BTW in xen3.2, there's
no PROCESSOR_EXTERNAL_CONTROL.
In case this was not clear, I am trying to use method A (cpufreq=dom0-kernel) with Xen 3.3 (not 3.2). Does that not work in Xen 3.3?
Also, do you happen to know of a place where I can get a list of what needs to be set up in order to get this frequency scaling to work. I am pretty sure that my problem with not getting the sysfs interface for cpufreq (it is available for other things) is related to something I am missing in the configuration. So far, what I have done (for method A) is:
- Set the option cpufreq=dom0-kernel as an option to the Xen hypervisor (in grub)
- Disable PROCESSOR_EXTERNAL_CONTROL in drivers/acpi/Kconfig (for dom0)
- Enable CONFIG_CPU_FREQ for dom0 (I did this from arch/x86_64/Kconfig)
Perhaps there is a BIOS setting for the CPU that I am unaware of (my machine is using Barcelona CPUs)?
Thank you,
Alberto
Thanks,
Kevin
Hi Kevin, Thank you very much for the reply. PLease
see comments below. Alberto
On Wed, Nov 19, 2008 at 7:05 PM, Tian, Kevin <kevin.tian@xxxxxxxxx>
wrote:
Your
description is basically correct. Do you want to control cpu frequency from
dom0 user level, or just try cpufreq governor in dom0?
I would like to control frequency from dom0. I want to arbitrarily
set the CPU frequency to a value and have it stay there (regardless
of the load on that CPU) until I change it.
For the
former, we're
currently adding more flexibility to xen cpufreq (such as user space
governor) and control options to xenpm (such as manually changing freq),
which is expected to reach xen upstream soon.
Yes, I thik this is what I need (ability to manually change
frequency). Do you have an ETA (estimated time of arrival) for that
functionality?
For the
latter, it's suboptimal with limitations which is why xen cpufreq is
develeoped. You may manually disable PROCESSOR_EXTERNAL_CONTROL in
drivers/acpi/Kconfig to rebuild dom0 kernel for mode
A.
OK. I will do that.
By the way, I have been running onto
an error when booting (in mode A). The function
cpufreq_time_setup() in linux-2.6.18-xen.hg/arch/i386/kernel/time-xen.c is
printing the following message during boot (and returning -ENODEV to its
caller):
failed to set up cpufreq notifier
Further examination of the code shows
that this happens when notifier_chain_register() in
linux-2.6.18-xen.hg/kernel/sys.c returns 0. The problem is that in the code I
have, that function ALWAYS returns 0. The code for that function is as
follows:
static int notifier_chain_register(struct notifier_block
**nl, struct notifier_block
*n) { while ((*nl) != NULL) {
if (n->priority >
(*nl)->priority)
break; nl =
&((*nl)->next); }
n->next = *nl; rcu_assign_pointer(*nl,
n); return 0; }
think (but are not 100% sure
yet) that as a result of this error, dom0 is not creating a cpufreq /sys
interface (i.e
Do you happen to
know what may be going on? perhaps I am just misreading the code? or perhaps
not disabling PROCESSOR_EXTERNAL_CONTROL is what is causing this behavior? I will run
some experiments on this last thing today.
Thanks
again,
Alberto
Thanks,
Kevin
Hello everyone, I am running some experiments that
require changing the frequency of a CPU in a SunFire machine (32-core quad
socket AMD Barcelona). For what I have found (bits and pieces but
not a comprehensive description), there are two meachisms for controlling
core (most probably socket) frequency in Xen: A- The older
(xen-3.2.1) mechnism through dom0 (option cpufreq=dom0-kernel), which for
what I gather uses a module in dom0 (cpufreqd?) that allows one to set cpu
frequency. B- The newer (xen-3.3), which has moved the governor to
the hypervisor (option cpufreq=xen), which other than a utility to read
processor P and C states (xenpm) does not (yet) allow user (dom0) control
of CPU frequency. My first question is whetherot what I have
written above is accurate. My second question is where can I find detailed
information on how to set up my system to make use of A above and be able
to set cpu frequency "manually" from Dom0 (assuming that is still possible
in Xen 3.3). I am running the latest testing version of Xen 3.3
(about a week old). Any information would be greatly
appreciated. Thank
you, Alberto _______________________________________________ Xen-users
mailing list Xen-users@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-users
_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users
|
|
|