Bug 847722 - backport: KVM: fix race with level interrupts
backport: KVM: fix race with level interrupts
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: kernel (Show other bugs)
6.4
Unspecified Unspecified
unspecified Severity unspecified
: rc
: ---
Assigned To: Michael S. Tsirkin
Virtualization Bugs
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2012-08-13 07:04 EDT by Michael S. Tsirkin
Modified: 2013-02-21 01:46 EST (History)
9 users (show)

See Also:
Fixed In Version: kernel-2.6.32-335.el6
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2013-02-21 01:46:18 EST
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Michael S. Tsirkin 2012-08-13 07:04:41 EDT
Description of problem:
patch 1a577b72475d161b6677c05abe57301362023bb2
KVM: fix race with level interrupts
needs to be backported to rhel6

problem description:

    When more than 1 source id is in use for the same GSI, we have the
    following race related to handling irq_states race:
    
    CPU 0 clears bit 0. CPU 0 read irq_state as 0. CPU 1 sets level to 1.
    CPU 1 calls kvm_ioapic_set_irq(1). CPU 0 calls kvm_ioapic_set_irq(0).
    Now ioapic thinks the level is 0 but irq_state is not 0.
    
    Fix by performing all irq_states bitmap handling under pic/ioapic lock.
    This also removes the need for atomics with irq_states handling.

Version-Release number of selected component (if applicable):
2.6.32-296

