Forums Neueste Beiträge
 

PCI-Express vs. AGP im Linux Kernel

28/03/2008 - 10:54 von Alexander Griesser | Report spam
Griass eich!

Mal eine etwas theoretischere Frage auf die ich bis jetzt noch nie eine
wirklich detaillierte Antwort bzw. etwas definitives gefunden habe.

Es gibt Grafikkartentreiber (ich beziehe mich hier auf die von einem
namhaften kanadischen Hersteller der ungenannt bleiben will um keine
Werbung für ihn zu machen; Gott bewahre, wenn der Name hier auftaucht
möchte man fast meinen es gàbe einen vernünftigen Linux Support für
diese Grafikkarten...) die zu Zeiten programmiert wurden, als es
PCI-Express für Grafikkarten noch nicht gab, bzw. wo ich mir sicher
bin, dass PCI-Express Grafikkarten dieses Herstellers zum Zeitpunkt
des Releases des Treibers noch gar nicht am Markt und auch nicht mal
in Entwicklung waren.

Also gehen wir davon aus: Der Treiber weiß nix von eventuell per
PCI-Express angebundenen Grafikkarten.

Jetzt steckt John Doe eine derartige PCI-Express Grafikkarte in seinen
Rechner, verwendet den PCI/AGP Treiber des Herstellers für Linux und
kann dennoch ganz normal damit arbeiten.

Warum ist das so? Wird PCI-Express unter Linux über AGP Commands
emuliert? Ist das im Prinzip eh alles das gleiche? Gibts im Linux
Kernel überhaupt irgendwo dediziert Kommandos für die Suche nach Geràten
am PCI-Express Bus oder wird das dann mit pci_get_bus_and_slot()
realisiert?

Ich hoffe meine Frage ist hier halbwegs verstàndlich.
Es tauchen nàmlich immer wieder Probleme mit dieser Art der "Emulation"
(sofern es eine ist) auf, z.B. Fehlermeldungen bezüglich "Kann AGP
Device nicht in v2 Modus setzen", "Unable to bind AGP memory", etc.

Einerseits natürlich selbstverstàndlich (ist ja kein AGP im
herkömmlichen Sinne), andererseits: warum gehts dann überhaupt?

ciao,
ein auf Erleuchtung wartender Alex
 

Lesen sie die antworten

#1 Adalbert Michelic
28/03/2008 - 11:26 | Warnen spam
Gleich mal vorweg: Ich bin in dem Bereich kein Spezialist, und was
ich schreibe ist zum Teil Halbwissen - also bitte mit etwas Vorsicht
genießen. Ich nehme aber an, daß die wenigsten sich mit dem Bereich
zu 100% auskennen, deswegen gebe ich mal mein Halbwissen preis.

* On 2008-03-28, Alexander Griesser wrote:
Es gibt Grafikkartentreiber (ich beziehe mich hier auf die von einem
namhaften kanadischen Hersteller der ungenannt bleiben will um keine
Werbung für ihn zu machen; Gott bewahre, wenn der Name hier auftaucht
möchte man fast meinen es gàbe einen vernünftigen Linux Support für
diese Grafikkarten...) die zu Zeiten programmiert wurden, als es
PCI-Express für Grafikkarten noch nicht gab, bzw. wo ich mir sicher
bin, dass PCI-Express Grafikkarten dieses Herstellers zum Zeitpunkt
des Releases des Treibers noch gar nicht am Markt und auch nicht mal
in Entwicklung waren.

Also gehen wir davon aus: Der Treiber weiß nix von eventuell per
PCI-Express angebundenen Grafikkarten.

Jetzt steckt John Doe eine derartige PCI-Express Grafikkarte in seinen
Rechner, verwendet den PCI/AGP Treiber des Herstellers für Linux und
kann dennoch ganz normal damit arbeiten.

Warum ist das so? Wird PCI-Express unter Linux über AGP Commands
emuliert? Ist das im Prinzip eh alles das gleiche?



Prinzipiell ist das alles das gleiche -- nur das Businterface ist
halt anders. PCI hat 32 bit, 33 MHz (Standard, bis 64 bit/66 MHz
möglich, aber selten); AGP hat irgendwelche Schweinereien mit 66 MHz
und mehreren Datenpaketen pro Taktzyklus (aber ich glaub nur in eine
Richtung) und IIRC einer gegenüber PCI etwas erweiterten
Möglichkeit, auf den Systemspeicher zuzugreifen. PCI-X bietet bis zu
133 MHz (oder noch mehr?). PCIe ist dann noch das serielle
Gegenstück zu all dem, potentiell noch schneller, blabla.

Fürs Betriebssystem schaut das dann aber alles gleich/àhnlich aus,
der Unterschied steckt mehr in Details -- wie z.B., daß es die
unterschiedliche Modi 1x/2x/4x/8x nur bei AGP gibt.

Gibts im Linux Kernel überhaupt irgendwo dediziert Kommandos für
die Suche nach Geràten am PCI-Express Bus oder wird das dann mit
pci_get_bus_and_slot() realisiert?



Das möge jemand anderer beantworten; ich tendiere dazu, zu
behaupten, das schaut fürn Treiber nicht anders aus (bzw. nur, wenn
er es explizit will). Sonst sind das einfach mehrer PCI-Busse (siehe
auch lspci - z.B. 00:18.3 = Bus 00, Geràt 18, Funktion 3).

Ich hoffe meine Frage ist hier halbwegs verstàndlich.
Es tauchen nàmlich immer wieder Probleme mit dieser Art der "Emulation"
(sofern es eine ist) auf, z.B. Fehlermeldungen bezüglich "Kann AGP
Device nicht in v2 Modus setzen", "Unable to bind AGP memory", etc.



Ja, das sind dann AGP-Spezifika, die PCIe nicht hat/kann.

Einerseits natürlich selbstverstàndlich (ist ja kein AGP im
herkömmlichen Sinne), andererseits: warum gehts dann überhaupt?



Vermutlich ist das nochdazu ein doppelter Schmàh: der Grafikchip hat
ein AGP-Interface, das über eine AGP-PCIe-Bridge an den PCIe-Bus
gestöpselt wird.


Adalbert

Ähnliche fragen