summary refs log tree commit diff stats
path: root/results/scraper/launchpad-without-comments/795866
blob: c5d21ed27fbef6ae5b4c1deea7ed223bb9eb79aa (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
pci passthrough doesn´t work

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?