# Kernel & Hardware [RISOLTO]

## ma-fra

Funzionava tutto perfettamente quando .... ho deciso di ricompilare il kernel 'a mano' facendo un poco di ottimizzazioni e con il preciso obbiettivo di non utilizzare più genkernel.

Il risultato è che funziona ancora quasi tutto tranne il fatto che, durante il boot, rimane con: 'Waiting for uevents to be processed ...' per parecchi secondi e quando finalmente prosegue ... non ho più il mio disco SATA.

Ho tenuto copia del .config precedente e ho provato a rimettere tutti i moduli che usava genkernel relativi a SATA_ ma il risultato non cambia.

Il punto critico credo sia questo in dmesg:

libata version 3.00 loaded.

sata_uli 0000:00:1f.1: version 1.3

ACPI: PCI Interrupt 0000:00:1f.1[A] -> GSI 21 (level, low) -> IRQ 17

scsi0 : sata_uli

scsi1 : sata_uli

scsi2 : sata_uli

scsi3 : sata_uli

ata1: SATA max UDMA/133 cmd 0xc000 ctl 0xb800 bmdma 0xa800 irq 17

ata2: SATA max UDMA/133 cmd 0xb400 ctl 0xb000 bmdma 0xa808 irq 17

ata3: SATA max UDMA/133 cmd 0xc008 ctl 0xb806 bmdma 0xa810 cmd 0xb409 ctl 0xb006 bmdma 0xa818 irq 17

ata4: SATA max UDMA/133 irq 17

...

ata1: port is slow to respond, please be patient (Status 0xff)

ata1: device not ready (errno=-16), forcing hardreset

ata1: port is slow to respond, please be patient (Status 0xff)

ata1: COMRESET failed (errno=-16)

ata1: port is slow to respond, please be patient (Status 0xff)

ata1: COMRESET failed (errno=-16)

ata1: port is slow to respond, please be patient (Status 0xff)

...

ata1: COMRESET failed (errno=-16)

ata1: limiting SATA link speed to 1.5 Gbps

ata1: COMRESET failed (errno=-16)

ata1: reset failed, giving up

ata2: SATA link down (SStatus 0 SControl 300)

ata3: SATA link down (SStatus 0 SControl 300)

ata4: SATA link down (SStatus 0 SControl 300)

che, almeno per la prima parte corrisponde a quanto veniva indicato con il vecchio kernel

libata version 3.00 loaded.

sata_uli 0000:00:1f.1: version 1.3

PCI: Enabling device 0000:00:1f.1 (0105 -> 0107)

ACPI: PCI Interrupt 0000:00:1f.1[A] -> GSI 21 (level, low) -> IRQ 16

scsi0 : sata_uli

scsi1 : sata_uli

scsi2 : sata_uli

scsi3 : sata_uli

ata1: SATA max UDMA/133 cmd 0xc000 ctl 0xb800 bmdma 0xa800 irq 16

ata2: SATA max UDMA/133 cmd 0xb400 ctl 0xb000 bmdma 0xa808 irq 16

ata3: SATA max UDMA/133 cmd 0xc008 ctl 0xb806 bmdma 0xa810 cmd 0xb409 ctl 0xb006 bmdma 0xa818 irq 16

ata4: SATA max UDMA/133 irq 16

ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)

ata1.00: ATA-7: SAMSUNG HD160JJ, WU100-33, max UDMA7

ata1.00: 312581808 sectors, multi 16: LBA48 NCQ (depth 0/32)

ata1.00: configured for UDMA/133

ata2: SATA link down (SStatus 0 SControl 300)

ata3: SATA link down (SStatus 0 SControl 300)

ata4: SATA link down (SStatus 0 SControl 300)

scsi 0:0:0:0: Direct-Access     ATA      SAMSUNG HD160JJ  WU10 PQ: 0 ANSI: 5

sd 0:0:0:0: [sda] 312581808 512-byte hardware sectors (160042 MB)

sd 0:0:0:0: [sda] Write Protect is off

sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00

sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA

sd 0:0:0:0: [sda] 312581808 512-byte hardware sectors (160042 MB)

sd 0:0:0:0: [sda] Write Protect is off

sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00

sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA

sda: sda1 sda2 sda3 sda4 < sda5 >

sd 0:0:0:0: [sda] Attached SCSI disk

a aprte la riga con PCI: Enabliing ...  e il diverso IRQ

questo è lspci

00:00.0 Host bridge: ATI Technologies Inc Radeon Xpress 200 Host Bridge (rev 01)

00:01.0 PCI bridge: ATI Technologies Inc RS480 PCI Bridge

