Linux-Kernel reserviert das erste 1 MByte des Hauptspeichers

Hinweis: In dem Thema Linux-Kernel reserviert das erste 1 MByte des Hauptspeichers gibt es 7 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • X86_RESERVE_LOW default ist scheinbar 64k bei Leap und TW.

    Den Wert kann man tatsächlich selbst schon ändern.Das ist ein ganz toller Hinweis! Aktuell haben AMD GPUs Probleme mit Kernel 5.12.x, vielleicht spielt das hier mit rein. Werd ich gleich mal 1024k einsetzen!


    Wirklich gut, dass darauf aufmerksam gemacht wird! Vielleicht sollte SUSE jetzt auch drauf reagieren und jetzt schon 1024k einsetzen und nicht erst später.


    EDIT=> 1024k geht nicht, bei 5.12.8 kann man max. 640k einsetzen

  • X86_RESERVE_LOW default ist scheinbar 64k bei Leap und TW.

    ...

    EDIT=> 1024k geht nicht, bei 5.12.8 kann man max. 640k einsetzen

    Huch ... wtf ...


    Ich muss gestehen, dass ich davon noch nie etwas mitbekommen habe. Zu meinem Verständnis: wer reserviert da was?

    Der Kernel einen Bereich für sich, damit das BIOS dort nichts macht?

    Oder das BIOS beansprucht diesen Bereich und dem Kernel wird gesagt: "Misch dich dort nicht ein!"? (Was ich vermute, weil das BIOS halt zuerst zum Zuge kommt).


    Und wie und wo kann man diesen Wert einstellen?

    Über die Suchmaschinen habe ich nichts gefunden, was ich verstehe ...

  • Aktuell haben AMD GPUs Probleme mit Kernel 5.12.x,

    Wo steht das? Ich nutze eine AMD GPU mit Kernel 5.12.9 und habe keinerlei Probleme. Das interessiert mich jetzt mal.

    EDIT=> 1024k geht nicht, bei 5.12.8 kann man max. 640k einsetzen

    Zitat

    Auch aktuelle Linux-Kernel reservieren schon den Anfang des Hauptspeichers, abhängig von der Konfiguration allerdings maximal 640 KByte.

    Kommt wohl erst noch.

    Zitat

    ... mit der Linux 5.13 ...

  • Vorsicht: Das Folgende ist nur eine zusammengegoogelte Arbeitshypothese ...:


    BIOSse dürfen eigentlich nur in den ersten 4k machen was sie wollen.


    Nicht selten benutzen sie mehr und daher nutzt der Kernel sicherheitshalber die ersten 64k nicht. Man kann aber dem System versichern, dass man ein richtig gutes BIOS hat ... dann setzt man "X86_RESERVE_LOW=4K".


    Bei Misstrauen gegenüber dem BIOS kann man CONFIG_X86_CHECK_BIOS_CORRUPTION=y setzen. Der Kernel versucht dann, bekannte Fälle zu erkennen und zu melden.


    Nun wurden BIOSse gefunden, die bei Suspend/Resume und dem An-/Ausstöpseln von Monitoren auch noch in höheren Bereichen den RAM benutzen und dabei Kerneldaten kaputt machen. Deshalb darf man X86_RESERVE_LOW auf bis zu 640K setzen. Das ist aber eher zum Ausprobieren da: "Wenn es hilft, dann ist das BIOS die Ursache der Probleme".


    640K einzustellen verursacht aber evtl. wieder Probleme im Bootprozess. Evtl. wird die Grenze auf 512K statt 640K runtergesetzt.

    Für den Inhalt des Beitrages 291359 haftet ausdrücklich der jeweilige Autor: Welm

  • Vorsicht: Das Folgende ist nur eine zusammengegoogelte Arbeitshypothese ...:

    Schön aber das beantwortet nur eine Hälfte meiner Frage

    Zitat

    Und wie und wo kann man diesen Wert einstellen?

    Steht derlei in einer Datei (in welcher?) oder sind das Kernelaufrufparameter wie z. B. nomodeset?

  • Schön aber das beantwortet nur eine Hälfte meiner Frage

    Steht derlei in einer Datei (in welcher?) oder sind das Kernelaufrufparameter wie z. B. nomodeset?

    Nein, das ist kein Kernelparameter, den man beim Booten übergeben könnte. Der Wert ist in den Kernel einkompiliert, wenn man den Wert ändern möchte, muss man den Kernel selbst neu bauen. Den Wert des aktuell laufenden Kernels kann man mit diesem Befehl auslesen:


    Code
    zcat /proc/config.gz | grep X86_RESERVE_LOW

    Aber wie oben geschriebn, in 5.13 wird der dann wohl per default 1024k sein, wer TW benutzt oder den stabilen TW Kernel, kommt automatisch in den Genuss des Wertes beim Wechsel auf 5.13.

  • (...)

    640K einzustellen verursacht aber evtl. wieder Probleme im Bootprozess. Evtl. wird die Grenze auf 512K statt 640K runtergesetzt.

    Wenn IBM doch bloß 1980 auf Motorola 68000 gesetzt hätte, dann wäre der Welt ehrlich eine Menge Leid erspart geblieben....