xen-users
RE: [Xen-users] Setting CPU (core) frequency from dom0
No, at least for all Intel platforms I've tried by far.
Maybe AMD people can better answer your question. One suggestion to you is to
try native linux first (both latest version and 2.6.18 as dom0 is based on
2.6.18). It's possible that dom0 fails to catch up some newer linux fix or your
BIOS setting is incorrect. Or if possible you can also try Intel
platform to see whether same thing also happens.
Thanks,
Kevin
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
|
|
|