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

RE: [Xen-devel] [PATCH] fix iommu interrupt setup



It is because in iommu_set_interrupt(), the vector_to_iommu[] is setup after 
request_irq(), while request_irq() will call start_up(), which will need the 
vector_to_iommu[].
So maybe we can setup the vector_to_iommup[] before  request_irq().

Thanks
Yunhong Jiang

Jiang, Yunhong <> wrote:
> Sorry, seems queue_invalidate_wait() has irq disabled also :$
> So there should have other reason for it.
> 
> -- Yunhong Jiang
> 
> xen-devel-bounces@xxxxxxxxxxxxxxxxxxx <> wrote:
>> Allen, this is because the register_lock is not always called
>> with irq disabled. Seems it is called with spin_lock(),
>> instead of spin_lock_irqsave() in queue_invalidate_wait().
>> 
>> But I'm a bit curios why intel_vtd_setup() will be called
>> after queue_invalidate_wait().
>> 
>> Thanks
>> Yunhong Jiang
>> 
>> xen-devel-bounces@xxxxxxxxxxxxxxxxxxx <> wrote:
>>> I'm getting the same bug.
>>> -Alex
>>> 
>>> (XEN) ----[ Xen-3.4-unstable  x86_64  debug=y  Not tainted ]---- (XEN)
>>> CPU: 0 (XEN) RIP:    e008:[<ffff828c8011b62f>] check_lock+0x19/0x4e
>>> (XEN) RFLAGS: 0000000000010046   CONTEXT: hypervisor
>>> (XEN) rax: 0000000000000001   rbx: 0000000000000040   rcx:
>>> 0000000000000001 (XEN) rdx: 0000000000000082   rsi: 0000000000000001  
>>> rdi: 0000000000000044 (XEN) rbp: ffff828c80277c58   rsp: ffff828c80277c58
>>> r8: 0000000000000005 (XEN) r9:  0000000000000001   r10: 0000000000000001 
>>> r11: ffff828c8028e360 (XEN) r12: 0000000000000082   r13: 0000000000000282
>>> r14: 0000000000000090 (XEN) r15: ffff83013bfba430   cr0: 000000008005003b
>>> cr4: 00000000000026f0 (XEN) cr3: 00000000bd47c000   cr2: 0000000000000044
>>> (XEN) ds: 0000   es: 0000   fs: 0000   gs: 0000   ss: 0000 cs: e008
>>> (XEN) Xen stack trace from rsp=ffff828c80277c58:
>>> (XEN)    ffff828c80277c78 ffff828c8011b7aa 0000000000000000
>>> 0000000000000040 (XEN)    ffff828c80277c98 ffff828c8012e223
>>> ffff828c802a1c00 ffff828c802a1c24 (XEN)    ffff828c80277ca8
>>> ffff828c8012e282 ffff828c80277ce8 ffff828c80147e90 (XEN)
>>> ffff828c80277ce8 00000000fffffff4 0000000000000090 ffff828c8012e938 (XEN)
>>> ffff828c801e31cd ffff83013bff1f90 ffff828c80277d28 ffff828c801483be (XEN)
>>> ffff83013bfba430 0000000000000090 ffff83013bff1f90 0000000000004800 (XEN)
>>> ffff83013bff1f90 ffff828c8029d400 ffff828c80277d68 ffff828c8012e5ef (XEN)
>>> ffff828c80277d48 0000000000000003 ffff83013bff1f90 0000000000000282 (XEN)
>>> ffff83013bff16f0 0000000000100000 ffff828c80277d98 ffff828c8012e7a1 (XEN)
>>> 0000000000000003 ffff83013bfba330 ffff828c8020c930 0000000000000020 (XEN)
>>> ffff828c80277de8 ffff828c8012fe48 ffff828c80277dd8 ffff828c8012a2e9 (XEN)
>>> 0000000000000002 000100018020a4c0 0001000100010001 00000000ffffffed (XEN)
>>> ffff828c8022fc08 0000000000000003 ffff828c80277e08 ffff828c8012c008 (XEN)
>>> ffff828c80277e08 ffff828c8022faf8 ffff828c80277f18 ffff828c80223d09 (XEN)
>>> 0000000000000000 0000000000000000 0000000000000000 ffff828c8020f665 (XEN)
>>> ffffffffc0270000 ffff8300bd47cff8 ffff8300bd47dff8 000000000008bf50 (XEN)
>>> 0000000000000000 0000000000000000 0000000000000000 ffff83000008bfc0 (XEN)
>>> ffff83000008bf50 0000000000cc3c00 0000000000000000 0000000000000000 (XEN)
>>> 0000000000000000 0000000000000000 0000000000000000 0000000000000000 (XEN)
>>> 0000000000000000 0000000000000000 0000000800000000 000000010000006e (XEN)
>>> Xen call trace: (XEN)    [<ffff828c8011b62f>] check_lock+0x19/0x4e (XEN)
>>> [<ffff828c8011b7aa>] _spin_lock_irqsave+0x21/0x3f (XEN)
>>> [<ffff828c8012e223>] dma_msi_unmask+0x2a/0x4b (XEN)
>>> [<ffff828c8012e282>] dma_msi_startup+0x9/0x10 (XEN)
>>> [<ffff828c80147e90>] setup_irq_vector+0x73/0x99 (XEN)
>>> [<ffff828c801483be>] request_irq_vector+0x6c/0x9a (XEN)
>>> [<ffff828c8012e5ef>] iommu_set_interrupt+0x97/0x10f (XEN)
>>> [<ffff828c8012e7a1>] init_vtd_hw+0x13a/0x2d1 (XEN) [<ffff828c8012fe48>]
>>> intel_vtd_setup+0x330/0x4bb (XEN)    [<ffff828c8012c008>]
>>> iommu_setup+0x2d/0xf5 (XEN)    [<ffff828c80223d09>]
>>> __start_xen+0x463f/0x4956 (XEN) (XEN) Pagetable walk from
>>> 0000000000000044: (XEN)  L4[0x000] = 000000013bff0063 5555555555555555
>>> (XEN)  L3[0x000] = 000000013bfef063 5555555555555555
>>> (XEN)  L2[0x000] = 000000013bfee063 5555555555555555
>>> (XEN)  L1[0x000] = 0000000000000000 ffffffffffffffff (XEN)
>>> (XEN) ****************************************
>>> (XEN) Panic on CPU 0:
>>> (XEN) FATAL PAGE FAULT
>>> (XEN) [error_code=0000]
>>> (XEN) Faulting linear address: 0000000000000044
>>> (XEN) ****************************************
>>> (XEN)
>>> (XEN) Reboot in five seconds...
>>> (XEN) Resetting with ACPI MEMORY or I/O RESET_REG.
>>> 
>>> _______________________________________________
>>> Xen-devel mailing list
>>> Xen-devel@xxxxxxxxxxxxxxxxxxx
>>> http://lists.xensource.com/xen-devel
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@xxxxxxxxxxxxxxxxxxx
>> http://lists.xensource.com/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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