Fw: Fw: Fw: Suche Linux-Anschluss im Raum Bi-Sennestadt
Jan 'RedBully' Seiffert
redbully at cc.fh-luh.de
Thu Apr 26 03:02:11 CEST 2007
Pfeiffer wrote:
[snip - SMI]
> OK, dass wäre dann auch klar. Kann man auf der x86-Hardware die MMU der CPU
> nicht dafür verwenden auch solche NMIs in einen anderen Speicherbereich
> umzulenken? Auf 68k-CPUs (020+) funktioniert sowas.
Da kommt das naechste Problem...
Wenn ein SMI kommt, geht der Prozessor in den SystemManagementMode (SMM)
dieser Modus hat sein eigenes Speichermapping, den das BIOS aufgesetzt
hat. Der SMM ist einer der "grossen Modus Operandi" den die CPU
unterstuezt (RealMode. Protected Mode, SMM, mit 64 Bit ein paar mehr).
Waehrend des SMM ist quasi ein anderer/eigener MMU-Kontext aktiv. Oh,
grad noch gelesen, gibt es fest seit Pentium...
Wie gesagt, es benutzt sein eigenes Speichermapping, gennant SMRAM.
Starten tut dieses SMRAM an der Addresse SMBASE. Nach einem PowerOnReset
steht die auf 0x30000. Geandert werden kann SMBASE nur aus dem SMM
heraus. Da der Processor der Hardware am Frontsidebus sogar mitteilt,
das er grad rum-SMM-ed, kann sie die Speicherzugriffe sogar ummappen in
einen nicht erreichbaren Speicherbereich.
Da 0x30000 bei 192kb waere und "im weg" ist das ummappen wohl das erste,
was ein BIOS macht. Es loest warsch. durch undokumentierte Schreiberei
in den Chipsatzregistern einen SMI aus und stellt dann alles um.
Oder macht der x86 einen
> Unterschied im MMU-Betrieb zwischen Supervisor und User-Mode?
Ja, die Wege des x86 sind unergruendlich ^^
Man muss das historisch betrachten. bis zum 186 gab es keine MMU und
keinen User o. Supervisormode, darum ist auch DOS so wie es ist.
Mit dem 286 hat Intel dann gleich richtig in die Kacke gehauen.
(Inteltypisch, erst nichts, dann...) Die MMU wurde fester bestandteil
der CPU mit eignen instruktionen, es gab Protetion-Level (5 wenn mich
nicht alles taeuscht, Ring 0 = Supervisormode, Ring 5 = Usermode). Die
MMU kann nur aus dem Supervisormode umprogrammiert werden.
Aber, abwaertskompatibel wie wir sind, startet, selbst heute ein Xeon
QuadCore 64-Bit, die CPU erstmal im 8086 modus, gennant RealMode, mit
A20-Gate, Segmentiertem Speicher und allem foo. Man muss erst die CPU in
den ProtectedMode mit MMU (oder 64-Bit modus) umschalten (achja, und das
A20-Gate ausmachen, sonst sieht man nur die haelfte vom Speicher, die
andere haelfte doppelt;).
x86 saugt Medizinbaelle durch Gartenschlaeuche, das will man nicht
freiwillig, denoch hat es sich durchgesetzt, ist so das VHS-Problem...
> Dann könnte man doch theoretisch solche Interrupts abfangen.
Der SMM ist noch so ein Modus, vollig eigen, mit eigenem Enviroment.
Reinkommen tut man nur, indem man am richtigen Prozessorbeinchen zuppelt.
Wie es schon das Prozessorhandbuch beschreibt:
SMM is a special-purpose operating mode provided for handling
system-wide functions like power management, system hardware control, or
proprietary OEM-designed code. It is intended for use only by system
firmware, not by applications software or general-purpose systems software.
Das haben sie Ausnahmsweise hinbekommen...
Linuxbios, anyone?
>
> Gruß
> Andre
>
Gruss
Jan
--
"Ich?" - "Sie!" - "Nein!" - "Doch!" - "Ohhhh!!"
More information about the Linux
mailing list