# XEN Sourcen und NVIDIA?

## haegar87

Hallo alle zusammen,

ich habe ein kleines Problem. Ich versuche meinen Rechner um XEN zu erweitern, um nicht immer rebooten zu müssen, wenn ich mal unter Windows arbeiten muss...

Das Ziel wäre meine ganze restliche Windows Arbeit in eine virtuelle Maschine unter XEN zu verlegen, welche ich dann bei Bedarf starte.

Nun hat bisher alles funktioniert, allerdings stehe ich vor einem für mich nicht lösbaren Problem:

Ich brauche 3D Beschleunigung ...

Als Treiber hab ich zur Auswahl den quellenoffenen Treiber (nv) und den eigenen von NVIDIA (nvidia).

Ersterer hat bisher immer bestens bei mir funktioniert, und mir auch eine tolle 3D Beschleunigung spendiert. Allerdings bekomme ich ihn unter XEN nicht zum laufen. Er lässt sich zwar kompilieren und installieren, allerdings bekomme ich nur folgende Meldung wenn ich dann versuche das Modul zu laden:

```

Jul 28 20:44:41 qxg7 kernel: nvidia: module license 'NVIDIA' taints kernel.

Jul 28 20:44:41 qxg7 kernel: nvidia: Unknown symbol init_mm

```

Daraufhin hab ich recherschiert, und die Unterstützung für veraltete Symbole unter "Kernel Hacking" in der Menuconfig aktiviert.. allerdings bleibt das Ergebnis gleich -.-

Nun hab ich die nv Treiber probiert, diese laufen zwar problemlos, allerdings bekomme ich keine 3D Beschleunigung zum laufen.

Hier mal die Ausgabe von glxinfo:

```

name of display: :0.0

Xlib:  extension "GLX" missing on display ":0.0".

Xlib:  extension "GLX" missing on display ":0.0".

Xlib:  extension "GLX" missing on display ":0.0".

Xlib:  extension "GLX" missing on display ":0.0".

Xlib:  extension "GLX" missing on display ":0.0".

Error: couldn't find RGB GLX visual or fbconfig

Xlib:  extension "GLX" missing on display ":0.0".

Xlib:  extension "GLX" missing on display ":0.0".

Xlib:  extension "GLX" missing on display ":0.0".

Xlib:  extension "GLX" missing on display ":0.0".

Xlib:  extension "GLX" missing on display ":0.0".

Xlib:  extension "GLX" missing on display ":0.0".

Xlib:  extension "GLX" missing on display ":0.0".

3 GLXFBConfigs:

   visual  x  bf lv rg d st colorbuffer ax dp st accumbuffer  ms  cav

 id dep cl sp sz l  ci b ro  r  g  b  a bf th cl  r  g  b  a ns b eat

----------------------------------------------------------------------

Speicherzugriffsfehler

```

Der XOrg Server kann das Modul GLX auch nicht starten -.- (Musste es in der xorg.conf auskommentieren!)

Zum Schluss noch einmal ein Blick unter die Haube: (lspci Ausgabe)

```

00:00.0 Host bridge: Intel Corporation X58 I/O Hub to ESI Port (rev 13)

00:01.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 1 (rev 13)

00:03.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 3 (rev 13)

00:07.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 7 (rev 13)

00:13.0 PIC: Intel Corporation 5520/5500/X58 I/O Hub I/OxAPIC Interrupt Controller (rev 13)

00:14.0 PIC: Intel Corporation 5520/5500/X58 I/O Hub System Management Registers (rev 13)

00:14.1 PIC: Intel Corporation 5520/5500/X58 I/O Hub GPIO and Scratch Pad Registers (rev 13)

00:14.2 PIC: Intel Corporation 5520/5500/X58 I/O Hub Control Status and RAS Registers (rev 13)

00:16.0 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device (rev 13)

00:16.1 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device (rev 13)

00:16.2 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device (rev 13)

00:16.3 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device (rev 13)

00:16.4 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device (rev 13)

00:16.5 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device (rev 13)

00:16.6 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device (rev 13)

00:16.7 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device (rev 13)

00:1a.0 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #4

00:1a.1 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #5

00:1a.7 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #2

00:1b.0 Audio device: Intel Corporation 82801JI (ICH10 Family) HD Audio Controller

00:1c.0 PCI bridge: Intel Corporation 82801JI (ICH10 Family) PCI Express Port 1

00:1c.1 PCI bridge: Intel Corporation 82801JI (ICH10 Family) PCI Express Port 2

00:1c.2 PCI bridge: Intel Corporation 82801JI (ICH10 Family) PCI Express Port 3

00:1c.3 PCI bridge: Intel Corporation 82801JI (ICH10 Family) PCI Express Port 4

00:1c.4 PCI bridge: Intel Corporation 82801JI (ICH10 Family) PCI Express Port 5

00:1c.5 PCI bridge: Intel Corporation 82801JI (ICH10 Family) PCI Express Port 6

00:1d.0 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #1

00:1d.1 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #2

00:1d.2 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #3

00:1d.3 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #6

00:1d.7 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #1

00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 90)

00:1f.0 ISA bridge: Intel Corporation 82801JIR (ICH10R) LPC Interface Controller

00:1f.2 RAID bus controller: Intel Corporation 82801 SATA RAID Controller

00:1f.3 SMBus: Intel Corporation 82801JI (ICH10 Family) SMBus Controller

03:00.0 VGA compatible controller: nVidia Corporation Device 060f (rev a2)

06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)

07:00.0 Network controller: Intel Corporation WiFi Link 100 Series

08:00.0 FireWire (IEEE 1394): JMicron Technology Corp. IEEE 1394 Host Controller

08:00.1 System peripheral: JMicron Technology Corp. SD/MMC Host Controller

08:00.2 SD Host controller: JMicron Technology Corp. Standard SD Host Controller

08:00.3 System peripheral: JMicron Technology Corp. MS Host Controller

```