This is theoretical problem, not sure how reproducible
it is. To verify I think enough to check that
device assignment with level interrupts still works fine.
Comment 2 RHEL Product and Program Management 2012-10-02 10:12:06 EDT
This request was evaluated by Red Hat Product Management for
inclusion in a Red Hat Enterprise Linux release.  Product
Management has requested further review of this request by
Red Hat Engineering, for potential inclusion in a Red Hat
Enterprise Linux release for currently deployed products.
This request is not yet committed for inclusion in a release.
Comment 7 Michael S. Tsirkin 2012-10-09 14:59:03 EDT
clarification: to cause more than 1 source id to be used for the same
GSI, one needs to create a setup where an assigned device and one other
device use level interrupts and share an IRQ line in guest.
Comment 8 juzhang 2012-10-09 23:58:46 EDT
(In reply to comment #7)
> clarification: to cause more than 1 source id to be used for the same
> GSI, one needs to create a setup where an assigned device and one other
> device use level interrupts and share an IRQ line in guest.

Hi, Michael

Before we start to functional(device assignment) testing, need to double confirm to you. KVM qe will set up the following environment, any mistake, please fix me.

1. Need to find two pci device that share one IRQ value in host via issue the command "cat /proc/interrupts"

2. Pass-through these two pci device to guest.

3. Do the device assignment testing.

4. We assume this brew works fine if we pass all device assignment test cases.

Best Regards & Thanks,
Junyi
Comment 9 Michael S. Tsirkin 2012-10-10 02:13:42 EDT
1/2 is not what is intended. Instead:

1. boot guest with msi disabled

2. select an assigned device in host and hot-add to guest
change pci slot used in guest until find one where irq line
in guest is shared with another device in guest (can be another
assigned device).



3/4 are correct
Comment 10 juzhang 2012-10-10 02:40:49 EDT
(In reply to comment #9)
> 1/2 is not what is intended. Instead:
> 
> 1. boot guest with msi disabled
Ok, I will append pci=nomsi in guest kernel line to disable msi in guest.
> 
> 2. select an assigned device in host and hot-add to guest
> change pci slot used in guest until find one where irq line
> in guest is shared with another device in guest (can be another
> assigned device).
Any much quicker method to let two device share one irq value in guest? only one way by changing the pci slot until find two device share one irq?
> 
> 
> 
> 3/4 are correct

Best Regards & Thanks,
Junyi
Comment 11 Michael S. Tsirkin 2012-10-10 02:48:03 EDT
I think if you select 2 slots that are 4 apart then they share
an interrupt. For example slots 2 and 6.
But pls verify using lspci in guest.
Comment 12 juzhang 2012-10-10 03:16:36 EDT
(In reply to comment #11)
> I think if you select 2 slots that are 4 apart then they share
> an interrupt. For example slots 2 and 6.
> But pls verify using lspci in guest.

Thanks, still have question. Just have a quick check in the host and find the irq value is inconsistent between "cat /proc/interrupts" and "lspci -vvv -s", take the host eth0 for example, any mistake, please fix me.

1. check the eth0 irq value via "cat /proc/interrupts", the irq value is 35.

35:          0          0          0          0  IR-PCI-MSI-edge      eth0

2. check the eth0 irq value via "lspci -vvv -s 03:00.0", the irq value is 18.
2.1 #ethtool -i eth0
driver: igb
version: 3.2.10-k
firmware-version: 1.2-1
bus-info: 0000:03:00.0
2.2 #lspci -vvv -s 03:00.0
03:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
	Subsystem: Intel Corporation Gigabit ET2 Quad Port Server Adapter
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 18

Best Regards & Thanks,
Junyi
Comment 13 juzhang 2012-10-10 03:40:33 EDT
Hi, Michael

Would you please review comment12 and explain why the irq value is inconsistent between "cat /proc/interrupts" and "lspci -vvv -s"? 

Best Regards & Thanks,
Junyi
Comment 14 Michael S. Tsirkin 2012-10-10 04:16:12 EDT
this I think is because you are using msi.
Comment 15 juzhang 2012-10-10 04:27:18 EDT
(In reply to comment #14)
> this I think is because you are using msi.

Yes, the host uses msi as interrupt mechanism, kvm qe would very appreciate if you can explain with details why the irq value is inconsistent between "cat /proc/interrupts" and "lspci -vvv -s" by using msi, thanks.

Best Regards & Thanks,
Junyi
Comment 16 Michael S. Tsirkin 2012-10-10 04:40:38 EDT
what lspci shows is the IRQ assigned to the interrupt PIN
by BIOS at the ioapic.
I think you clipped some output, if you look below you will see
something like:

       Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
                Address: fee0f00c  Data: 4161

which would tell you that MSI is enabled so interrupt pin is unused.

what /proc/interrupts shows is the interrupt actually used by driver
which is an MSI vector.
level interrupt is unused in this setup, if you see something like
this in guest it's not a good test for this bz.
Comment 17 juzhang 2012-10-10 04:52:53 EDT
(In reply to comment #16)
> what lspci shows is the IRQ assigned to the interrupt PIN
> by BIOS at the ioapic.
> I think you clipped some output, if you look below you will see
Yes, I just pasted snip of output.
> something like:
> 
>        Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
>                 Address: fee0f00c  Data: 4161
> 
> which would tell you that MSI is enabled so interrupt pin is unused.
> 
> what /proc/interrupts shows is the interrupt actually used by driver
> which is an MSI vector.
> level interrupt is unused in this setup, if you see something like
> this in guest it's not a good test for this bz.
Clear now, thanks. Firstly, kvm qe will check whether the msi is disabled and check the two device's irq value via lspci in guest.

Best Regards,
Junyi
Comment 20 Jarod Wilson 2012-10-19 16:55:42 EDT
Patch(es) available on kernel-2.6.32-335.el6
Comment 23 Qian Guo 2012-12-21 02:08:54 EST
verify this bug with kernel-2.6.32-348.el6.x86_64

1. Host qemu-kvm version and guest kernel build
Host qemu-kvm:qemu-kvm-0.12.1.2-2.346.el6.test.x86_64
Guest kernel version:kernel-2.6.32-348.el6.x86_64

2. The environment in guest
2.1 cli as
#/usr/libexec/qemu-kvm ... -netdev tap,id=hostnet0,vhost=on,script=/etc/qemu-ifup -device virtio-net-pci,netdev=hostnet0,id=virt-net0,mac=54:52:1a:32:b4:81 -vnc :10 -device pci-assign,host=06:00.1,id=hostdev1 -device pci-assign,host=06:00.0,id=hostdev0 ...

2.2 append pci=nomsi in guest kernel line
2.3

guest#cat /proc/interrupts 
.....
 10:       6666          0   IO-APIC-fasteoi   virtio1, eth236, eth237
 11:        769          0   IO-APIC-fasteoi   virtio0

.....




# lspci |grep Eth
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
00:05.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
00:06.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)


# lspci -vvvv -s 00:03.0
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
	Subsystem: Red Hat, Inc Device 0001
	Physical Slot: 3
	Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin A routed to IRQ 11
	Region 0: I/O ports at c020 [size=32]
	Region 1: Memory at f1010000 (32-bit, non-prefetchable) [size=4K]
	Expansion ROM at f1020000 [disabled] [size=64K]
	Capabilities: [40] MSI-X: Enable- Count=3 Masked-
		Vector table: BAR=1 offset=00000000
		PBA: BAR=1 offset=00000800
	Kernel driver in use: virtio-pci
	Kernel modules: virtio_pci

# lspci -vvvv -s 00:05.0
00:05.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
	Subsystem: Intel Corporation Ethernet Server Adapter X520-2
	Physical Slot: 5
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin B routed to IRQ 10
	Region 0: Memory at f1080000 (32-bit, non-prefetchable) [size=512K]
	Region 2: I/O ports at c080 [size=32]
	Region 4: Memory at f1100000 (32-bit, non-prefetchable) [size=16K]
	Expansion ROM at f1180000 [disabled] [size=512K]
	Capabilities: [e0] Vital Product Data
		Unknown small resource type 00, will not decode more.
	Capabilities: [a0] Express (v2) Endpoint, MSI 00
		DevCap:	MaxPayload 512 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 256 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 5GT/s, Width x8, ASPM L0s, Latency L0 <1us, L1 <8us
			ClockPM- Surprise- LLActRep- BwNot-
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x8, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not Supported
		DevCtl2: Completion Timeout: 65ms to 210ms, TimeoutDis-, LTR-, OBFF Disabled
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [70] MSI-X: Enable- Count=64 Masked-
		Vector table: BAR=4 offset=00000000
		PBA: BAR=4 offset=00002000
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit-
		Address: 00000000  Data: 0000
	Kernel driver in use: ixgbe
	Kernel modules: ixgbe

# lspci -vvvv -s 00:06.0
00:06.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
	Subsystem: Intel Corporation Ethernet Server Adapter X520-2
	Physical Slot: 6
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 10
	Region 0: Memory at f1200000 (32-bit, non-prefetchable) [size=512K]
	Region 2: I/O ports at c0a0 [size=32]
	Region 4: Memory at f1280000 (32-bit, non-prefetchable) [size=16K]
	Expansion ROM at f1300000 [disabled] [size=512K]
	Capabilities: [e0] Vital Product Data
		Unknown small resource type 00, will not decode more.
	Capabilities: [a0] Express (v2) Endpoint, MSI 00
		DevCap:	MaxPayload 512 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 256 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 5GT/s, Width x8, ASPM L0s, Latency L0 <1us, L1 <8us
			ClockPM- Surprise- LLActRep- BwNot-
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x8, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not Supported
		DevCtl2: Completion Timeout: 65ms to 210ms, TimeoutDis-, LTR-, OBFF Disabled
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [70] MSI-X: Enable- Count=64 Masked-
		Vector table: BAR=4 offset=00000000
		PBA: BAR=4 offset=00002000
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit-
		Address: 00000000  Data: 0000
	Kernel driver in use: ixgbe
	Kernel modules: ixgbe



guest# cat /proc/cmdline
ro root=/dev/mapper/vg_guest-lv_root rd_NO_LUKS rd_LVM_LV=vg_guest/lv_swap rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_LVM_LV=vg_guest/lv_root crashkernel=128M  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM LANG=en_US.UTF-8 rhgb quiet pci=nomsi


So According to these info, the msi is disabled but two device assignment and one virtio emulated nic do not share one irc value! 

If something wrong in my test? Please correct me if anything wrong.
Comment 24 Qian Guo 2012-12-21 05:15:24 EST
(In reply to comment #23)
> verify this bug with kernel-2.6.32-348.el6.x86_64


Re-verify this bug with kernel-2.6.32-348.el6.x86_64


1. Host qemu-kvm version and guest kernel build
Host qemu-kvm:qemu-kvm-0.12.1.2-2.346.el6.test.x86_64
Guest kernel version:kernel-2.6.32-348.el6.x86_64

2. The environment in guest
2.1 cli as
#/usr/libexec/qemu-kvm ...-netdev tap,id=hostnet0,vhost=on,script=/etc/qemu-ifup -device virtio-net-pci,netdev=hostnet0,id=virt-net0,mac=54:52:1a:32:b4:81,multifunction=on,addr=0x7.0 -device pci-assign,host=06:00.0,id=hostdev0 -device pci-assign,host=06:00.1,id=hostdev1 ...

2.2 append pci=nomsi in guest kernel line
2.3

guest#cat /proc/interrupts 
.....
  10:       1557          0   IO-APIC-fasteoi   virtio1, eth237, eth236
.....

# lspci |grep Eth
00:03.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
00:05.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
00:07.0 Ethernet controller: Red Hat, Inc Virtio network device

]# lspci -vvvv -s 00:03.0
00:03.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
	Subsystem: Intel Corporation Ethernet Server Adapter X520-2
	Physical Slot: 3
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 10
	Region 0: Memory at f1080000 (32-bit, non-prefetchable) [size=512K]
	Region 2: I/O ports at c020 [size=32]
	Region 4: Memory at f1100000 (32-bit, non-prefetchable) [size=16K]
	Expansion ROM at f1180000 [disabled] [size=512K]
	Capabilities: [e0] Vital Product Data
		Unknown small resource type 00, will not decode more.
	Capabilities: [a0] Express (v2) Endpoint, MSI 00
		DevCap:	MaxPayload 512 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 256 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 5GT/s, Width x8, ASPM L0s, Latency L0 <1us, L1 <8us
			ClockPM- Surprise- LLActRep- BwNot-
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x8, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not Supported
		DevCtl2: Completion Timeout: 65ms to 210ms, TimeoutDis-, LTR-, OBFF Disabled
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [70] MSI-X: Enable- Count=64 Masked-
		Vector table: BAR=4 offset=00000000
		PBA: BAR=4 offset=00002000
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit-
		Address: 00000000  Data: 0000
	Kernel driver in use: ixgbe
	Kernel modules: ixgbe
# lspci -vvvv -s 00:05.0
00:05.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
	Subsystem: Intel Corporation Ethernet Server Adapter X520-2
	Physical Slot: 5
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin B routed to IRQ 10
	Region 0: Memory at f1280000 (32-bit, non-prefetchable) [size=512K]
	Region 2: I/O ports at c080 [size=32]
	Region 4: Memory at f1300000 (32-bit, non-prefetchable) [size=16K]
	Expansion ROM at f1380000 [disabled] [size=512K]
	Capabilities: [e0] Vital Product Data
		Unknown small resource type 00, will not decode more.
	Capabilities: [a0] Express (v2) Endpoint, MSI 00
		DevCap:	MaxPayload 512 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 256 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 5GT/s, Width x8, ASPM L0s, Latency L0 <1us, L1 <8us
			ClockPM- Surprise- LLActRep- BwNot-
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x8, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not Supported
		DevCtl2: Completion Timeout: 65ms to 210ms, TimeoutDis-, LTR-, OBFF Disabled
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [70] MSI-X: Enable- Count=64 Masked-
		Vector table: BAR=4 offset=00000000
		PBA: BAR=4 offset=00002000
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit-
		Address: 00000000  Data: 0000
	Kernel driver in use: ixgbe
	Kernel modules: ixgbe


# lspci -vvvv -s 00:07.0
00:07.0 Ethernet controller: Red Hat, Inc Virtio network device
	Subsystem: Red Hat, Inc Device 0001
	Physical Slot: 7
	Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin A routed to IRQ 10
	Region 0: I/O ports at c0a0 [size=32]
	Region 1: Memory at f1400000 (32-bit, non-prefetchable) [size=4K]
	Expansion ROM at f1410000 [disabled] [size=64K]
	Capabilities: [40] MSI-X: Enable- Count=3 Masked-
		Vector table: BAR=1 offset=00000000
		PBA: BAR=1 offset=00000800
	Kernel driver in use: virtio-pci
	Kernel modules: virtio_pci


So according to above, these devices shares one irq NO.10  and the msi is disabled, this bug is fixed with kernel-2.6.32-348.el6.x86_64.
Comment 26 FuXiangChun 2012-12-27 04:52:41 EST
correct comment 25.

This are two device assignment test run.  and make sure device assignment device and virtio-net share 1 irq values and add pci=nomsi to guest kernel line

e.g. on guest
 cat /proc/interrupts 
 10: 144 0  0  0   IO-APIC-fasteoi   virtio1, eth1
 11: 73  0  0  0   IO-APIC-fasteoi   virtio0, eth2

# ethtool -i eth1
ethtool -i eth1
driver: ixgbe
version: 3.9.15-k
firmware-version: 0x546c0001
bus-info: 0000:00:06.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

# ethtool -i eth2
ethtool -i eth2
driver: ixgbe
version: 3.9.15-k
firmware-version: 0x546c0001
bus-info: 0000:00:06.1
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
Comment 27 FuXiangChun 2012-12-28 00:47:16 EST
according to two test run result above(comment 25) and comment 24, I think this bug is fixed.
Comment 29 errata-xmlrpc 2013-02-21 01:46:18 EST
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHSA-2013-0496.html

Note You need to log in before you can comment on or make changes to this bug.