00:19.0 PCI bridge: ALi Corporation M5249 HTT to PCI Bridge

00:1b.0 Ethernet controller: ALi Corporation ULi 1689,1573 integrated ethernet. (rev 50)

00:1c.0 USB Controller: ALi Corporation USB 1.1 Controller (rev 03)

00:1c.1 USB Controller: ALi Corporation USB 1.1 Controller (rev 03)

00:1c.2 USB Controller: ALi Corporation USB 1.1 Controller (rev 03)

00:1c.3 USB Controller: ALi Corporation USB 2.0 Controller (rev 01)

00:1d.0 Multimedia audio controller: ALi Corporation M5455 PCI AC-Link Controller Audio Device (rev 20)

00:1e.0 ISA bridge: ALi Corporation PCI to LPC Controller (rev 31)

00:1e.1 Bridge: ALi Corporation M7101 Power Management Controller [PMU]

00:1f.0 IDE interface: ALi Corporation M5229 IDE (rev c7)

00:1f.1 SATA controller: ALi Corporation ULi 5287 SATA (rev 02)

01:05.0 VGA compatible controller: ATI Technologies Inc RC410 [Radeon Xpress 200]

02:15.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller (rev 46)

02:16.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 61)

02:16.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 61)

02:16.2 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 63)

e questo è emerge --info

Portage 2.1.4.4 (default/linux/x86/2008.0, gcc-4.1.2, glibc-2.6.1-r0, 2.6.24-gentoo-r8 i686)

=================================================================

System uname: 2.6.24-gentoo-r8 i686 Intel(R) Pentium(R) 4 CPU 3.00GHz

Timestamp of tree: Sat, 14 Jun 2008 08:17:01 +0000

app-shells/bash:     3.2_p33

dev-lang/python:     2.4.4-r13

dev-python/pycrypto: 2.0.1-r6

sys-apps/baselayout: 1.12.11.1

sys-apps/sandbox:    1.2.18.1-r2

sys-devel/autoconf:  2.13, 2.61-r1

sys-devel/automake:  1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.1

sys-devel/binutils:  2.18-r1

sys-devel/gcc-config: 1.4.0-r4

sys-devel/libtool:   1.5.26

virtual/os-headers:  2.6.23-r3

ACCEPT_KEYWORDS="x86"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-O2 -march=prescott -pipe -fomit-frame-pointer"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/config"

CONFIG_PROTECT_MASK="/etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/revdep-rebuild /etc/terminfo /etc/udev/rules.d"

CXXFLAGS="-O2 -march=prescott -pipe -fomit-frame-pointer"

... solo una parte per non tediare....

qualcuno può dirmi cosa ho tolto 'di troppo' ?Last edited by ma-fra on Wed Jul 09, 2008 8:17 pm; edited 1 time in total

----------

## ckx3009

non so di preciso cosa ti manca o cosa hai di troppo, ma immagino che tu non abbia fatto quello che segue:

- www.google.it

- howto gentoo sata

- click su "cerca con google"

il risultato di quest'operazione e' http://gentoo-wiki.com/HARDWARE_SATA

prova un po' a vedere se e' quello che serve a te  :Razz: 

cmq a parte tutto, se hai tenuto il .config precedente, puoi ripristinare tutto facilmente (usando il make menuconfig, magari)

----------

## .:deadhead:.

https://forums.gentoo.org/viewtopic-t-440468-highlight-lspci.html

----------

## ma-fra

niente da fare ....

avevo impostato tutto come descritto nel wiki e tutti i moduli relativi al mio hardware sono presenti ma il problema rimane.

ho ricompilato il kernel con il .config generato da genkernel ma nemmeno così funziona, l'unico modo è utilizzare initrd.

Possibile che non se ne possa fare a meno?

----------

## Kernel78

 *ma-fra wrote:*   

> niente da fare ....
> 
> avevo impostato tutto come descritto nel wiki e tutti i moduli relativi al mio hardware sono presenti ma il problema rimane.
> 
> ho ricompilato il kernel con il .config generato da genkernel ma nemmeno così funziona, l'unico modo è utilizzare initrd.
> ...

 

il .config generato genkernel fa affidamento sul fatto che verrà creato anche un initrd e quindi molte cose anche importanti vengono messe come moduli per essere caricate dall'initrd ... ovvio che se tu usi lo stesso .config senza dare al kernel la possibilità di avere quei moduli caricati non andrà un piffero ...

