[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Intel PRO/1000 GT unter Woody



On Tue, 2005-12-13 20:26:41 +0100, Florian Reitmeir <florian@reitmeir.org> wrote:
> > > DMA Zugriffe werden im Linuxkernel nicht von den Modulen gemacht, sondern vom
> > > PCI Layer.
> > pci_set_dma_mask() bekommt ein struct pci_dev * übergeben. Hoffentlich
> > hat sich die Struktur nicht geändert, sodaß die falschen Felder vom
> > befüllt werden...
> selbst wenn man mit dem Compiler den Code extremst optimiert, ist es sehr
> sehr unwahrscheinlich, dass Datenstrukturen sich dabei aendern.

Mit -Os bittest Du um Optimierung nach Größe, da ist das Ändern aller
allignments auf 1 (sodaß auch ein int32 auf einer 32bit-Architektur
nur Byte-aligned ist) mit eines der ersten Dinge, die man da so tun
kann, insbesondere, wenn die Architektur bei unaligned access nicht
gleich trapt...

> Bei allem Willen, ich kann wirklich nicht verstehen welche Probleme Du
> meinst. Objekt Files welche beim Kompilieren von C Programmen entstehen sind
> bei weitem nicht so "instabil" und "unberechenbar" wie Du in der Mail glauben
> machen willst. Und es aendern sich auch keine Datenstrukturen da ja der
> Kernel der gleiche ist.

Im Userland wird hinter den Mauern verdammt viel dafür getan, daß die
ABI erhalten bleibt, egal, wie man das libc-Interface zu verbiegen
versucht.

Spiel doch mal mit verschiedenen Varianten von -O6, -Os,
-funsigned-char etc. zu. Da hast Du dann so nette Effekte, wie, daß in
einem .o-File ein float-Vergleich mit == 0.0 funktioniert, in einem
anderen nur, wenn absl(value) <= 1.0e-50 benutzt wird (...weil einmal direkt
mit FP-Registern verglichen wird, die intern eine größere Auflösung
haben können und einmal mit einem aus dem RAM geladenen Wert...). Das
sind dann die spannenden Fälle, wo es manchmal funktioniert und man
dann suchen darf :)  ...und wie gesagt, so unterschiedliches Verhalten
kann man erreichen, nur indem man von außen Compiler-Optionen ändert.
Oder (gerade ein beispiel von letzte Tage), implementier' mal eine
Funktion namens sinl() und bau' die nicht mit -fno-builtin, da kommen
auch lustige Dinge bei heraus...

> Ich bastle wirklich viel an meinen Kerneln, Lokal und ab und zu wenn es
> notwenig ist auch bei Produktionssystemen. Datenkorruption hatte ich bisher
> nur 2x, einmal beim Einsatz von Reiser3 und einmal mit JFS. JFS hatte nen
> echten Bug, welcher einen Tag spaeter schon gefixt wurde. Reiser3 ist meiner
> Meinung nach ein Bug.

Wie gesagt, Glück gehabt (oder zu wenig Tester).

> Was ich sagen wollte, durch Kernelmodule, extern gebaut. Hatte ich wirklich
> noch nie Probleme. (abgesehen davon, dass es ab und zu schwer ist sie
> ueberhaupt zu bauen).

...und weil die so unproblematisch sind, hat man kernel-seitig die
taint-Flags eingeführt.

MfG, JBG

-- 
Jan-Benedict Glaw       jbglaw@lug-owl.de    . +49-172-7608481             _ O _
"Eine Freie Meinung in  einem Freien Kopf    | Gegen Zensur | Gegen Krieg  _ _ O
 für einen Freien Staat voll Freier Bürger"  | im Internet! |   im Irak!   O O O
ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));

Attachment: signature.asc
Description: Digital signature


Reply to: