On 24/04/17 22:15, Boris Ostrovsky wrote:
> On 04/24/2017 12:10 PM, Sander Eikelenboom wrote:
>> On 24/04/17 17:49, Boris Ostrovsky wrote:
>>> On 04/24/2017 10:20 AM, Sander Eikelenboom wrote:
>>>> Hi Boris,
>>>>
>>>> Nope, not that i am aware of.
>>> If you can keep console while running this, can you add these changes
>>> and see if we ever unbind the work vector (you can even add dump_stack()
>>> in __unbind_from_irq() for good measure)? (I added HHH for easy grepping)
>>>
>>> Also do 'grep -i work /proc/interrupts' so that we know which IRQ the
>>> work interrupt is.
>>>
>>> -boris
>> Hmmm i f*cked up and accidently compiled a tree with "for linus 4.12"
>> pulled in and ran that instead of the vanilla 4.11-rc7 (while not naming
>> it "xen-next" as i normally do.
>> So 4.11-rc7 is most probably fine, sorry for that noise.
>>
>> Since your patch doesn't apply the smp part is changed. Seems the
>> problem somewhere lies in there (Vitaly's patches, general x86 stuff
>> being pulled in to base that on). I can see if i can adapt the patch
>> to for linus 4.12 and retest, instead of waiting for it to be pulled in
>> into Linus his tree in the next merge window.
> 
> This is trivially reproduced on 4.12 branch with
> 
> diff --git a/drivers/xen/sys-hypervisor.c b/drivers/xen/sys-hypervisor.c
> index 84106f9..065728f 100644
> --- a/drivers/xen/sys-hypervisor.c
> +++ b/drivers/xen/sys-hypervisor.c
> @@ -148,7 +148,7 @@ static int __init xen_sysfs_uuid_init(void)
>  }
>  
>  /* xen compilation attributes */
> -
> +void arch_irq_work_raise(void );
>  static ssize_t compiler_show(struct hyp_sysfs_attr *attr, char *buffer)
>  {
>         int ret = -ENOMEM;
> @@ -161,7 +161,7 @@ static ssize_t compiler_show(struct hyp_sysfs_attr
> *attr, char *buffer)
>                         ret = sprintf(buffer, "%s\n", info->compiler);
>                 kfree(info);
>         }
> -
> +      arch_irq_work_raise();
>         return ret;
>  }
> 
> 
> and then (if you manage to boot):
> 
> [root@vm-0238 ~]# grep proc /proc/cpuinfo
> processor       : 0
> [root@vm-0238 ~]#
> [root@vm-0238 ~]# cat /sys/hypervisor/compilation/compiler
> [  502.160472] ------------[ cut here ]------------
> [  502.160491] kernel BUG at drivers/xen/events/events_base.c:1221!
> 
> 
> 
> and the fix is
> 
> diff --git a/arch/x86/xen/smp_pv.c b/arch/x86/xen/smp_pv.c
> index c0e3b96..aae3253 100644
> --- a/arch/x86/xen/smp_pv.c
> +++ b/arch/x86/xen/smp_pv.c
> @@ -249,7 +249,7 @@ static void __init xen_pv_smp_prepare_cpus(unsigned
> int max_cpus)
>  
>         xen_pmu_init(0);
>  
> -       if (xen_smp_intr_init(0))
> +       if (xen_smp_intr_init(0) || xen_smp_intr_init_pv(0))
>                 BUG();
>  
>         if (!alloc_cpumask_var(&xen_cpu_initialized_map, GFP_KERNEL))

Indeed. Can you please send a proper patch with your S-o-b?


Juergen


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

Reply via email to