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

[Xen-devel] Re: [RFC PATCH linux-2.6.18-xen] pciback: clean up (MSI-X vec, entrynr) list when resetting PCI device



(Perhaps it's best to write a separate mail about this.)

On 06/01/11 12:05, Laszlo Ersek wrote:
> Hi,
> 
> this is more of an RFC than a patch now for linux-2.6.18-xen. Describing the 
> situation captured in RHBZ#688673, in a nutshell:
> 
> - let's say we have an Intel 82576 card (igb),
> - the card exports virtual functions (igbvf),
> - one virtual function is passed through to a PV guest,
> - the igbvf driver, co-operating with pcifront, pciback, and the hypervisor, 
> sets up three MSI-X vectors for the virtual function PCI device,
> - when the domU is shut down, the MSI-X vectors are "leaked" in dom0, because 
> nobody ever reaches dom0's pci_disable_msix() / msi_remove_pci_irq_vectors() 
> during shutdown,
> - therefore configuration of the VF during the next boot of such a guest 
> doesn't succeed (dom0 thinks, based on its stale list, that MSI-X vectors are 
> already allocated/mapped for the device)

I tried to install a Fedora 15 PV guest as well (the host/hv was RHEL-5 
kernel-xen, -264 build). Surprisingly, when the igbvf driver called 
pci_enable_msix() in the PV guest at initialization time, it bugged out:

$ addr2line -p -f -i -e 
/usr/lib/debug/lib/modules/2.6.38.6-26.rc1.fc15.x86_64/vmlinux 
<<<ffffffff8125658d
readl at 
/usr/src/debug/kernel-2.6.38.fc15/linux-2.6.38.x86_64/arch/x86/include/asm/io.h:58
 (inlined by) msix_program_entries at 
/usr/src/debug/kernel-2.6.38.fc15/linux-2.6.38.x86_64/drivers/pci/msi.c:527
 (inlined by) msix_capability_init at 
/usr/src/debug/kernel-2.6.38.fc15/linux-2.6.38.x86_64/drivers/pci/msi.c:578
 (inlined by) pci_enable_msix at 
/usr/src/debug/kernel-2.6.38.fc15/linux-2.6.38.x86_64/drivers/pci/msi.c:806
 (inlined by) pci_enable_msix at 
/usr/src/debug/kernel-2.6.38.fc15/linux-2.6.38.x86_64/drivers/pci/msi.c:773

Thanks,
lacos

