Re: PCI passthrough (shared IRQ) not working / contradicting information

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

 



On 2013-05-03 16:37, Alex Williamson wrote:
> On Fri, 2013-05-03 at 10:35 +0200, Jan Kiszka wrote:
>> On 2013-05-03 09:33, Binarus wrote:
>>> Hi all,
>>>
>>> a while ago, I have set up a KVM virtual machine with PCI passthrough.
>>> The device which is passed through is an AVM Fritz!card PCI v2.1.
>>>
>>> This works, but there is a drawback: At that time, KVM was not able to
>>> do PCI passthrough for PCI devices with shared interrupt. So I had to
>>> find out which other devices were using the same interrupt, and had to
>>> inactivate them by handling them over to the PCI stub driver.
>>>
>>> Then, one day, I have been very excited when I was reading that with
>>> kernel 3.4, KVM should be able to do PCI passthrough even if the
>>> respective device shares its IRQ with other devices. Thus, two day ago,
>>> I took the time, got vanilla kernel 3.9, configured, compiled and
>>> installed, and got qemu 1.4.1, configured, compiled and installed.
>>>
>>> Now, I am disappointed that the passthrough still doesn't work if I
>>> leave the other devices active, probably due to a silly error on my
>>> side. It still works if I inactivate the other devices which share their
>>> IRQ with the AVM card, but that actually was not the goal.
>>>
>>> Furthermore, the last two sentences on the following page suggest that
>>> PCI passthrough of devices with shared IRQs is still not possible:
>>> http://www.linux-kvm.org/page/How_to_assign_devices_with_VT-d_in_KVM. So
>>> there is a contradiction between what has been stated when kernel 3.4
>>> came out and what linux-kvm.org says.
>>>
>>> Could anybody please tell me if PCI passthrough with shared IRQs is
>>> possible or not? Does anybody know why the AVM Fritz!card won't work
>>> without inactivating other devices? What mistake could lead to the
>>> current situation (passthrough works if other devices are inactivated,
>>> and does not work if not)?
>>
>> The Fritz!CARD is very old and likely not PCI 2.3 compliant. But that is
>> required to share legacy interrupts.
> 
> Yep.  Binarus, the issue is that shared interrupts require hardware
> support to mask the interrupt at the device.  This was introduced as
> part of the PCI 2.3 standard.  If the device does not support this then
> exclusive interrupts are still required.
> 
>> Alex, does VFIO provide any convenient diagnostics if INTx sharing is
>> possible or not? If not, maybe we should add it at least over there.
> 
> It does not.  It's actually easier to test outside of qemu as vfio will
> emulate PCI2.3 support.  Here's a simple shell script requiring only
> sudo and setpci:
> 
> #!/bin/sh
> 
> DESC=$(lspci -s $1)
> 
> if [ "x$DESC" == "x" ]; then
> 	echo "Device $1 not found"
> 	exit 1
> fi
> 
> ORIGCMD=$(printf 0x%04x $(setpci -s $1 COMMAND))
> NEWCMD=$(printf 0x%04x $(( $ORIGCMD ^ 0x400 )))
> setpci -s $1 COMMAND=$NEWCMD
> NEWCMD=$(printf 0x%04x $(setpci -s $1 COMMAND))
> 
> if [ $ORIGCMD == $NEWCMD ]; then
> 	echo "Device $1 does NOT support PCI 2.3 INTx disable"
> 	exit 1
> fi
> 
> setpci -s $1 COMMAND=$ORIGCMD
> echo "Device $1 supports PCI 2.3 INTx disable"
> 

Easier for the implementers POV... ;)

Well, please push it at least to our wiki page.

Jan

-- 
Siemens AG, Corporate Technology, CT RTC ITP SDP-DE
Corporate Competence Center Embedded Linux
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux