Unterschied Legacy/Native Endpoint PCIe

Gast #2377916
Lesenswert?
• ▲
▼
Andreas,

Die PCI SIG möchten drei PCI Eigenschaften aufs Abstellgleis schicken:
1) I/O Space
2) Devices deren BAR Resources unterhalb 4 GB gelegt werden muessen bzw. 
dessen DMA Controller keine 64-Bit Adressen generieren können.
3) Unterstützung von PCI Lock Semantics

Fällt dein Endpoint in einer dieser Kategorien, dann ist es ein Legacy 
Device sonst ein Full-Featured Device.

Was aber nicht heisst, dass dein full-featured Device z.B. keine I/O 
Space unterstützen darf. Nur wenn du I/O space unterstützt, muessen 
diese Register auch über Memory Space (Memory Mapped I/O) erreichbar 
sein. Entweder innerhalb eines bestehenden Mem-Space BARS oder über 
einen getrennten Mem Space BAR.

Bzgl. der 4 GB Anforderung, gilt das auch nur für prefetchable Mem 
Space. Nicht prefetchable Mem Space (FIFOs, Control Regs, Status 
Regs....) darf nach wie auf einer Plazierung < 4 GB ausgelegt sein. Es 
wird aber gefordert. dass alle Resourcen ohne "Side Effects" (eben alles 
ausser FIFOs, Cmd/Ctl Regs etc.) als prefetchable markiert sein muessen.

Noch ein übrigens, Legacy in diesem Zusammenhang hat gar nichts mit 
Legacy Interrupts (emulierte INTA.. INTD) zu tun. Sowohl full-featured 
als auch Legacy Endpoints muessen auch Legacy Interrupts unterstützen 
(natürlich nur falls Interrupts in deinem Design überhaupt verwendet 
werden). MSI(-X) muessen auch beide unterstützen (wieder, falls Ints 
überhaupt verwendet werden natürlich)
Gast #2383109
Lesenswert?
• ▲
▼
entschuldigt wenn ich mich da einmische,
aber müssen bei native PCI-Express wirklich auch die alten INT-Signale 
unterstützt werden? so weit ich die Spec verstanden hab darf man auch 
nur MSI und/oder MSI-X anbieten
Gast #2383888
Lesenswert?
• ▲
▼
Erik,

die Legacy INT-__Signale__ werden natürlich nicht unterstützt. PCIe 
kennt keine Sideband Signale (ausser im PC Umfeld, WAKE, SMBUS, JTAG 
etc.). Für die Legacy Interrupts INTA/INTB/INTC/INTD gibt es insgesamt 
acht Messages, je ein Assert_INTx sowie Deassert_INTx. Der Empfänger 
eines Interrupt Messages muss sich einen virtuellen Draht dazu "denken", 
der den aktuellen Zustand eines equivalenten INTx-Signals nachbildet. 
Der Legacy Interrupt Enable Mechanismus über das PCI Command Register is 
auch gleich geblieben.

Zum zweiten Teil deiner Frage, ja diese Messages muessen unbedingt von 
Legacy und nicht-legacy interrupt-fähigen Endpoints unterstützt werden. 
Windows XP z.B. kann gar kein MSI. Ein Endpoint, der gar keine INTx 
Messages generieren kann, würde unter XP nicht funktionieren. Ein Win-XP 
Gerätetreiber wird daher immer nur Legacy Interrupts aktivieren.

Charles
Gast #2384371
Lesenswert?
• ▲
▼
Hallo Charles,


Danke für Deine Antwort.
Das ältere Windowse kein MSI(-X) unterstützen ist mir bewusst, meine 
Frage zielte eher darauf ab ob die PCI(-Express)-Spezifikation explizit 
verlangt das ein interrupt-fähiger Endpoint auch immer die alten 
INT#-Signale (bei Express natürlich INT#-Messages) unterstützen muss. 
Ich habe so etwas nicht in den Spezifikationen gefunden.
Gerade wenn man an AHCI oder xHCI denkt, wo jeweils die Unterstützung 
von MSI und/oder MSI-X ausdrücklich verlangt wird, könnte man meinen das 
die alten INT#-Mechanismen aussterben sollen.


Grüße
Erik
Gast #2386916
Lesenswert?
• ▲
▼
Hallo,


zu der 4GB-Grenze muss noch gesagt werden das non-prefetchable Speicher 
gar nicht über der 4GB-Grenze liegen kann weil PCI-Bridges 
non-prefetchable Speicher nur unterhalb der 4GB-Grenze routen können. 
Nur für prefetchable Speicher kann man in einer PCI-2-PCI-Bridge auch 
einen Speicherbereich eintragen der oberhalb der 4GB-Grenze liegt.
Man könnte zwar ein PCI-Device bauen das für non-prefetchable Speicher 
so einen Doppel-BAR hat der auch Adressen über der 4GB-Grenze erlaubt 
(das ist in der PCI-Spezifikation nirgends explizit verboten) aber 
nutzen kann man das nicht wirklich (also man kann nur Adressen unter der 
4GB-Grenze eintragen) weil die PCI-Bridges das eben nicht unterstützen.


Grüße
Erik

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren