Bug 654208
Summary: | [SR-IOV]VF device can not start on 32bit Windows2008 SP2 | ||||||
---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 5 | Reporter: | Chao Yang <chayang> | ||||
Component: | kvm | Assignee: | Alex Williamson <alex.williamson> | ||||
Status: | CLOSED CURRENTRELEASE | QA Contact: | Virtualization Bugs <virt-bugs> | ||||
Severity: | medium | Docs Contact: | |||||
Priority: | low | ||||||
Version: | 5.7 | CC: | alex.williamson, ashish.n.shah, ddutile, hui.xiao, jane.lv, jiajun.xu, john.cooper, juzhang, jvillalo, jwilleford, kcao, llim, luyu, martinez, michen, mkenneth, rdoty, rhod, tburke, virt-maint, xin.li, xudong.hao, yang.z.zhang, yongkang.you, ypu | ||||
Target Milestone: | rc | Keywords: | Triaged | ||||
Target Release: | 5.8 | ||||||
Hardware: | x86_64 | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: |
When using PCI device assignment with a 32bit Microsoft Windows 2008 guest on an AMD-based host system, the assigned device may fail to work if it relies on MSI or MSI-X based interrupts. The reason for this is that the 32bit version of Microsoft Windows 2008 does not enable MSI based interrupts for the family of processor exposed to the guest. To work around this problem, the user may wish to move to a RHEL6 host, use a 64bit version of the guest operating system, or employ a wrapper script to modify the processor family exposed to the guest as follows (Note this is only for 32bit Windows guests):
1) Create wrapper script
$ cat /usr/libexec/qemu-kvm.family16
#!/bin/sh
ARGS=$@
echo $ARGS | grep -q ' -cpu '
if [ $? -eq 0 ]; then
for model in $(/usr/libexec/qemu-kvm -cpu ? \
| sed 's|^x86||g' | tr -d [:blank:]); do
ARGS=$(echo $ARGS | \
sed "s|-cpu $model|-cpu $model,family=16|g")
done
else
ARGS="$ARGS -cpu qemu64,family=16"
fi
echo "$0: exec /usr/libexec/qemu-kvm $ARGS" >&2
exec /usr/libexec/qemu-kvm $ARGS
2) Make script executable
$ chmod 755 /usr/libexec/qemu-kvm.family16
3) Set selinux permissions
$ restorecon /usr/libexec/qemu-kvm.family16
4) Update guest XML to use the new wrapper
$ virsh edit $GUEST
Replace:
<emulator>/usr/libexec/qemu-kvm</emulator>
With:
<emulator>/usr/libexec/qemu-kvm.family16</emulator>
|
Story Points: | --- | ||||
Clone Of: | 613892 | ||||||
: | 656751 (view as bug list) | Environment: | |||||
Last Closed: | 2011-12-22 18:06:15 UTC | Type: | --- | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Bug Depends On: | 613892 | ||||||
Bug Blocks: | 580948, 656751, 688932 | ||||||
Attachments: |
|
Description
Chao Yang
2010-11-17 07:26:04 UTC
And win2008 64bit didn't hit this issue, can get ip successfully Did you have a try with "-cpu qemu64,model=13"? what error message you see? "This device can not start. (Code 10)" or "cannot find enough free resources" (In reply to comment #2) > Did you have a try with "-cpu qemu64,model=13"? Tried with "-cpu qemu64,model=13", fail to get ip. # /usr/libexec/qemu-kvm -no-hpet -rtc-td-hack -usbdevice tablet -startdate now -name windows2008-32 -smp 4 -m 4G -boot c -drive file=/root/zhangjunyi/win2008_32_virtio.qcow2,media=disk,if=virtio,cache=none,format=qcow2,werror=stop,boot=on -vnc :10 -cpu qemu64,model=13 -M rhel5.6.0 -notify all -balloon virtio -monitor stdio -net none -pcidevice host=09:10.1 (In reply to comment #3) > what error message you see? > "This device can not start. (Code 10)" or "cannot find enough free resources" got "cannot find enough free resources" message. Please see attachment for detail. And here are problem details: Description: Windows are able to successfully install device driver software, but the driver software encountered a problem when it tried to run. The problem code is 12 Created attachment 461015 [details]
error message
chayang, can you please double check your results with -cpu qemu64,model=13? I installed a win2k8 sp2 32bit guest on rhel5.6, installed the Intel driver and see the same error code 12 you report. If I shutdown the VM and restart it with the -cpu qemu64,model=13 option, the VF NIC works correctly. Adding John, because I'll re-assign this to him if you can verify my results. (In reply to comment #6) > chayang, can you please double check your results with -cpu qemu64,model=13? I > installed a win2k8 sp2 32bit guest on rhel5.6, installed the Intel driver and > see the same error code 12 you report. If I shutdown the VM and restart it > with the -cpu qemu64,model=13 option, the VF NIC works correctly. Adding John, > because I'll re-assign this to him if you can verify my results. Alex, I double checked with -cpu qemu64,model=13, hit again. I upgraded my win2K8 sp1 32bit guest to sp2 by installing Windows6.0-KB948465-X86.exe and tried with -cpu qemu64,model=13 again, also hit. Shutdown the VM and restart it with -cpu qemu64,model=13 option, it still reports error code 12. (In reply to comment #7) > > Alex, I double checked with -cpu qemu64,model=13, hit again. > I upgraded my win2K8 sp1 32bit guest to sp2 by installing > Windows6.0-KB948465-X86.exe and tried with -cpu qemu64,model=13 again, also > hit. Shutdown the VM and restart it with -cpu qemu64,model=13 option, it still > reports error code 12. I'm not sure how to debug this since it works just fine on my system using the -cpu flags. Is there anything in dmesg on the host? Are there any error messages printed from qemu-kvm while the guest is running? Have you tried uninstalling and reinstalling the latest Intel driver (15.7 iirc). Confirm the host is booted with intel_iommu=on and that the PF NICs on the host are both configured up. Perhaps try a fresh install of windows 2008 server sp2 32bit and a clean install of the Intel driver. it also works well for me with -cpu flag (In reply to comment #8) > (In reply to comment #7) > > > > Alex, I double checked with -cpu qemu64,model=13, hit again. > > I upgraded my win2K8 sp1 32bit guest to sp2 by installing > > Windows6.0-KB948465-X86.exe and tried with -cpu qemu64,model=13 again, also > > hit. Shutdown the VM and restart it with -cpu qemu64,model=13 option, it still > > reports error code 12. > > I'm not sure how to debug this since it works just fine on my system using the > -cpu flags. Is there anything in dmesg on the host? Are there any error > messages printed from qemu-kvm while the guest is running? Have you tried > uninstalling and reinstalling the latest Intel driver (15.7 iirc). Confirm the > host is booted with intel_iommu=on and that the PF NICs on the host are both > configured up. Perhaps try a fresh install of windows 2008 server sp2 32bit > and a clean install of the Intel driver. 1. Is there anything in dmesg on the host? igb 0000:09:00.1: 0 vfs allocated igb 0000:09:00.1: Intel(R) Gigabit Ethernet Network Connection igb 0000:09:00.1: eth1: (PCIe:2.5Gb/s:Width x4) 00:1b:21:36:79:f1 igb 0000:09:00.1: eth1: PBA No: e43709-003 igb 0000:09:00.1: Using MSI-X interrupts. 4 rx queue(s), 1 tx queue(s) ADDRCONF(NETDEV_UP): eth0: link is not ready ACPI: PCI interrupt for device 0000:09:00.1 disabled ACPI: PCI interrupt for device 0000:09:00.0 disabled Intel(R) Gigabit Ethernet Network Driver - version 2.1.0-k2-1 Copyright (c) 2007-2009 Intel Corporation. PCI: Enabling device 0000:09:00.0 (0000 -> 0002) ACPI: PCI Interrupt 0000:09:00.0[A] -> Link [LN48] -> GSI 48 (level, high) -> IRQ 51 PCI: Setting latency timer of device 0000:09:00.0 to 64 igb 0000:09:00.0: 4 vfs allocated Intel(R) Virtual Function Network Driver - version 1.0.0-k0-1 Copyright (c) 2009 Intel Corporation. igb 0000:09:00.0: Intel(R) Gigabit Ethernet Network Connection igb 0000:09:00.0: eth0: (PCIe:2.5Gb/s:Width x4) 00:1b:21:36:79:f0 igb 0000:09:00.0: eth0: PBA No: e43709-003 igb 0000:09:00.0: Using MSI-X interrupts. 2 rx queue(s), 1 tx queue(s) PCI: Enabling device 0000:09:00.1 (0000 -> 0002) ACPI: PCI Interrupt 0000:09:00.1[B] -> Link [LN49] -> GSI 49 (level, high) -> IRQ 107 PCI: Setting latency timer of device 0000:09:00.1 to 64 WARNING: at drivers/pci/msi.c:1107 pci_enable_msix() Call Trace: [<ffffffff8016dd3e>] pci_enable_msix+0x114/0x3c6 [<ffffffff802282fa>] pci_conf1_read+0xcc/0xd7 [<ffffffff80015f2a>] __bitmap_weight+0x65/0x76 [<ffffffff882bcae8>] :igb:igb_init_interrupt_scheme+0xbd/0x31e [<ffffffff882bfb5e>] :igb:igb_probe+0x470/0xc8d [<ffffffff8008c850>] __wake_up_common+0x3e/0x68 [<ffffffff801614e3>] pci_device_probe+0x104/0x184 [<ffffffff801cb823>] driver_probe_device+0x52/0xaa [<ffffffff801cb952>] __driver_attach+0x65/0xb6 [<ffffffff801cb8ed>] __driver_attach+0x0/0xb6 [<ffffffff801cb12a>] bus_for_each_dev+0x43/0x6e [<ffffffff801cad66>] bus_add_driver+0x76/0x110 [<ffffffff801617ff>] __pci_register_driver+0x51/0xa6 [<ffffffff800a8d1e>] sys_init_module+0xaf/0x1f2 [<ffffffff8005d28d>] tracesys+0xd5/0xe0 igb 0000:09:00.1: 4 vfs allocated igb 0000:09:00.1: Intel(R) Gigabit Ethernet Network Connection igb 0000:09:00.1: eth1: (PCIe:2.5Gb/s:Width x4) 00:1b:21:36:79:f1 igb 0000:09:00.1: eth1: PBA No: e43709-003 igb 0000:09:00.1: Using MSI-X interrupts. 2 rx queue(s), 1 tx queue(s) ADDRCONF(NETDEV_UP): eth0: link is not ready igb: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX eth1: no IPv6 routers present PCI: Enabling device 0000:09:10.1 (0000 -> 0002) assign device: host bdf = 9:10:1 2. Are there any error messages printed from qemu-kvm while the guest is running? #/usr/libexec/qemu-kvm -no-hpet -rtc-td-hack -usbdevice tablet -startdate now -name windows2008-32 -smp 4 -m 4G -boot c -drive file=/root/zhangjunyi/win2008_32_virtio.qcow2,media=disk,if=virtio,cache=none,format=qcow2,werror=stop,boot=on -vnc :18 -cpu qemu64,model=13 -M rhel5.6.0 -notify all -balloon virtio -monitor stdio -net none -pcidevice host=09:10.1 QEMU 0.9.1 monitor - type 'help' for more information (qemu) BUG: kvm_destroy_phys_mem: invalid parameters (slot=-1) BUG: kvm_destroy_phys_mem: invalid parameters (slot=-1) (qemu) sendkey ctrl-alt-delete (qemu) 3. Have you tried uninstalling and reinstalling the latest Intel driver (15.7 iirc)? Yes, I have tried the latest Intel driver but the same problem still exists. 4. Confirm the host is booted with intel_iommu=on and that the PF NICs on the host are both configured up? I am using AMD host running RHEL 5.6, amd iommu is on by default. After unbind a vf, I have eth1 configured up 5. Perhaps try a fresh install of windows 2008 server sp2 32bit and a clean install of the Intel driver? Ok, I will try a fresh install of windows 2008 server sp2 32bit and install the latest Intel driver (In reply to comment #10) > I am using AMD host running RHEL 5.6, amd iommu is on by default. After unbind > a vf, I have eth1 configured up uh, can you have a try with intel platform? (In reply to comment #10) > > 1. Is there anything in dmesg on the host? > igb 0000:09:00.1: 0 vfs allocated > igb 0000:09:00.1: Intel(R) Gigabit Ethernet Network Connection > igb 0000:09:00.1: eth1: (PCIe:2.5Gb/s:Width x4) 00:1b:21:36:79:f1 > igb 0000:09:00.1: eth1: PBA No: e43709-003 > igb 0000:09:00.1: Using MSI-X interrupts. 4 rx queue(s), 1 tx queue(s) > ADDRCONF(NETDEV_UP): eth0: link is not ready > ACPI: PCI interrupt for device 0000:09:00.1 disabled > ACPI: PCI interrupt for device 0000:09:00.0 disabled > Intel(R) Gigabit Ethernet Network Driver - version 2.1.0-k2-1 > Copyright (c) 2007-2009 Intel Corporation. > PCI: Enabling device 0000:09:00.0 (0000 -> 0002) > ACPI: PCI Interrupt 0000:09:00.0[A] -> Link [LN48] -> GSI 48 (level, high) -> > IRQ 51 > PCI: Setting latency timer of device 0000:09:00.0 to 64 > igb 0000:09:00.0: 4 vfs allocated > Intel(R) Virtual Function Network Driver - version 1.0.0-k0-1 > Copyright (c) 2009 Intel Corporation. > igb 0000:09:00.0: Intel(R) Gigabit Ethernet Network Connection > igb 0000:09:00.0: eth0: (PCIe:2.5Gb/s:Width x4) 00:1b:21:36:79:f0 > igb 0000:09:00.0: eth0: PBA No: e43709-003 > igb 0000:09:00.0: Using MSI-X interrupts. 2 rx queue(s), 1 tx queue(s) > PCI: Enabling device 0000:09:00.1 (0000 -> 0002) > ACPI: PCI Interrupt 0000:09:00.1[B] -> Link [LN49] -> GSI 49 (level, high) -> > IRQ 107 > PCI: Setting latency timer of device 0000:09:00.1 to 64 > WARNING: at drivers/pci/msi.c:1107 pci_enable_msix() > > Call Trace: > [<ffffffff8016dd3e>] pci_enable_msix+0x114/0x3c6 > [<ffffffff802282fa>] pci_conf1_read+0xcc/0xd7 > [<ffffffff80015f2a>] __bitmap_weight+0x65/0x76 > [<ffffffff882bcae8>] :igb:igb_init_interrupt_scheme+0xbd/0x31e > [<ffffffff882bfb5e>] :igb:igb_probe+0x470/0xc8d > [<ffffffff8008c850>] __wake_up_common+0x3e/0x68 > [<ffffffff801614e3>] pci_device_probe+0x104/0x184 > [<ffffffff801cb823>] driver_probe_device+0x52/0xaa > [<ffffffff801cb952>] __driver_attach+0x65/0xb6 > [<ffffffff801cb8ed>] __driver_attach+0x0/0xb6 > [<ffffffff801cb12a>] bus_for_each_dev+0x43/0x6e > [<ffffffff801cad66>] bus_add_driver+0x76/0x110 > [<ffffffff801617ff>] __pci_register_driver+0x51/0xa6 > [<ffffffff800a8d1e>] sys_init_module+0xaf/0x1f2 > [<ffffffff8005d28d>] tracesys+0xd5/0xe0 This doesn't look good. Above we see function 1 initialized with 0 vfs, function 1 with 4, then something bad happens setting up msix here, and then function 1 is re-initialized with 4 vfs. Does this card even work on the host? Please verify that you can make use of the ethX device associated with the VF in the host before trying to assign it to the guest. > igb 0000:09:00.1: 4 vfs allocated > igb 0000:09:00.1: Intel(R) Gigabit Ethernet Network Connection > igb 0000:09:00.1: eth1: (PCIe:2.5Gb/s:Width x4) 00:1b:21:36:79:f1 > igb 0000:09:00.1: eth1: PBA No: e43709-003 > igb 0000:09:00.1: Using MSI-X interrupts. 2 rx queue(s), 1 tx queue(s) > ADDRCONF(NETDEV_UP): eth0: link is not ready > igb: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX > eth1: no IPv6 routers present > PCI: Enabling device 0000:09:10.1 (0000 -> 0002) > assign device: host bdf = 9:10:1 > > > 2. Are there any error > messages printed from qemu-kvm while the guest is running? > > #/usr/libexec/qemu-kvm -no-hpet -rtc-td-hack -usbdevice tablet -startdate now > -name windows2008-32 -smp 4 -m 4G -boot c -drive > file=/root/zhangjunyi/win2008_32_virtio.qcow2,media=disk,if=virtio,cache=none,format=qcow2,werror=stop,boot=on > -vnc :18 -cpu qemu64,model=13 -M rhel5.6.0 -notify all -balloon virtio > -monitor stdio -net none -pcidevice host=09:10.1 > QEMU 0.9.1 monitor - type 'help' for more information > (qemu) BUG: kvm_destroy_phys_mem: invalid parameters (slot=-1) > BUG: kvm_destroy_phys_mem: invalid parameters (slot=-1) These BUGs are annoying, but don't hurt anything. > (qemu) sendkey ctrl-alt-delete > (qemu) > > 3. Have you tried uninstalling and reinstalling the latest Intel driver (15.7 > iirc)? > > Yes, I have tried the latest Intel driver but the same problem still exists. > > 4. Confirm the host is booted with intel_iommu=on and that the PF NICs on the > host are both configured up? > I am using AMD host running RHEL 5.6, amd iommu is on by default. After unbind > a vf, I have eth1 configured up Do you have the same problem if you have eth0 up and assign one the the even numbered VFs to the guest? > 5. Perhaps try a fresh install of windows 2008 server sp2 32bit > and a clean install of the Intel driver? > Ok, I will try a fresh install of windows 2008 server sp2 32bit and install the > latest Intel driver Alex, AMD host has two 82576 ethernet cards,eth0 and eth1,eth0 is not available.I am sure that eth1 has no problem cause I did the same actions on win2k8 64bit, the vf works fine. I will reproduce steps to assign a vf and give you the output of device message for each step. 1. #rmmod igb;modprobe igb max_vfs=4 igb 0000:09:00.1: IOV Disabled ACPI: PCI interrupt for device 0000:09:00.1 disabled igb 0000:09:00.0: IOV Disabled ACPI: PCI interrupt for device 0000:09:00.0 disabled Intel(R) Gigabit Ethernet Network Driver - version 2.1.0-k2-1 Copyright (c) 2007-2009 Intel Corporation. PCI: Enabling device 0000:09:00.0 (0000 -> 0002) ACPI: PCI Interrupt 0000:09:00.0[A] -> Link [LN48] -> GSI 48 (level, high) -> IRQ 51 PCI: Setting latency timer of device 0000:09:00.0 to 64 igb 0000:09:00.0: 0 vfs allocated igb 0000:09:00.0: Intel(R) Gigabit Ethernet Network Connection igb 0000:09:00.0: eth0: (PCIe:2.5Gb/s:Width x4) 00:1b:21:36:79:f0 igb 0000:09:00.0: eth0: PBA No: e43709-003 igb 0000:09:00.0: Using MSI-X interrupts. 4 rx queue(s), 1 tx queue(s) PCI: Enabling device 0000:09:00.1 (0000 -> 0002) ACPI: PCI Interrupt 0000:09:00.1[B] -> Link [LN49] -> GSI 49 (level, high) -> IRQ 107 PCI: Setting latency timer of device 0000:09:00.1 to 64 WARNING: at drivers/pci/msi.c:1107 pci_enable_msix() Call Trace: [<ffffffff8016dd3e>] pci_enable_msix+0x114/0x3c6 [<ffffffff800ddd9c>] alternate_node_alloc+0x70/0x8c [<ffffffff882bcae8>] :igb:igb_init_interrupt_scheme+0xbd/0x31e [<ffffffff882bfb5e>] :igb:igb_probe+0x470/0xc8d [<ffffffff801614e3>] pci_device_probe+0x104/0x184 [<ffffffff801cb823>] driver_probe_device+0x52/0xaa [<ffffffff801cb952>] __driver_attach+0x65/0xb6 [<ffffffff801cb8ed>] __driver_attach+0x0/0xb6 [<ffffffff801cb12a>] bus_for_each_dev+0x43/0x6e [<ffffffff801cad66>] bus_add_driver+0x76/0x110 [<ffffffff801617ff>] __pci_register_driver+0x51/0xa6 [<ffffffff800a8d1e>] sys_init_module+0xaf/0x1f2 [<ffffffff8005d28d>] tracesys+0xd5/0xe0 igb 0000:09:00.1: 0 vfs allocated igb 0000:09:00.1: Intel(R) Gigabit Ethernet Network Connection igb 0000:09:00.1: eth1: (PCIe:2.5Gb/s:Width x4) 00:1b:21:36:79:f1 igb 0000:09:00.1: eth1: PBA No: e43709-003 igb 0000:09:00.1: Using MSI-X interrupts. 4 rx queue(s), 1 tx queue(s) ADDRCONF(NETDEV_UP): eth0: link is not ready 2. check with #lspci|grep 82576, did't output vf infos lspci|grep 82576 09:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 09:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 3. run #rmmod igb;modprobe igb max_vfs=4 again ACPI: PCI interrupt for device 0000:09:00.1 disabled ACPI: PCI interrupt for device 0000:09:00.0 disabled Intel(R) Gigabit Ethernet Network Driver - version 2.1.0-k2-1 Copyright (c) 2007-2009 Intel Corporation. PCI: Enabling device 0000:09:00.0 (0000 -> 0002) ACPI: PCI Interrupt 0000:09:00.0[A] -> Link [LN48] -> GSI 48 (level, high) -> IRQ 51 PCI: Setting latency timer of device 0000:09:00.0 to 64 igb 0000:09:00.0: 4 vfs allocated Intel(R) Virtual Function Network Driver - version 1.0.0-k0-1 Copyright (c) 2009 Intel Corporation. igb 0000:09:00.0: Intel(R) Gigabit Ethernet Network Connection igb 0000:09:00.0: eth0: (PCIe:2.5Gb/s:Width x4) 00:1b:21:36:79:f0 igb 0000:09:00.0: eth0: PBA No: e43709-003 igb 0000:09:00.0: Using MSI-X interrupts. 2 rx queue(s), 1 tx queue(s) PCI: Enabling device 0000:09:00.1 (0000 -> 0002) ACPI: PCI Interrupt 0000:09:00.1[B] -> Link [LN49] -> GSI 49 (level, high) -> IRQ 107 PCI: Setting latency timer of device 0000:09:00.1 to 64 WARNING: at drivers/pci/msi.c:1107 pci_enable_msix() Call Trace: [<ffffffff8016dd3e>] pci_enable_msix+0x114/0x3c6 [<ffffffff802282fa>] pci_conf1_read+0xcc/0xd7 [<ffffffff80015f2a>] __bitmap_weight+0x65/0x76 [<ffffffff882bcae8>] :igb:igb_init_interrupt_scheme+0xbd/0x31e [<ffffffff882bfb5e>] :igb:igb_probe+0x470/0xc8d [<ffffffff8008c850>] __wake_up_common+0x3e/0x68 [<ffffffff801614e3>] pci_device_probe+0x104/0x184 [<ffffffff801cb823>] driver_probe_device+0x52/0xaa [<ffffffff801cb952>] __driver_attach+0x65/0xb6 [<ffffffff801cb8ed>] __driver_attach+0x0/0xb6 [<ffffffff801cb12a>] bus_for_each_dev+0x43/0x6e [<ffffffff801cad66>] bus_add_driver+0x76/0x110 [<ffffffff801617ff>] __pci_register_driver+0x51/0xa6 [<ffffffff800a8d1e>] sys_init_module+0xaf/0x1f2 [<ffffffff8005d28d>] tracesys+0xd5/0xe0 igb 0000:09:00.1: 4 vfs allocated igb 0000:09:00.1: Intel(R) Gigabit Ethernet Network Connection igb 0000:09:00.1: eth1: (PCIe:2.5Gb/s:Width x4) 00:1b:21:36:79:f1 igb 0000:09:00.1: eth1: PBA No: e43709-003 igb 0000:09:00.1: Using MSI-X interrupts. 2 rx queue(s), 1 tx queue(s) ADDRCONF(NETDEV_UP): eth0: link is not ready 4. #lspci|grep 82576 lspci|grep 82576 09:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 09:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 09:10.0 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) 09:10.1 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) 09:10.2 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) 09:10.3 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) 09:10.4 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) 09:10.5 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) 09:10.6 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) 09:10.7 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) 5. I need to configure eth1 up using #ifconfig eth1 up, cause actions above result in eth1 disappeared on AMD host.And on Intel host,actions above won't cause eth1 disappear sorry, Alex, my mistake, it is one ethernet card with two ports, not two ethernets. And only one port is in use. (In reply to comment #13) > Alex, AMD host has two 82576 ethernet cards,eth0 and eth1,eth0 is not > available.I am sure that eth1 has no problem cause I did the same actions on > win2k8 64bit, the vf works fine. > I will reproduce steps to assign a vf and give you the output of device message > for each step. > > 1. #rmmod igb;modprobe igb max_vfs=4 > > igb 0000:09:00.1: IOV Disabled > ACPI: PCI interrupt for device 0000:09:00.1 disabled > igb 0000:09:00.0: IOV Disabled > ACPI: PCI interrupt for device 0000:09:00.0 disabled > Intel(R) Gigabit Ethernet Network Driver - version 2.1.0-k2-1 > Copyright (c) 2007-2009 Intel Corporation. > PCI: Enabling device 0000:09:00.0 (0000 -> 0002) > ACPI: PCI Interrupt 0000:09:00.0[A] -> Link [LN48] -> GSI 48 (level, high) -> > IRQ 51 > PCI: Setting latency timer of device 0000:09:00.0 to 64 > igb 0000:09:00.0: 0 vfs allocated RHEL5 seems to aggressively reload drivers when they're rmmod'd, so it's probably reloading here with the default max_vfs=0 rather than your modprobe. It's better to add an /etc/modprobe.d entry to specify the max_vfs options. The aggressive module reloading might be a separate bug, I don't remember it doing that before. > 2. check with #lspci|grep 82576, did't output vf infos > lspci|grep 82576 > 09:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection > (rev 01) > 09:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection > (rev 01) > > 3. run #rmmod igb;modprobe igb max_vfs=4 again > > ACPI: PCI interrupt for device 0000:09:00.1 disabled > ACPI: PCI interrupt for device 0000:09:00.0 disabled > Intel(R) Gigabit Ethernet Network Driver - version 2.1.0-k2-1 > Copyright (c) 2007-2009 Intel Corporation. > PCI: Enabling device 0000:09:00.0 (0000 -> 0002) > ACPI: PCI Interrupt 0000:09:00.0[A] -> Link [LN48] -> GSI 48 (level, high) -> > IRQ 51 > PCI: Setting latency timer of device 0000:09:00.0 to 64 > igb 0000:09:00.0: 4 vfs allocated > Intel(R) Virtual Function Network Driver - version 1.0.0-k0-1 > Copyright (c) 2009 Intel Corporation. > igb 0000:09:00.0: Intel(R) Gigabit Ethernet Network Connection > igb 0000:09:00.0: eth0: (PCIe:2.5Gb/s:Width x4) 00:1b:21:36:79:f0 > igb 0000:09:00.0: eth0: PBA No: e43709-003 > igb 0000:09:00.0: Using MSI-X interrupts. 2 rx queue(s), 1 tx queue(s) > PCI: Enabling device 0000:09:00.1 (0000 -> 0002) > ACPI: PCI Interrupt 0000:09:00.1[B] -> Link [LN49] -> GSI 49 (level, high) -> > IRQ 107 > PCI: Setting latency timer of device 0000:09:00.1 to 64 > WARNING: at drivers/pci/msi.c:1107 pci_enable_msix() > > Call Trace: > [<ffffffff8016dd3e>] pci_enable_msix+0x114/0x3c6 > [<ffffffff802282fa>] pci_conf1_read+0xcc/0xd7 > [<ffffffff80015f2a>] __bitmap_weight+0x65/0x76 > [<ffffffff882bcae8>] :igb:igb_init_interrupt_scheme+0xbd/0x31e > [<ffffffff882bfb5e>] :igb:igb_probe+0x470/0xc8d > [<ffffffff8008c850>] __wake_up_common+0x3e/0x68 > [<ffffffff801614e3>] pci_device_probe+0x104/0x184 > [<ffffffff801cb823>] driver_probe_device+0x52/0xaa > [<ffffffff801cb952>] __driver_attach+0x65/0xb6 > [<ffffffff801cb8ed>] __driver_attach+0x0/0xb6 > [<ffffffff801cb12a>] bus_for_each_dev+0x43/0x6e > [<ffffffff801cad66>] bus_add_driver+0x76/0x110 > [<ffffffff801617ff>] __pci_register_driver+0x51/0xa6 > [<ffffffff800a8d1e>] sys_init_module+0xaf/0x1f2 > [<ffffffff8005d28d>] tracesys+0xd5/0xe0 > > igb 0000:09:00.1: 4 vfs allocated > igb 0000:09:00.1: Intel(R) Gigabit Ethernet Network Connection > igb 0000:09:00.1: eth1: (PCIe:2.5Gb/s:Width x4) 00:1b:21:36:79:f1 > igb 0000:09:00.1: eth1: PBA No: e43709-003 > igb 0000:09:00.1: Using MSI-X interrupts. 2 rx queue(s), 1 tx queue(s) > ADDRCONF(NETDEV_UP): eth0: link is not ready > > > 4. #lspci|grep 82576 > > lspci|grep 82576 > 09:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection > (rev 01) > 09:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection > (rev 01) > 09:10.0 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) > 09:10.1 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) > 09:10.2 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) > 09:10.3 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) > 09:10.4 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) > 09:10.5 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) > 09:10.6 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) > 09:10.7 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) Use modprobe.d and you shouldn't have these issues. > 5. I need to configure eth1 up using #ifconfig eth1 up, cause actions above > result in eth1 disappeared on AMD host.And on Intel host,actions above won't > cause eth1 disappear The ethX devices associated with the igb device will certainly go away when the igb module is removed on either AMD or Intel. The difference is more likely something in /etc/sysconfig/network-scripts that causes eth1 to be automatically configured when it reappears on the Intel host that's missing on the AMD host. Ok, so this seems to be just need the AMD incantation of -cpu qemu64,model=13, which is -cpu qemu64,family=16. This makes the processor appear as an Opteron class processor, which Windows seems to be willing to enable MSI support for. I did not do an exhaustive search to find the minimum feature set Windows will accept for enabling MSI. Re-assigning to John since he's dealt with this problem in RHEL6. This request was evaluated by Red Hat Product Management for inclusion in the current release of Red Hat Enterprise Linux. Because the affected component is not scheduled to be updated in the current release, Red Hat is unfortunately unable to address this request at this time. Red Hat invites you to ask your support representative to propose this request, if appropriate and relevant, in the next release of Red Hat Enterprise Linux. This request was erroneously denied for the current release of Red Hat Enterprise Linux. The error has been fixed and this request has been re-proposed for the current release. Technical note added. If any revisions are required, please edit the "Technical Notes" field accordingly. All revisions will be proofread by the Engineering Content Services team. New Contents: When using PCI device assignment with a 32bit Microsoft Windows 2008 guest on an AMD-based host system, the assigned device may fail to work if it relies on MSI or MSI-X based interrupts. The reason for this is that the 32bit version of Microsoft Windows 2008 does not enable MSI based interrupts for the family of processor exposed to the guest. To work around this problem, the user may wish to move to a RHEL6 host, use a 64bit version of the guest operating system, or employ a wrapper script to modify the processor family exposed to the guest as follows (Note this is only for 32bit Windows guests): 1) Create wrapper script $ cat /usr/libexec/qemu-kvm.family16 #!/bin/sh ARGS=$@ echo $ARGS | grep -q ' -cpu ' if [ $? -eq 0 ]; then for model in $(/usr/libexec/qemu-kvm -cpu ? \ | sed 's|^x86||g' | tr -d [:blank:]); do ARGS=$(echo $ARGS | \ sed "s|-cpu $model|-cpu $model,family=16|g") done else ARGS="$ARGS -cpu qemu64,family=16" fi echo "$0: exec /usr/libexec/qemu-kvm $ARGS" >&2 exec /usr/libexec/qemu-kvm $ARGS 2) Make script executable $ chmod 755 /usr/libexec/qemu-kvm.family16 3) Set selinux permissions $ restorecon /usr/libexec/qemu-kvm.family16 4) Update guest XML to use the new wrapper $ virsh edit $GUEST Replace: <emulator>/usr/libexec/qemu-kvm</emulator> With: <emulator>/usr/libexec/qemu-kvm.family16</emulator> OOPS, we forgot to remove the cond-NACK. Actually, I don't know how to remove it. Anyhow, the issue is resolved using a Technical Note that Alex already filled. I returned it to RHEL5.8. |