Re: panic: sym: vtobus failed bei Freebsd Installation

From: Stefan Esser <se(at)FreeBSD.org>
Date: Sun, 21 Oct 2007 13:01:45 +0200

Stephan Anderegg schrieb:
> Am Dienstag, 16. Oktober 2007 23.43:05 schrieb Till Toenges:
>> Stephan Anderegg wrote:
>>> panic: sym: vtobus failed!
>>>
>>> Vor dieser Fehlermeldung werden die SCSI Geräte gescannt.
>>>
>>> Im PC ist eine alt SCSI Karte vom Typ
>>> LSI Logic / Symbios Logic 53c810(rev12)
>>> eingebaut.
>>>
>>> An dieser Karte ist ein Scanner den ich wenig brauche angeschlossen.
>>>
>>> Ich besitze einen PC mit amd64 Prozessor.
>>>
>>> Ich versuche FreeBSD 6.2 amd64 zu installieren.
>> Das ist "schon immer" so gewesen, dass die amd64 Version den sym-Treiber
>> nicht mag. Hat mich jedenfalls schon vor ein paar Jahren irritiert. Ich
>> habe damals einfach die 386-Version genommen, weil ich auf den
>> Controller nicht verzichten wollte.
>>
>> Es gibt dazu auch einen Eintrag im Bugtracking auf der FreeBSD-Site,
>> aber ich würde nicht darauf wetten, dass der demnächst gefixt wird.
>
> Tja dann werd ich es mal mit der i386 er Version versuchen.

Das Problem ist gelöst in RELENG_6 (dem Code der demnächst zu 6.3 wird)
und RELENG_7 (desgl. für 7.0).

Die Ursache ist, dass AMD64 mit 4KB großen VN-Pages arbeitet, um besser
mit der 32bit-Emulation unter 64bit klar zu kommen. Alle anderen 64bit
CPUs haben 8KB Pages, so dass die gleiche Anzahl von Pointern in eine
Page passt (1024, nur bei AMD64 sind es nur 512).

Da der NCR/Symbios SCSI-Host-Adapter einen kleinen Prozessor auf dem
Chip hat, der keine Virtual-Memory-Unterstützung hat (sondern sich auf
den Host-Prozessor verlässt, der alle Adressen für DMA und auch für
das Laden der Instruktionen auf "reale" Speicheradressen umrechnet),
müssen große Tabellen (oder auch Programme) physikalisch zusammen
hängend im Speicher stehen. Bei i386 ließ sich das leicht machen, da
eine 4KB-Page groß genug ist. Aber bei AMD64 enthalten die Tabellen
zum Teil 64bit Zeiger, und damit wachsen Datenstrukturen über 4KB.

Ich hatte bis vor kurzem keinen AMD64 Rechner (und benutze meinen
aktuellen Desktop-Rechner auch als i386/SMP, außer für Tests) und
konnte daher keine Fixes für das Page-Size-Problem testen. Einige
versuchte Fixes (mit contig_malloc(), einer Kernel-Funktion, die
physikalisch zusammenhängenden Speicher liefert), waren nicht
erfolgreich. Aber mangels eigener Tests habe ich nie nachvollziehen
können, warum das so war.

Ein AMD64-Benutzer hat dann aber einen Patch entwickelt, der die
zu große Datenstruktur splittet und zwar so, dass keine weiteren
Code-Changes nötig waren (ziemlich genial ;-) Diesen Patch habe
ich schon vor vielen Monaten ins Repository eingespielt (mit einer
Modifikation, die dafür sorgt, dass der Patch nur AMD64 beeinflusst,
da es auf den anderen 32bit- und 64bit-Architekturen ja vorher schon
ging). Und er wird entsprechend in den kommenden Releases enthalten
sein (noch dieses Jahr). Auf Wunsch kann ich aber gerne auch einen
Patch bereit stellen, der sym in 6.2/amd64 funktionieren lässt ...

Gruß, STefan

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sun 21 Oct 2007 - 13:05:23 CEST

search this site