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

diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
index 7ff2f1b..fb42e82 100644
--- a/arch/x86/xen/smp.c
+++ b/arch/x86/xen/smp.c
@@ -136,6 +136,7 @@ void xen_smp_intr_free(unsigned int cpu)
        if (xen_hvm_domain())
                return;
 
+       printk("HHH %s:%d cpu%d irq=%d\n", __FUNCTION__, __LINE__, cpu,
per_cpu(xen_irq_work, cpu).irq);
        if (per_cpu(xen_irq_work, cpu).irq >= 0) {
                unbind_from_irqhandler(per_cpu(xen_irq_work, cpu).irq,
NULL);
                per_cpu(xen_irq_work, cpu).irq = -1;
@@ -217,6 +218,7 @@ int xen_smp_intr_init(unsigned int cpu)
        if (rc < 0)
                goto fail;
        per_cpu(xen_irq_work, cpu).irq = rc;
+        printk("HHH %s:%d cpu%d irq=%d\n", __FUNCTION__, __LINE__, cpu,
rc);
        per_cpu(xen_irq_work, cpu).name = callfunc_name;
 
        if (is_xen_pmu(cpu)) {
@@ -615,6 +617,7 @@ static inline int xen_map_vector(int vector)
                break;
        case IRQ_WORK_VECTOR:
                xen_vector = XEN_IRQ_WORK_VECTOR;
+               printk("HHH %s:%d work interrupt on CPU%d\n",
__FUNCTION__, __LINE__, smp_processor_id());
                break;
 #ifdef CONFIG_X86_64
        case NMI_VECTOR:
diff --git a/drivers/xen/events/events_base.c
b/drivers/xen/events/events_base.c
index 6a53577..c1f16f2 100644
--- a/drivers/xen/events/events_base.c
+++ b/drivers/xen/events/events_base.c
@@ -627,6 +627,7 @@ static void __unbind_from_irq(unsigned int irq)
                        per_cpu(virq_to_irq, cpu)[virq_from_irq(irq)] = -1;
                        break;
                case IRQT_IPI:
+                       printk("HHH %s:%d cpu%d irq=%d ipi_to_irq=%d\n",
__FUNCTION__, __LINE__, cpu, irq, per_cpu(ipi_to_irq,
cpu)[ipi_from_irq(irq)]);
                        per_cpu(ipi_to_irq, cpu)[ipi_from_irq(irq)] = -1;
                        break;
                default:



>
> --
> Sander
>
> On 24/04/17 16:17, Boris Ostrovsky wrote:
>> On 04/24/2017 06:06 AM, Sander Eikelenboom wrote:
>>> Resend: Sorry copy and pasted a wrong mailadress for the xen-devel list.
>>>
>>>
>>> Hi Boris / Juergen,
>>>
>>> This morning i got this dom0 kernel crash (it occurred sporadically
>>> before (during 4.11), but i didn't have serial console enabled at that
>>> time so i had no stacktrace, only sporadic reboots).
>>>
>>> It's running on an AMD phenom X6:
>>> Kernel 4.11.0-rc7 with as latest commit:
>>> 94836ecf1e7378b64d37624fbb81fe48fbd4c772.
>>> Xen-unstable with as latest commit:
>>> 94836ecf1e7378b64d37624fbb81fe48fbd4c772.
>>>
>>> If you need more info please ask, testing will be difficult as i don't
>>> have a clear testcase and
>>> it can also run for days without trouble.
>> Any cpu onlining/offlining during the test?
>>
>> XEN_IRQ_WORK_VECTOR vector is allocated for all PV VCPUs in
>> xen_smp_intr_init() so it's somewhat odd that we fail to find it.
>>
>> -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®.