Moin,
hat jemand eine Kiste mit einem Silicon Image 3512 SATA Controller, der mit einer AMD64 CPU werkelt? Mit einem x86 Gentoo 2.6.9 Kernel wird meine am SATA hängende Platte gefunden, der AMD64 Port funktioniert aber nicht so recht mit dem o.g. Controller. Kernel ist hier auch ein 2.6.9, beim Laden des sata_sil Moduls kehrt der modeprobe Befehl nicht zurück :-( Kann man da was machen? Ach so, das Board ist ein Gigabyte K8NS Pro.
Muß man beim späteren Wechsel von x86 -> AMD64 irgendwas beachten?
Tschau,
andre
On Fri, Jan 28, 2005 at 01:11:37PM +0100, Andre Schulze wrote:
Moin,
Hi Andre,
Kernel ist hier auch ein 2.6.9, beim Laden des sata_sil Moduls kehrt der modeprobe Befehl nicht zurück :-( Kann man da was machen?
Yepp, debug output in den Driver (init_module) reinschreiben und dann schauen wo genau er hängen bleibt...
Ciao, Tobias
Am Fri den 28 Jan 2005 um 01:53:17PM +0100 schrieb Tobias Koenig:
Kernel ist hier auch ein 2.6.9, beim Laden des sata_sil Moduls kehrt
Korrektur: ist doch nur ein 2.6.7, der auf der 2004.3 Install CD drauf ist, was neueres gibt es noch nicht.
der modeprobe Befehl nicht zurück :-( Kann man da was machen?
Yepp, debug output in den Driver (init_module) reinschreiben und dann schauen wo genau er hängen bleibt...
Hm, so richtig schlau werde ich aus dem Code nicht, habe aber auch bisher kaum was mit C gemacht. Sollen die folgenden Codefragmente etwa bedeuten, daß das Modul letztlich in sil_init_one initialisiert wird? Ich verstehe schon das sil_init nicht, muß wohl ein Funktionspointer sein, denn sil_init wird nirgendwo als Variable deklariert.
module_init(sil_init);
static int __init sil_init(void) { return pci_module_init(&sil_pci_driver); }
static struct pci_driver sil_pci_driver = { .name = DRV_NAME, .id_table = sil_pci_tbl, .probe = sil_init_one, .remove = ata_pci_remove_one, };
static int sil_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) { static int printed_version; struct ata_probe_ent *probe_ent = NULL; ...
Im Moment ist es aber nicht so einfach das genauer zu untersuchen, da ich auf der betreffenden Maschine keinen GCC 3.4 habe, mit dem man AMD64 kompilieren soll. Werde einfach mal schauen, wie ich die ganzen Pakete sinnvoll nach Hause bekomme (habe kein DSL). Melde mich vielleicht noch mal... .
Tschau,
andre
Am Mon den 31 Jan 2005 um 11:32:52AM +0100 schrieb Andre Schulze:
Sorry, ist Montag ;-) Die Fragmente stammen natürlich aus driver/scsi/sata_sil.c falls jemand nachschauen möchte.
module_init(sil_init);
static int __init sil_init(void) { return pci_module_init(&sil_pci_driver); }
static struct pci_driver sil_pci_driver = { .name = DRV_NAME, .id_table = sil_pci_tbl, .probe = sil_init_one, .remove = ata_pci_remove_one, };
static int sil_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) { static int printed_version; struct ata_probe_ent *probe_ent = NULL; ...
Tschau,
andre
On Mon, Jan 31, 2005 at 11:32:52AM +0100, Andre Schulze wrote:
Am Fri den 28 Jan 2005 um 01:53:17PM +0100 schrieb Tobias Koenig:
Hi Andre,
module_init(sil_init);
static int __init sil_init(void) { return pci_module_init(&sil_pci_driver); }
sil_init wird zur Initialisierung des Drivers aufgerufen und registriert sich nur am PCI Subsystem.
Wenn du den Code nach
static int __init sil_init(void) { int retval = pci_module_init(&sil_pci_driver); kprint( "bin noch hier" ); return retval }
umschreibst, wird die debug Meldung dann ausgegeben?
.id_table = sil_pci_tbl, .probe = sil_init_one, .remove = ata_pci_remove_one, };
static int sil_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) { static int printed_version; struct ata_probe_ent *probe_ent = NULL; ...
sil_init_one wird dann für die Initialisierung der einzelnen Geräte aufgerufen. Wenn obige Debugmeldung kommt, musst du also hier noch ein paar verstecken.
Ciao, Tobias
lug-dd@mailman.schlittermann.de