[168711.841672] BUG: unable to handle kernel paging request at ffffc90001a9600c
[168711.841984] IP: [<ffffffff8125658d>] pci_enable_msix+0x270/0x354
[168711.842343] PGD 9c838067 PUD 9c839067 PMD 3216067 PTE 0
[168711.842675] Oops: 0000 [#1] SMP [168711.843016] last sysfs file: 
/sys/devices/virtual/block/dm-0/dev
[168711.843486] CPU 0 [168711.843507] Modules linked in: igbvf(+) joydev 
xen_pcifront xen_netfront ipv6 xen_blkfront
[168711.844504] [168711.845030] Pid: 449, comm: modprobe Not tainted 
2.6.38.6-26.rc1.fc15.x86_64 #1  [168711.845722] RIP: e030:[<ffffffff8125658d>]  
[<ffffffff8125658d>] pci_enable_msix+0x270/0x354
[168711.846440] RSP: e02b:ffff880098b4bc58  EFLAGS: 00010286
[168711.847172] RAX: ffffc90001a9600c RBX: ffff880003304000 RCX: 
0000000000000006
[168711.847960] RDX: 0000000000000006 RSI: ffff88009c800200 RDI: 
ffff88009c800200
[168711.848775] RBP: ffff880098b4bcc8 R08: ffff88009c80c000 R09: 
0000000000000002
[168711.849634] R10: ffff880098361400 R11: 0000000000000003 R12: 
ffff880002ceac80
[168711.850531] R13: ffff880096278280 R14: 0000000000000000 R15: 
ffff8800033048f0
[168711.851452] FS:  00007f2ee5360720(0000) GS:ffff88009fdf5000(0000) 
knlGS:0000000000000000
[168711.852434] CS:  e033 DS: 0000 ES: 0000 CR0: 000000008005003b
[168711.853454] CR2: ffffc90001a9600c CR3: 00000000033ce000 CR4: 
0000000000002620
[168711.854529] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 
0000000000000000
[168711.855638] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 
0000000000000000
[168711.856776] Process modprobe (pid: 449, threadinfo ffff880098b4a000, task 
ffff880003acae40)
[168711.857954] Stack:
[168711.859139]  ffff880096278280 0000000000000002 0000000000000000 
ffff8800033048f0
[168711.860445]  0000007298b4bcc8 ffffc9000000000c ffff880000000008 
c002ffff00000000
[168711.861777]  ffff880003304000 ffff880098350000 ffff880003304000 
ffff880003304090
[168711.863149] Call Trace:
[168711.864527]  [<ffffffffa0083400>] igbvf_probe+0x308/0x85b [igbvf]
[168711.865978]  [<ffffffff81006c3f>] ? xen_restore_fl_direct_end+0x0/0x1
[168711.867469]  [<ffffffff81080b0f>] ? arch_local_irq_restore+0xb/0xd
[168711.868984]  [<ffffffff812463ce>] local_pci_probe+0x44/0x75
[168711.870531]  [<ffffffff81246e60>] pci_device_probe+0xd0/0xff
[168711.872170]  [<ffffffff812e6af9>] driver_probe_device+0x124/0x1ff
[168711.873804]  [<ffffffff812e6c2e>] __driver_attach+0x5a/0x7e
[168711.875436]  [<ffffffff812e6bd4>] ? __driver_attach+0x0/0x7e
[168711.875441]  [<ffffffff812e5b9a>] bus_for_each_dev+0x53/0x89
[168711.875446]  [<ffffffff812e6706>] driver_attach+0x1e/0x20
[168711.875455]  [<ffffffff812e6318>] bus_add_driver+0xe2/0x235
[168711.875462]  [<ffffffffa0089000>] ? igbvf_init_module+0x0/0x51 [igbvf]
[168711.875468]  [<ffffffff812e6e17>] driver_register+0x98/0x105
[168711.875474]  [<ffffffffa0089000>] ? igbvf_init_module+0x0/0x51 [igbvf]
[168711.875480]  [<ffffffff81247723>] __pci_register_driver+0x56/0xc3
[168711.875486]  [<ffffffffa0089000>] ? igbvf_init_module+0x0/0x51 [igbvf]
[168711.875493]  [<ffffffffa008904f>] igbvf_init_module+0x4f/0x51 [igbvf]
[168711.875500]  [<ffffffff810020a4>] do_one_initcall+0x7f/0x137
[168711.875506]  [<ffffffff810852dd>] sys_init_module+0xa6/0x1e4
[168711.875511]  [<ffffffff81009bc2>] system_call_fastpath+0x16/0x1b
[168711.875514] Code: 00 0f b7 42 04 c1 e0 04 83 c0 0c 89 45 b8 41 8b 44 24 0c 
89 02 41 8b 7c 24 0c 89 4d a0 e8 d0 80 e5 ff 48 63 45 b8 49 03 44 24 20 <8b> 00 
be 01 00 00 00 41 89 44 24 08 4c 89 e7 e8 c1 f2 ff ff 4d [168711.875552] RIP  
[<ffffffff8125658d>] pci_enable_msix+0x270/0x354
[168711.875558]  RSP <ffff880098b4bc58>
[168711.875560] CR2: ffffc90001a9600c
[168711.875564] ---[ end trace c82c0d02bae884a2 ]---
[168711.875570] BUG: sleeping function called from invalid context at 
kernel/rwsem.c:21
[168711.875573] in_atomic(): 0, irqs_disabled(): 1, pid: 449, name: modprobe
[168711.875577] Pid: 449, comm: modprobe Tainted: G      D     
2.6.38.6-26.rc1.fc15.x86_64 #1
[168711.875580] Call Trace:
[168711.875586]  [<ffffffff81047d33>] __might_sleep+0xeb/0xf0
[168711.875593]  [<ffffffff81474eee>] down_read+0x21/0x38
[168711.875598]  [<ffffffff8108be35>] acct_collect+0x4a/0x182
[168711.875603]  [<ffffffff81058627>] do_exit+0x216/0x732
[168711.875608]  [<ffffffff8147588c>] ? _raw_spin_unlock_irqrestore+0x17/0x19
[168711.875613]  [<ffffffff81006c52>] ? check_events+0x12/0x20
[168711.875618]  [<ffffffff81476b8e>] oops_end+0xbc/0xc5
[168711.875623]  [<ffffffff8146c0b4>] no_context+0x203/0x212
[168711.875628]  [<ffffffff81004415>] ? __raw_callee_save_xen_pmd_val+0x11/0x1e
[168711.875633]  [<ffffffff8146c257>] __bad_area_nosemaphore+0x194/0x1b7
[168711.875637]  [<ffffffff8146b8e4>] ? pmd_val+0x10/0x12
[168711.875642]  [<ffffffff8146b945>] ? pte_offset_kernel+0x19/0x3f
[168711.875647]  [<ffffffff8146c28d>] bad_area_nosemaphore+0x13/0x15
[168711.875651]  [<ffffffff81478c5d>] do_page_fault+0x1c5/0x37a
[168711.875657]  [<ffffffff81476095>] page_fault+0x25/0x30
[168711.875662]  [<ffffffff8125658d>] ? pci_enable_msix+0x270/0x354
[168711.875667]  [<ffffffff81256584>] ? pci_enable_msix+0x267/0x354
[168711.875675]  [<ffffffffa0083400>] igbvf_probe+0x308/0x85b [igbvf]
[168711.875680]  [<ffffffff81006c3f>] ? xen_restore_fl_direct_end+0x0/0x1
[168711.875684]  [<ffffffff81080b0f>] ? arch_local_irq_restore+0xb/0xd
[168711.875689]  [<ffffffff812463ce>] local_pci_probe+0x44/0x75
[168711.875693]  [<ffffffff81246e60>] pci_device_probe+0xd0/0xff
[168711.875698]  [<ffffffff812e6af9>] driver_probe_device+0x124/0x1ff
[168711.875703]  [<ffffffff812e6c2e>] __driver_attach+0x5a/0x7e
[168711.875708]  [<ffffffff812e6bd4>] ? __driver_attach+0x0/0x7e
[168711.875713]  [<ffffffff812e5b9a>] bus_for_each_dev+0x53/0x89
[168711.875718]  [<ffffffff812e6706>] driver_attach+0x1e/0x20
[168711.875722]  [<ffffffff812e6318>] bus_add_driver+0xe2/0x235
[168711.875729]  [<ffffffffa0089000>] ? igbvf_init_module+0x0/0x51 [igbvf]
[168711.875734]  [<ffffffff812e6e17>] driver_register+0x98/0x105
[168711.875741]  [<ffffffffa0089000>] ? igbvf_init_module+0x0/0x51 [igbvf]
[168711.875746]  [<ffffffff81247723>] __pci_register_driver+0x56/0xc3
[168711.875752]  [<ffffffffa0089000>] ? igbvf_init_module+0x0/0x51 [igbvf]
[168711.875759]  [<ffffffffa008904f>] igbvf_init_module+0x4f/0x51 [igbvf]
[168711.875764]  [<ffffffff810020a4>] do_one_initcall+0x7f/0x137
[168711.875769]  [<ffffffff810852dd>] sys_init_module+0xa6/0x1e4
[168711.875773]  [<ffffffff81009bc2>] system_call_fastpath+0x16/0x1b
[168711.879089] udevd-work[367]: '/sbin/modprobe -bv 
pci:v00008086d000010CAsv000015D9sd000010C9bc02sc00i00' unexpected exit with 
status 0x0009



_______________________________________________
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®.