Re: PPC64 Kernel 2.6.18 + RPM packages [message #13390 is a reply to message #13238] |
Fri, 25 May 2007 12:41 |
dev
Messages: 1693 Registered: September 2005 Location: Moscow
|
Senior Member |
|
|
Christian,
sys_fairsched_chwt() can return ENOENT in the only case:
when fairsched node ID was not found in the list.
but VE0 node is always on the list.
So I guess there is something wrong with syscall args in your case.
Please apply the attached patch to the kernel and vzctl
recompile/reboot and report the output of both.
Thanks,
Kirill
> When, where and what should return "-ENOSYS"?
>
> I rechecked my .config file and I've seen that
> CONFIG_SCHED_VCPU=y
> CONFIG_FAIRSCHED=y
> is already in it. But I cannot find it in the menuconfig. The menu of
> powerpc architecture is a bit different than i386. So perhaps I just
> haven't seen it... where should I find it then?
>
> So what I posted before is perhaps wrong. CONFIG_FAIRSCHED _was set_ in
> .config file. But I got the error "fairsched_chwt: No such file or
> directory".
>
> Mit freundlichen Grüßen / Best Regards
> Christian Kaiser
> --
> IBM Deutschland Entwicklung GmbH
> Open Systems Firmware Development
> mail: ckaiser2@de.ibm.com
>
> IBM Deutschland Entwicklung GmbH
> Vorsitzender des Aufsichtsrats: Martin Jetter
> Geschäftsführung: Herbert Kircher
> Sitz der Gesellschaft: Böblingen
> Registergericht: Amtsgericht Stuttgart, HRB 243294
>
>
>
--- ./kernel/fairsched.c.ve2350 2007-05-24 11:48:18.000000000 +0400
+++ ./kernel/fairsched.c 2007-05-25 16:36:36.000000000 +0400
@@ -618,6 +618,7 @@ static struct fairsched_node *fairsched_
struct fairsched_node *p;
for_each_fairsched_node(p) {
+ printk(" fairsched_find: search %u, node: %d/%u\n", id, p->id, p->id);
if (p->id == id)
return p;
}
@@ -734,9 +735,13 @@ int do_fairsched_chwt(unsigned int id, u
if (weight < 1 || weight > FSCHWEIGHT_MAX)
return -EINVAL;
+ printk("do_fairsched_chwt: node %u, w %u\n", id, weight);
node = fairsched_find(id);
- if (node == NULL)
+ if (node == NULL) {
+ printk("do_fairsched_chwt: ENOENT\n");
return -ENOENT;
+ }
+ printk("do_fairsched_chwt: found\n");
spin_lock_irq(&fairsched_lock);
node->weight = weight;
diff --git a/src/lib/cpu.c b/src/lib/cpu.c
index 947d973..b0b53a7 100644
--- a/src/lib/cpu.c
+++ b/src/lib/cpu.c
@@ -74,7 +74,7 @@ static int set_cpulimit(envid_t veid, un
static int set_cpuweight(envid_t veid, unsigned int cpuweight)
{
-
+ logger(0, 0, "vzctl: fairsched_chwt(%u, %u)", veid, cpuweight);
if (fairsched_chwt(veid, cpuweight)) {
logger(-1, errno, "fairsched_chwt");
return VZ_SETFSHD_ERROR;
|
|
|