Bei der Grafikkarte handelt es sich um eine NVIDIA Geforce GTX285M (wird von lspci ja leider nicht richtig angezeigt =)

Ich hoffe jemand von euch kann mir weiterhelfen, es muss doch möglich sein, mit den XEN Sourcen auch eine 3D Beschleunigung zu bekommen, oder?

MIt freundlichen Grüßen,

haegar87

----------

## Christian99

hallo, so einfach ist das wohl nicht.

der nv treiber hat meines wissens nach keine 3d unterstützung, also kann er gar keine glx extension finden.

Der nvidia-Treiber kann nicht mit xen, da er extra angepasst werden müsste.

Du hast meines wissens nach noch 2 möglichkeiten:

1) nouveau-treiber installieren und hoffen das es geht, und dann noch mehr hoffen dass die 3d-unterstützung funktioniert. Und wenn du DANN noch glück hast, arbeitet er mit xen zusammen. Oder

2) xen hypervisor aufsetzen ohne grafiktreiber und dann eine virtuelle Linux-maschine aufsetzen, wenn deine hardware IOMMU (oder so ähnlich) unterstüzt (google mal nach "xen pci passthrough"), kannst du die Grafikkarte an die virtuelle Maschine weiterreichen, wo du dann den nvidia treiber installieren kannst. (Theoretisch, und wenn ich alles richtig verstanden habe, hab mich auch kürzlich damit befasst, habs aber nicht mal geschafft eine virtuelle maschine zu starten...)

Viel Erfolg

Christian

----------

## haegar87

Danke für die Antwort.

Leider unterstützt der noveau Treiber meine GraKa nicht, der geht nur bis zur 8er Serie >.<

Ich hab jetzt nochmal Foren gewälzt, und glaube das Problem mit dem nvidia Treiber gefunden zu haben.

Er benötigt die Funktion init_mm im Kernel welche zu den UNUSED Symbols gehört.

Aus der Kernel Mailingliste geht hervor, dass das benutzen von "CONFIG_UNUSED_SYMBOLS=y" den Effekt haben sollte, das die benötigte init_mm tortzdem wieder eingebaut wird.

Bei mir klappt das aber nur zu 50% ...

Hier zum Beispiel in der System.map:

```

qxg7 linux # grep init_mm System.map 

ffffffff8069a420 D init_mm

ffffffff806e9177 t init_mmap_min_addr

ffffffff8071d4c8 t __initcall_init_mmap_min_addr0

```

Da ist die Funktion vorhanden (1. Zeile)!

Wenn ich mir aber die kallsyms ansehe:

```

qxg7 linux # cat /proc/kallsyms | grep init_mm

ffffffff806e9177 t init_mmap_min_addr

```

Ist sie wieder nichtmehr vorhanden!?

Jemand eine Idee? Grundsätzlich werden die xen-sourcen zwar nicht vom nvidia Treiber unterstützt... aber ein einfach IGNORE_XEN_PRESENCE=y lässt ihn kompilieren.

Ich hab halt nur das Problem, dass der Kernel (wie alle ab 2.6.??) die Funktion init_mm nichtmehr bereitstellt, und nvidia ihren Treiber einfach nicht umschreiben will -.-

Grüße,

haegar87

----------

## trikolon

 *Quote:*   

> Ich brauche 3D Beschleunigung ... 

 

Das wirst du nciht so ohne weiteres hinbekommen. Entweder du reichst die ganze Graka an die VM durch, was aber entsprechende Hardware voraussetzt oder du wirst wohl kein Glück haben. Eine Möglichkeit ist, Virtualbox zu nehmen, da man da 3D Beschleunigung bis DX9.irgendwas hat.

Gruß

----------