Prova a modificare il .config generato da genkernel mettendo come buildin tutti i moduli, in questo modo dovrebbe andare (non sono un guru del kernel e quindi non te lo assicuro al 100% ma mi sembra quasi certo che funzioni) poi facendo riferimento a questo nuovo config puoi lavorare di fino togliendo qui e limando li  :Wink: 

----------

## Tigerwalk

 *ma-fra wrote:*   

> niente da fare ....
> 
> avevo impostato tutto come descritto nel wiki e tutti i moduli relativi al mio hardware sono presenti ma il problema rimane.
> 
> ho ricompilato il kernel con il .config generato da genkernel ma nemmeno così funziona, l'unico modo è utilizzare initrd.
> ...

 

credo che per partire senza initrd, il kernel abbia bisogno della compilazione statica (non modulare) di tutti i moduli relativi ai filesystem, ai controller ed ai dischi in uso, perlomeno....!

----------

## .:chrome:.

 *Tigerwalk wrote:*   

> credo che per partire senza initrd, il kernel abbia bisogno della compilazione statica (non modulare) di tutti i moduli relativi ai filesystem, ai controller ed ai dischi in uso, perlomeno....!

 

non è esatto. quello che serve è che siano compilati in-kernel i moduli relativi al file system, alle memorie di massa su cui esso richiede, ed ai relativi controller; nulla di più.

----------

## Tigerwalk

 *.:chrome:. wrote:*   

>  *Tigerwalk wrote:*   credo che per partire senza initrd, il kernel abbia bisogno della compilazione statica (non modulare) di tutti i moduli relativi ai filesystem, ai controller ed ai dischi in uso, perlomeno....! 
> 
> non è esatto. quello che serve è che siano compilati in-kernel i moduli relativi al file system, alle memorie di massa su cui esso richiede, ed ai relativi controller; nulla di più.

 

Scusa, non ho capito la differenza tra quello che dicevo io e quello che hai detto tu! Ti riferisci alla compilazione built-in e non modulare, oppure ai file system, ai dischi (memorie di massa) ed ai controller dei dischi  :Question:   :Confused: 

----------

## Kernel78

Suppongo che quella di .:chrome:. fosse una puntualizzazione ...

tu hai parlato di mettere build-in tutti i moduli dei componenti in uso e lui specificava che servivano build-in solo i moduli necessari per l'avvio del kernel che poi avrebbe pensato a caricare i moduli necessari successivamente.

----------

## .:chrome:.

 *Tigerwalk wrote:*   

> Scusa, non ho capito la differenza tra quello che dicevo io e quello che hai detto tu! Ti riferisci alla compilazione built-in e non modulare, oppure ai file system, ai dischi (memorie di massa) ed ai controller dei dischi  

 

è effettivamente una precisazione. la differenza c'è ed è allo stesso tempo sottile e profonda.

brevemente, per non andare OT:

compilare dei moduli in-kernel è cosa diversa dal fare un kernel monolitico. cambiano le strutture interne ed il funzionamento. secondo alcune scuole di pensiero, peraltro condivisibili, i kernel monolitici sono intrinsecamente più sicuri, ma nessuno ha mai fornito una dimostrazione esatta diq uesto fatto.

in un kernel monolitico *tutti* i moduli sono compilati in-kernel, non solo alcuni; sono del tutto assenti le funzioni di caricamento e scaricamento dinamici di parti di codice eseguibile in spazio kernel; sono del tutto assenti gli hook per l'estensione del codice del kernel. in parole povere cambia in modo abbastanza radicale il funzionamento del kernel, ed il suo modo di usare l'hardware.

per come concepiamo l'uso del calcolatore oggi, soprattutto se si parla di personal computer, un kernel monolitico è secondo me inadatto; non a caso la tendenza di sviluppo è a modularizzare, ma questa è un'altra storia, ed io sono già abbondantemente OT.

----------

## fbcyborg

 *.:chrome:. wrote:*   

> quello che serve è che siano compilati in-kernel i moduli relativi al file system, alle memorie di massa su cui esso richiede, ed ai relativi controller; nulla di più.

 

Con la precedente informazione e quella che sto per darti io dovresti risolvere il problema.

Vai quì e postagli il risultato di un 

```
lspci -n
```

Successivamente ti verrà restituita una pagina che ti indica cosa è supportato dal kernel e quindi che moduli devi compilare.

Compilando staticamente sia i moduli del filesystem in uso, sia quelli sata e tutti quelli di base indicati nella documentazione ufficiale di Gentoo, più quelli dei controller dovresti ottenere un kernel funzionante.

Ciao  :Wink: 

----------

## Tigerwalk

Chiedo umilmente scusa ai mod. ed all'autore del post!

