# Qemu-kvm wie PCI Karte des Hosts einbinden?

## boospy

Hallo Leute,

hab hier aktuell qemu-kvm in der Version 1.4.2 installiert. Ich möchte gerne mein TVkarte durchreichen. Aber irgendwie gibt es diese Option nicht bei mir. Sollte so aussehen:

```
-pcidevice host=bus:dev.func[,dma=none][,name=string]
```

http://www.linux-magazin.de/Ausgaben/2010/04/Was-ist-schon-real/(offset)/2

http://qemu-buch.de/de/index.php/QEMU-KVM-Buch/_Anhang/_Startoptionen_von_QEMU_und_KVM#Debugging.2FExperten-Optionen

Heist der Befehl jetzt anders?

lg

boospy

----------

## LinuxTom

Ich verwende den app-emulation/virt-manager der auf app-emulation/libvirt meines Servers geht (oder auch lokal) und somit mein app-emulation/qemu-kvm setuert. Im virt-manager konfiguriere ich grafisch einfach welche CPU, HDD usw. Und da kann ich auch einfach ein PCI-Device des Host's an den Gast durchreichen.

Ein laufendes qemu lässt es so aussehen:

 *Quote:*   

> qemu-system-x86_64: -device pci-assign,host=15:00.1,id=hostdev1,configfd=21,bus=pci.0,addr=0x7

 

Ich verwende die Version 0.15.1-r1.

Gruß

Thomas

EDIT: oder auch hier.

----------

## boospy

Hi, 

also irgendwie funktioniert das alles nicht. Wenn ich die PCIkarte im Virtmanager hinzufüge startet diese nicht mehr, und es kommen ein haufen nicht verständliche Errormeldungen des Virtmanager. Das einzig verständliche "Die Verbindung wurde vom Kommunikationspartner" zurückgesetzt.

Den Support hierfür hab ich:

```
[    0.000000] ACPI: DMAR 00000000bf7880c0 00090 (v01    AMI  OEMDMAR 00000001 MSFT 00000097)
```

Wenn ich dann laut Anleitung das Hostdevice trennen möchte, bleib ich schon beim Ersten Befehl hängen:

```
echo "14f1:8852" > /sys/bus/pci/drivers/pci-stub/new_id

echo: write error: das Argument ist ungültig
```

Ein Hotadd schaut dann so aus:

```
virsh # qemu-monitor-command testfoo device_add pci-assign,host=04:00.0,id=01:00:0

Fehler: internal error: Kann json device_add pci-assign,host=04:00.0,id=01:00:0: lexical error: invalid char in json text.

                                       device_add pci-assign,host=04:0

                     (right here) ------^

 nicht parsen
```

Also irgendwas mach ich da glaub ich noch falsch.

lg

boospy

----------

## LinuxTom

Schau mal in mein voriges Post am Ende. Da ist ein Edit mit einem Hinweis-Link. Beim Trennen des PCI Gerätes bitte keinen Doppelpunkt.

Aber bei mir habe ich es auch noch nicht geschafft, das Gerät in die VM durchzureichen. Ich hänge an einer späteren Stelle.

----------

## boospy

Ja, das mit dem Doppelpunkt ist mir schon klar...  :Wink:  Macht das was wenn die Treiber für das entsprechende Gerät fix im Kernel einkompiliert sind, oder ist das egal, ich meine wegen dem trennen.

```
Ich benutze folgende Versionen:

app-emulation/qemu 1.4.2

app-emulation/libvirt 1.1.1-r5

app-emulation/virt-manager 0.10.0
```

lg

boospy

----------

## LinuxTom

Ich habe nicht qemu, sondern noch qemu-kvm. Das kann aber auch wegen meiner noch älteren Version bedingt sein:

```
app-emulation/qemu-kvm-0.15.1-r1

app-emulation/libvirt-0.9.8

app-emulation/virt-manager-0.8.7
```

Ich kann meinen Server eben noch nicht updaten, da ich sonst gar kein TV mehr schauen kann. Darum die Verlagerung des VDR's in die KVM-VM.

----------

## LinuxTom

Ich bin meinem Problem auf die Schliche gekommen. Die CPU muss VT-d auch unterstützen. Egal was im Netz steht. Meine Intel-CPU unterstützt kein VT-d und somit kann ich mich auf den Kopf stellen. Also: Neue CPU.  :Sad: 

----------

## boospy

Also meine CPU sollte das schon unterstützen. Aus den Flags werde ich nicht schlau, aber INTEL Homepage meint was anderes.

```
processor   : 7

vendor_id   : GenuineIntel

cpu family   : 6

model      : 30

model name   : Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz

stepping   : 5

microcode   : 0x3

cpu MHz      : 1200.000

cache size   : 8192 KB

physical id   : 0

siblings   : 8

core id      : 3

cpu cores   : 4

apicid      : 7

initial apicid   : 7

fpu      : yes

fpu_exception   : yes

cpuid level   : 11

wp      : yes

flags      : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dtherm tpr_shadow vnmi flexpriority ept vpid

bogomips   : 5616.84

clflush size   : 64

cache_alignment   : 64

address sizes   : 36 bits physical, 48 bits virtual

power management:
```

http://ark.intel.com/products/41316

lg

boospy

----------

## firefly

@boospy: eventuell ist VT-d bei dir deaktiviert.

laut http://www.linux-kvm.org/page/How_to_assign_devices_with_VT-d_in_KVM

soll für VT-d folgendes in der ausgabe von dmesg auftauchen:

 *Quote:*   

>      Intel Machine
> 
>         dmesg | grep -e DMAR -e IOMMU 
> 
>      ...
> ...

 

----------

## boospy

Auftauchen tut bei mir das:

```
dmesg | grep -e DMAR -e IOMMU

[    0.000000] ACPI: DMAR 00000000bf7880c0 00090 (v01    AMI  OEMDMAR 00000001 MSFT 00000097)
```

Es ist ein Wert, wird wohl bei jedem verschieden sein. Im Bios finde ich hier kein Flag zum de oder aktivieren.

lg

boospy

----------

## firefly

du musst im kernel auch iommu für intel aktiviert haben (iommu über DMAR).

Pass aber auf, wo ich das auf meinem Laptop getestet habe konnte ich X mit den fglrx treibern nicht mehr starten.

Bekam folgende Fehlermeldung:

 *Quote:*   

> [  180.774322] dmar: DRHD: handling fault status reg 2
> 
> [  180.774326] dmar: DMAR:[DMA Read] Request device [01:00.0] fault addr 41aa22000 
> 
> DMAR:[fault reason 02] Present bit in context entry is clear

 

----------

## LinuxTom

@boospy: Da hast Du "Glück". Die gleiche Spezifikation für meine CPU (eine 960er) sagt halt, meine kann kein VD-d.   :Crying or Very sad: 

----------

## boospy

So, also ich hab jetzt auch endlich Option im Bios gefunden, war ein wenig versteckt. Ich hab auch das entsprechende Flag hierfür im Kernel kompiliert. Aber leider auch bei mir dann nix mehr mit Grafiktreiber. Ist wohl schon sehr advanced. 

Ich werd glaub ich passen. Na ich hoffe es gibt noch ne lange Zeit Kernelpatches für meine TVkarte. 

Oder vielleicht bring ich das Zeug auch mit Nvidia zum Laufen...

lg

boospy

----------

