Re: [Bug 795866] [NEW] pci passthrough doesn´t work

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

 



On 2011-06-11 11:05, steo wrote:
> Public bug reported:
> 
> Hi all,
> 
> I have some problems passing through a pci device to kvm guest.
> First I have to say that IÂm using the latest kvm-kernel und qemu-kvm from git-tree (Date 11.06.2011).
> 
> I wantÂt to passthrough this device to guest:
> 
> lspci-output:
> 
> 02:00.0 Multimedia video controller: Micronas Semiconductor Holding AG
> Device 0720 (rev 01)
> 
> So at first I have bind the driver to psi-stub:
> 
> modprobe -r kvm-intel
> modprobe -r kvm
> echo "18c3 0720" > /sys/bus/pci/drivers/pci-stub/new_id
> echo 0000:02:00.0  > /sys/bus/pci/devices/0000:02:00.0/driver/unbind
> echo 0000:02:00.0  > /sys/bus/pci/drivers/pci-stub/bind
> modprobe kvm
> modprobe kvm-intel
> 
> Then I have assigned device to guest:
> -device pci-assign,host=02:00.0
> 
> When I start the guest. The device succesfully getÂs an msi-IRQ on host-
> system:
> 
> cat /proc/interrupt output:
> 
>  32:          0          0          0          0   PCI-MSI-edge
> kvm_assigned_msi_device
> 
> 
> On guest device is visibel:
> 
> lspci output:
> 00:04.0 Multimedia video controller: Micronas Semiconductor Holding AG Device 0720 (rev 01)
> 
> 
> Sometimes the device (on guest) getÂs an IRQ between 10-16:
> 
> 00:05.0 Multimedia video controller: Micronas Semiconductor Holding AG Device 0720 (rev 01)
>         Subsystem: Micronas Semiconductor Holding AG Device dd00
>         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: Memory at f2050000 (32-bit, non-prefetchable) [size=64K]
>         Region 1: Memory at f2060000 (32-bit, non-prefetchable) [size=64K]
>         Capabilities: [58] Express (v1) Endpoint, MSI 00
>                 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
>                         ExtTag- AttnBtn- AttnInd- PwrInd- RBE- FLReset-
>                 DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>                         RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
>                         MaxPayload 128 bytes, MaxReadReq 128 bytes
>                 DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
>                 LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s, Latency L0 unlimited, L1 unlimited
>                         ClockPM- Suprise- LLActRep- BwNot-
>                 LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
>                         ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>                 LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
>         Capabilities: [40] Power Management version 2
>                 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
>                 Status: D0 PME-Enable- DSel=0 DScale=0 PME-
>         Capabilities: [48] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable-
>                 Address: 00000000  Data: 0000
>         Kernel modules: ngene
> 
> 
> In this case the kernel-modul (ngene) can not access the device:
> 
> dmesg | grep ngene
> 
> [   69.977900] ngene 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, high) -> IRQ 11
> [   69.977909] ngene: Found Linux4Media cineS2 DVB-S2 Twin Tuner (v5)
> [   69.978962] ngene 0000:00:05.0: setting latency timer to 64
> [   69.979118] ngene: Device version 1
> [   69.979129] ngene 0000:00:05.0: firmware: requesting ngene_18.fw
> [   69.980884] ngene: Loading firmware file ngene_18.fw.
> [   71.981052] ngene: Command timeout cmd=01 prev=00
> [   71.981205] host_to_ngene (c000): 01 00 00 00 00 00 00 00
> [   71.981457] ngene_to_host (c100): 00 00 00 00 00 00 00 00
> [   71.981704] dev->hosttongene (ec902000): 01 00 00 00 00 00 00 00
> [   71.981963] dev->ngenetohost (ec902100): 00 00 00 00 00 00 00 00
> [   73.985111] ngene: Command timeout cmd=02 prev=00
> [   73.985415] host_to_ngene (c000): 02 04 00 d0 00 04 00 00
> [   73.985684] ngene_to_host (c100): 00 00 00 00 00 00 00 00
> [   73.985931] dev->hosttongene (ec902000): 02 04 00 d0 00 04 00 00
> [   73.986191] dev->ngenetohost (ec902100): 00 00 00 00 00 00 00 00
> [   73.986568] ngene 0000:00:05.0: PCI INT A disabled
> [   73.986584] ngene: probe of 0000:00:05.0 failed with error -1
> 
> 
> Sometimes the device (on guest) gets an msi-irq f. e. IRQ 29.
> Then kernel-modul (ngene) can succesfully load the driver and all works fine.
> 
> 
> Short to say:
> 
> HOST 	GUEST		STATUS
> MSI-IRQ	MSI-IRQ		ALL FINE
> MSI-IRQ IOAPIC-IRQ	DOESNÂt WORK
> 
> with modinfo I had a look at the kernel-modul if there is way to force
> msi, but without success.
> 
> But I think IRQ between (10-16) should also work because when I load the kernel-modul on host with IRQ (10-16)
> it works. (Device only getÂs an MSI-IRQ If I start the vm to passthrough)
> 
> Do anyone know where can be the problem?

Does '-device pci-assign,host=02:00.0,prefer_msi=off' help?

> 
> ** Affects: qemu
>      Importance: Undecided
>          Status: New
> 

You filed against the wrong component, device assignment is a qemu-kvm
feature, not yet one of qemu.

Jan

Attachment: signature.asc
Description: OpenPGP digital signature


[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