Probabilmente non mi sono espresso bene in italiano! Nel mio scritto, intendevo dire che bisogna compilare come build-in, i moduli per il file system (che si deve usare), i moduli dei controller (che si devono usare) ed i moduli dei dischi (mass storage) che si intende usare. Non intendevo la compilazione statica di tutti i moduli del kernel!

----------

## ma-fra

... non volevo scatenare tanto putiferio, vi ringrazio comunque tutti per l'attenzione. Forse non sono stato chiaro fin dall'inizio e questo ha sviato un po' la discussione. Cerco di concretizzare:

Io ho Gentoo installato su un disco ide (hda) e non ho nessun problema a farlo partire, con o senza genkernel o initrd. Ovviamente ho dovuto lavorare un poco per impostare le caratteristiche di base importanti e anche tutti i moduli relativi al mio hardware, ma funziona tutto: ide, DVD, scheda video, scheda audio, webcam, firewire per la videocamera ...... tutto tranne il controller SATA attaccato al quale ho un altro disco di cui mi piacerebbe continuare a disporre.

Il fatto è che il controller è gestito da 'SATA_ULI' ma non basta. Genkernel mi caricava come moduli tutti i possibili driver SATA esistenti, ma anche inserndoli tutti non va lo stesso: lui trova che sata_uli va bene e carica quello ma dev'essere qualcosìaltro ...Come potete vedere dal 'dmesg' cerca per un po di sincronizzarsi e poi rinuncia.

E' due notti che ricompilo kernel. Prima togliendo tutto quello che mi sembrava non dovesse servire .... poi lasciando via via sempre di più .... ora sono al punto che ricompilo per ogni cosa che tolgo anche se sembra non centrare assolutamente nulla perchè ormai è una questione di principio  e sono proprio curioso di trovare cosa cavolo è che ci vuole nel mio PC per usare sto' benedetto disco!

nota in calce .... deve proprio essere un disco strano perchè pochissime distro Linux lo vedono in fase di installazione .... Gentoo era uno di questi ....

----------

## djinnZ

Primo se hai riultati strani forse è il caso che ricompili il kernel dopo un make clean (genkernel settato a default lo fa stupidamente ogni volta ma se hai modificato alcuni paramentri relativi al processore od all'hardening è obbligatorio), secondo compila il driver uli come modulo e caricalo con modprobe giocando un poco con i parametri (se li ha) possibile che serva farlo partire ad un indirizzo particolare o l'HD richieda un certo delay per partire completamente prima di essere riconosciuto.

In ogni caso senza uno sguardo ad lspci ed a dmesg non vai avanti di certo. C'è qualche messaggio di errore dopo che il kernel ha inizializzato il controller?

----------

## ma-fra

ritorno da una (meritata) settimana di ferie ....

ho scoperto l'arcano: l'opzione del kernel che rende inutilizzabile il mio disco SATA è ....

Timer Frequency

se cambio da 100Hz a 1000Hz il disco non viene più riconosciuto!

Ora, premesso che il cambiamento della frequenza mi è stato 'ispirato' da un sequencer MIDI che stavo provando (rosegarden) il quale si lamentava del fatto che 100Hz fossro 'pochini', che faccio?

Metto 'RISOLTO' su questo post e ne apro un altro oppure qualcuno riesce a dirmi come mai ho questo 'bizzarro' risultato e cosa posso fare per risolvere definitivamente la questione?

grazie

P.S. come faccio a mettere RISOLTO nel post?

----------

## k01

 *ma-fra wrote:*   

> se cambio da 100Hz a 1000Hz il disco non viene più riconosciuto!

 

fra le due ci stanno 250Hz e 300Hz, con quelle come lavora?

 *ma-fra wrote:*   

> 
> 
> P.S. come faccio a mettere RISOLTO nel post?

 

cambi il titolo del primo post

----------

## ma-fra

bene ... ritorno dopo svariate compilazioni. Ero in errore: il cambiamento della frequenza del Timer (da solo) non ha nessuna influenza su udevd e la gestione del controller/disco SATA.

Quello che ha (molta) influenza è il parametro NR_CPUS che era impostato a 4 nel .config generato da genkernel e che io mi ostinavo a mettere a 2 (ho un Pentium4).

Bene, con 2 o 3 non funziona e cambiare la frequenza del Timer portava a risultati bizzarri: a volte il problema era solo con il controller sata, altre volte non faceva nemmeno il boot.

Mi rassegno a 'tenere' quattro CPU, così funziona anche a 1000 Hz ma mi rimane una grande curiosità: PERCHE'?

----------

