Hallo Liste,
ich habe ein Asus P4S8X mit SiS-Chipsatz und ein Problem mit USB 2.0. Ich habe ohci-hcd, uhci-hcd und ehci-hcd fest in meinen 2.6.6er vanilla-Kernel einkompiliert und beim Booten sagt er
ohci_hcd: 2004 Feb 02 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI) ohci_hcd: block sizes: ed 64 td 64 ohci_hcd 0000:00:03.0: OHCI Host Controller ohci_hcd 0000:00:03.0: irq 20, pci mem e1911000 ohci_hcd 0000:00:03.0: new USB bus registered, assigned bus number 1 hub 1-0:1.0: USB hub found hub 1-0:1.0: 2 ports detected ohci_hcd 0000:00:03.1: OHCI Host Controller ohci_hcd 0000:00:03.1: irq 21, pci mem e1926000 ohci_hcd 0000:00:03.1: new USB bus registered, assigned bus number 2 hub 2-0:1.0: USB hub found hub 2-0:1.0: 2 ports detected ohci_hcd 0000:00:03.2: OHCI Host Controller ohci_hcd 0000:00:03.2: irq 22, pci mem e1928000 ohci_hcd 0000:00:03.2: new USB bus registered, assigned bus number 3 hub 3-0:1.0: USB hub found hub 3-0:1.0: 2 ports detected ehci_hcd 0000:00:03.3: EHCI Host Controller ehci_hcd 0000:00:03.3: irq 23, pci mem e192f000 ehci_hcd 0000:00:03.3: new USB bus registered, assigned bus number 4 PCI: cache line size of 128 is not supported by device 0000:00:03.3 ehci_hcd 0000:00:03.3: USB 2.0 enabled, EHCI 1.00, driver 2003-Dec-29 hub 4-0:1.0: USB hub found hub 4-0:1.0: 6 ports detected
Wichtig ist die Zeile mit "cache line size of 128 is not supported ..." Wenn ich jetzt ein Gerät mit USB-2.0-Fähigkeit (meine externe WD-Platte; WDC1200B800) anhänge, wird es nicht dem EHCI zugeteilt, sondern dem OHCI - dementsprechend mies sind die Transferraten. Tools wie usbview zeigen den EHCI neben den drei OHCIs, aber er wird eben nicht genutzt.
Weiß jemand, was cache line size bedeutet, und wie ich entweder meinen EHCI dazu bringe, 128 zu mögen oder eine andere wähle?
Danke, Jonas
Hallo Jonas,
unabhängig davon was die Cache Line zu sagen hat, EHCI ist krank und funzt nur in den seltensten Fällen. Ich hab mich davon ganz schnell wieder verabschiedet und nehm mit der langsamen Geschwindigkeit Vorlieb. USB ist eh Dreck - es lebe SCSI!
Gruß Tilo
Tilo Wetzel tilo.wetzel@elline.de at 2004-06-09 1451 +0200:
wieder verabschiedet und nehm mit der langsamen Geschwindigkeit
Hm. 1 MBps ist ziemlich langsam, vor allem für ne Festplatte. Kommt daher nicht in Frage.
Vorlieb. USB ist eh Dreck - es lebe SCSI!
USB2.0/Firewire halte ich für externe Geräte irgendwie geeigneter. Oder hast du schon mal nen SCSI-Stick gesehen? ;)
Jonas, der sich immer noch auf brauchbare Antworten freut
hast du schon mal nen SCSI-Stick gesehen? ;)
leider nein *g*
Gruß Tilo
Hallo Jonas,
[09.06.04 12:17] Jonas Witt schrieb:
Hallo Liste,
ich habe ein Asus P4S8X mit SiS-Chipsatz und ein Problem mit USB 2.0. Ich habe ohci-hcd, uhci-hcd und ehci-hcd fest in meinen 2.6.6er vanilla-Kernel einkompiliert und beim Booten sagt er
Kannst Du das nicht die Module dazu bauen? Dann kannst Du die Modulladereihenfolge verändern. Vielleicht bringt das was. Oder Du läßt ohci-hcd weg.
Wichtig ist die Zeile mit "cache line size of 128 is not supported ..."
Für mich klingt es nicht nach dem Grund, warum es nicht geht. Es sieht eher nach einer Feststellung und nicht nach einer Fehlermeldung aus.
Bert
Bert Lange bert.lange@web.de at 2004-06-09 1612 +0200:
ich habe ein Asus P4S8X mit SiS-Chipsatz und ein Problem mit USB 2.0. Ich habe ohci-hcd, uhci-hcd und ehci-hcd fest in meinen 2.6.6er vanilla-Kernel einkompiliert und beim Booten sagt er
Kannst Du das nicht die Module dazu bauen? Dann kannst Du die Modulladereihenfolge verändern. Vielleicht bringt das was. Oder Du läßt ohci-hcd weg.
Das hatte ich auch schon probiert, hilft aber alles nichts. uhci-hcd hat ja eigentlich bei mir nichts zu suchen, da ich nur nen OHCI hab. Prinzipiell sollte es ja so laufen, dass der EHCI alle USB-1.1-Geräte an den OHCI oder UHCI übergibt, sofern einer da ist. Wenn ich z.B. nur ehci-hcd geladen habe, geht die Maus nicht. Das Problem ist, dass der EHCI auch die USB-2.0-HDD an den OHCI übergibt. Und da ist sie natürlich schlecht aufgehoben.
Wichtig ist die Zeile mit "cache line size of 128 is not supported ..."
Für mich klingt es nicht nach dem Grund, warum es nicht geht. Es sieht eher nach einer Feststellung und nicht nach einer Fehlermeldung aus.
Der entsprechende Code:
/* This can be overridden by arch code. */ u8 pci_cache_line_size = L1_CACHE_BYTES >> 2;
/** * pci_generic_prep_mwi - helper function for pci_set_mwi * @dev: the PCI device for which MWI is enabled * * Helper function for generic implementation of pcibios_prep_mwi * function. Originally copied from drivers/net/acenic.c. * Copyright 1998-2001 by Jes Sorensen, jes@trained-monkey.org. * * RETURNS: An appropriate -ERRNO error value on error, or zero for success. */ static int pci_generic_prep_mwi(struct pci_dev *dev) { u8 cacheline_size;
if (!pci_cache_line_size) return -EINVAL; /* The system doesn't support MWI. */
/* Validate current setting: the PCI_CACHE_LINE_SIZE must be equal to or multiple of the right value. */ pci_read_config_byte(dev, PCI_CACHE_LINE_SIZE, &cacheline_size); if (cacheline_size >= pci_cache_line_size && (cacheline_size % pci_cache_line_size) == 0) return 0;
/* Write the correct value. */ pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE, pci_cache_line_size); /* Read it back. */ pci_read_config_byte(dev, PCI_CACHE_LINE_SIZE, &cacheline_size); if (cacheline_size == pci_cache_line_size) return 0;
printk(KERN_WARNING "PCI: cache line size of %d is not supported " "by device %s\n", pci_cache_line_size << 2, pci_name(dev));
return -EINVAL; }
Wenn die cache line size größer als L1-Cache/4 und ein vielfaches dessen ist und der Wert außerdem ordentlich geschrieben und gelesen werden kann, ist alles in Ordnung. Wenn nicht, returnt er -EINVAL, d.h. invalid argument. Das übergebene device ist also "invalid"- will er nicht. Und "not supported" klingt für mich schon ziemlich nach Fehlermeldung.
Andererseits taucht der EHCI ja im System auf, z.B. usbview zeigt ihn ja an. Das könnte heißen, dass ihn der Kernel doch zumindest ein bisschen mag und du Recht hast. Aber warum kann er dann die HDD nicht als USB-2.0 erkennen und gibt sie an den OHCI weiter?
Ich hab auch mal das mit Gerätetreibern reich bestückte Feindbetriebssystem versucht, da aber auch nur ~1MBps erhalten. Ein Zeichen dafür, dass der EHCI im Arsch ist? Die Platte macht definiv
1MBps, ein Test bei nem Kumpel hat ~17MBps ergeben.
MfG, Jonas
Hallo Jonas,
[09.06.04 17:36] Jonas Witt schrieb:
Problem ist, dass der EHCI auch die USB-2.0-HDD an den OHCI übergibt. Und da ist sie natürlich schlecht aufgehoben.
Hmm.
Wichtig ist die Zeile mit "cache line size of 128 is not supported
printk(KERN_WARNING "PCI: cache line size of %d is not supported " "by device %s\n", pci_cache_line_size << 2, pci_name(dev));
return -EINVAL;
Also ein KERN_WARNING. Und es ist ja auch eine Maldung vom PCI-System, nicht vom ehci. Also ein bischen mag der Kernel ihn schon ;-)
Mittels $ cat /proc/bus/usb/devices bekommst Du ungefähr folgende Ausgabe:
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 97 Spd=12 MxCh= 2 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 0.00 S: Product=USB OHCI Root Hub [...]
In der Zeile mit dem D, steht die jeweilige Versionsnummer für das USB-Gerät. Guck mal, ob die stimmt.
Ich hab auch mal das mit Gerätetreibern reich bestückte Feindbetriebssystem versucht, da aber auch nur ~1MBps erhalten. Ein Zeichen dafür, dass der EHCI im Arsch ist? Die Platte macht definiv
1MBps, ein Test bei nem Kumpel hat ~17MBps ergeben.
Vielleicht kannst Du auch noch ein/zwei Kernelupdates abwarten. Bei mir hing sich ein Rechner auch immer auf, wenn die USB-Platte mal ein paar Daten mehr bekam (hab allerdings nur USB1.1). Mit 2.4.26 ging es dann. Der USB-ATA-Wandler war wohl buggy.
Bert
Bert Lange bert.lange@web.de at 2004-06-09 2226 +0200:
Mittels $ cat /proc/bus/usb/devices bekommst Du ungefähr folgende Ausgabe:
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 97 Spd=12 MxCh= 2 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 0.00 S: Product=USB OHCI Root Hub [...]
In der Zeile mit dem D, steht die jeweilige Versionsnummer für das USB-Gerät. Guck mal, ob die stimmt.
[...]
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 6 B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.06 S: Manufacturer=Linux 2.6.6 ehci_hcd S: Product=Silicon Integrated Systems [SiS] USB 2.0 Controller [...]
Sieht für mich alles in Ordnung aus.
MfG, Jonas
lug-dd@mailman.schlittermann.de