[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Resend: Linux 4.11-rc7: kernel BUG at drivers/xen/events/events_base.c:1221



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))


-boris
...


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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.