Hi Kan,
I have tried your patch with 2 vcpus assigned to Xen0. It can work with several
times retry. When failed times, it just reported: device or resource busy.
Best Regards,
Yongkang (Kangkang) 永康
>-----Original Message-----
>From: Masaki Kanno [mailto:kanno.masaki@xxxxxxxxxxxxxx]
>Sent: 2006年8月28日 17:35
>To: You, Yongkang; xen-devel; Keir.Fraser@xxxxxxxxxxxx
>Cc: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
>Subject: Re: [Xen-ia64-devel] vcpu-pin bug to dom0 ?
>
>Hi Yongkang,
>
>>Hi all,
>>
>>I find a strange issue that if I only assign 1 or 2 vcpus to dom0, I can
>>not use vcpu-pin to pin the No. 0 vcpu. It will report: "Invalid argument".
>> But it works, if I let Xen0 see all vcpus when booting.
>>
>>For example, in IA32, set (dom0-cpus 1)
>>After Xen0 boot up, "xm vcpu-p 0 0 0" will see errors.
>>If setting (dom0-cpus 0), above command works.
>>
>>In IA64, set dom0_max_vcpus=2 (totally have 16 vcpus)
>>After Xen0 boot up, "xm vcpu-p 0 0 0" will see errors.
>>But "xm vcpu-p 0 1 0" works.
>>
>
>I think that you can solve this problem by applying the following
>patch, and inputting "xm vcpu-pin 0 0 0" from two consoles at the
>same time... Need many retry :-)
>
>diff -r 5b9ff5e8653a xen/common/domctl.c
>--- a/xen/common/domctl.c Sun Aug 27 06:56:01 2006 +0100
>+++ b/xen/common/domctl.c Mon Aug 28 18:01:28 2006 +0900
>@@ -380,13 +380,6 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc
>
> if ( op->cmd == XEN_DOMCTL_setvcpuaffinity )
> {
>- if ( v == current )
>- {
>- ret = -EINVAL;
>- put_domain(d);
>- break;
>- }
>-
> xenctl_cpumap_to_cpumask(
> &new_affinity, &op->u.vcpuaffinity.cpumap);
> ret = vcpu_set_affinity(v, &new_affinity);
>
>
>But, if Domain-0 has one virtual CPU, this problem cannot be solved
>even if applying this patch. If you are using CREDIT scheduler,
>'xm vcpu-pin 0 0 0' makes an error by the following line.
>
>
>static int
>csched_vcpu_set_affinity(struct vcpu *vc, cpumask_t *affinity)
>{
> unsigned long flags;
> int lcpu;
>
> if ( vc == current )
> {
> /* No locking needed but also can't move on the spot... */
> if ( !cpu_isset(vc->processor, *affinity) )
> return -EBUSY; <---- This!
>
> vc->cpu_affinity = *affinity;
> }
>
>
>Hi Keir,
>Do you have good ideas to solve this problem?
>
>
>Best regards,
> Kan
>
>>Best Regards,
>>Yongkang (Kangkang)
>>
>>_______________________________________________
>>Xen-ia64-devel mailing list
>>Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
>>http://lists.xensource.com/xen-ia64-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|