Errori xfermode e READ LOG DMA EXT sul mio SDD durante il boot

Problemi e discussioni inerenti al kernel e al supporto hardware in ambiente Linux
Rispondi
digitalone
Novello Arciere
Messaggi: 69
Iscritto il: 31 gennaio 2011, 23:49

Errori xfermode e READ LOG DMA EXT sul mio SDD durante il boot

Messaggio da digitalone » 5 gennaio 2017, 18:39

Salve a tutti, sono qui perché ho provato a esporre il mio problema sul forum internazionale, ma non sono stato minimamente calcolato. Spero di aver miglior fortuna qui.

Dunque, due settimane fa ho dovuto comprare un nuovo laptop a causa della rottura del vecchio. La mia scelta è ricaduta su un HP 255 G5.
All'interno possedeva un HDD meccanico e, sentendo che le memorie fisse di nuova generazione sono più veloci, l'ho sostituito con un SDD da 240 GB della Qumox.

Ho installato Arch Linux e va tutto bene, la differenza coi vecchi HDD si nota molto, sul precedente laptop il boot durava un tempo circa tre volte maggiore.
Tuttavia ci sono delle piccole pecche (che comunque non inficiano il corretto utilizzo del sistema). Sin dal primo boot, nel journal ho notato queste linee:

Codice: Seleziona tutto

ata1.00: qc timeout (cmd 0x47)
ata1.00: READ LOG DMA EXT failed, trying unqueued
ata1.00: failed to get Log Directory Emask 0x40
ata1.00: ATA-10: Qumox 240GB SSD, V2.7, max UDMA/133
ata1.00: 468862128 sectors, multi 1: LBA48 NCQ (depth 31/32),
ata1.00: failed to get Identify Device Data, Emask 0x40
ata1.00: failed to set xfermode (err_mask=0x40)
ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
ata1.00: NCQ Send/Recv Log not supported
ata1.00: NCQ Send/Recv Log not supported 
ata1.00: configured for UDMA/133
Partiamo da "NCQ Send/Recv Log not supported". È un problema noto.
L'SSD (o il chipset?) non supporta il Linux Native Command Queueing (NCQ). Quindi l'ho disabilitato aggiungendo il parametro libata.force=noncq in systemd-boot.

Fatto ciò, mi compaiono queste linee nel journal:

Codice: Seleziona tutto

ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
ata1.00: FORCE: horkage modified (noncq)
ata1.00: ATA-10: Qumox 240GB SSD, V2.7, max UDMA/133
ata1.00: 468862128 sectors, multi 1: LBA48 NCQ (not used)
Il che farebbe presumere che sia tutto okay, ma ci sono anche queste altre linee:

Codice: Seleziona tutto

ata1.00: qc timeout (cmd 0x47)
ata1.00: READ LOG DMA EXT failed, trying unqueued
ata1.00: failed to get Identify Device Data, Emask 0x40
ata1.00: failed to set xfermode (err_mask=0x40)
ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
ata1.00: configured for UDMA/133
Ora, cercando di andare con ordine, credo che qui ci siano tre problemi.

Il primo: qc timeout. Cosa sarebbe? Ho provato a cercare qualcosa, ma non ho trovato nulla.

Il secondo: failed to set xfermode. Questo è mostrato in rosso (anche prima di aggiungere libata.force=noncq come parametro kernel) e sembra essere collegato a "failed to get Identify Device Data". Anche in questo caso, ho provato a cercare, ma non ho trovato nulla di risolutivo.

E per ultimo, ma non meno importante: READ LOG DMA EXT failed. Non so se questo sia collegato a qc timeout, ma dopo aver fatto alcune ricerche sembra che l'SDD non supporti l'accesso DMA al log, dunque il kernel torna a utilizzare la modalità ATA CMD READ LOG EXT. Vedere qui.
L'SDD annuncerebbe al sistema di essere abilitato all'accesso DMA, ma in realtà questo non è supportato.
In effetti, dando il comando "hdparm -I /dev/sda", mi esce questa linea:

Codice: Seleziona tutto

Commands/features:
           *    READ_LOG_DMA_EXT equivalent to READ_LOG_EXT
READ_LOG_DMA_EXT equivalente a READ_LOG_EXT, dunque il kernel si aspetterebbe di poter effettuare un accesso DMA al log, ma questo fallisce e il timeout verrebbe raggiunto, giusto?

Quindi mi chiedo: per prevenire questo problema, c'è un modo per disabilitare durante il boot la modalità di lettura DMA del log? In sostanza, usare in predefinito ATA CMD READ LOG EXT invece che READ LOG DMA EXT? Purtroppo non sono riuscito a trovare un parametro kernel che permetta di fornire questa direttiva. Esiste qualche altro modo?

E per quanto riguarda "failed to set xfermode (err_mask=0x40)", questo problema è collegato a quanto esposto sopra o si tratta di un qualcosa di indipendente?

Prima che mi suggeriate di aggiornare il firmware del bios e dell'SSD: quello del bios l'ho già aggiornato dopo l'installazione di Windows 8.1 (sono in dual boot) e, per quanto riguarda l'SSD, mi duole dire che non esiste alcun aggiornamento (la versione 2.7, che si vede scritta nel log del journal sopra riportato, è l'unica disponibile).
Spero che possiate aiutarmi, grazie.

Avatar utente
TheSaint
Robin Hood
Messaggi: 7077
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: Errori xfermode e READ LOG DMA EXT sul mio SDD durante il boot

Messaggio da TheSaint » 6 gennaio 2017, 18:01

Ti posso suggerire di cercare su kernel.org o LKML. Se metti NCQ SSD site:kernel.org in una ricerca trovi diversi bug report ;)
F the saint
10 anni da questo forum ;)

digitalone
Novello Arciere
Messaggi: 69
Iscritto il: 31 gennaio 2011, 23:49

Re: Errori xfermode e READ LOG DMA EXT sul mio SDD durante il boot

Messaggio da digitalone » 6 gennaio 2017, 18:13

TheSaint ha scritto:Ti posso suggerire di cercare su kernel.org o LKML. Se metti NCQ SSD site:kernel.org in una ricerca trovi diversi bug report ;)
Provato a fare ricerche più approfondite, purtroppo non ne vengo a capo.
A quanto pare il NCQ è supportato, ma fallisce l'accesso DMA al log durante il boot perché l'SSD segnala tale accesso come abilitato quando in realtà non è vero.
Il NCQ non funziona solo per l'accesso al log, ma per il resto può essere abilitato e dovrebbe incrementare le prestazioni. Questo dovrebbe significare che non è supportato il queued TRIM, dunque quando si effettua il TRIM, lo fa in modalità unqueued.

Quello che non riesco a capire è come fare durante il boot per forzare il sistema ad andare direttamente ad accedere al log nella modalità normale piuttosto che quella DMA. So che è un problema del firmware dell'SSD, ma non credo la Qumox farà mai un aggiornamento, dunque speravo di poter trovare un workaround.

Avatar utente
TheSaint
Robin Hood
Messaggi: 7077
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: Errori xfermode e READ LOG DMA EXT sul mio SDD durante il boot

Messaggio da TheSaint » 6 gennaio 2017, 18:26

Ma ci sono gravi scompensi ?
F the saint
10 anni da questo forum ;)

digitalone
Novello Arciere
Messaggi: 69
Iscritto il: 31 gennaio 2011, 23:49

Re: Errori xfermode e READ LOG DMA EXT sul mio SDD durante il boot

Messaggio da digitalone » 6 gennaio 2017, 18:30

TheSaint ha scritto:Ma ci sono gravi scompensi ?
A quanto pare no, per ora non riscontro problemi, tuttavia quell'errore non mi piace e comunque il boot rimane in stallo per qualche secondo prima di arrivare al timeout mostrato sopra e vorrei evitare questo comportamento.

Rispondi