NetBSD-Bugs archive

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

Re: kern/55682: siisata sometimes-panic when starting smartd



The following reply was made to PR kern/55682; it has been noted by GNATS.

From: mlelstv%serpens.de@localhost (Michael van Elst)
To: gnats-bugs%netbsd.org@localhost
Cc: 
Subject: Re: kern/55682: siisata sometimes-panic when starting smartd
Date: Fri, 25 Sep 2020 06:06:32 -0000 (UTC)

 thorpej%me.com@localhost writes:
 
 >                                /* read in specific information about error */
 >                                uint32_t prbfis = bus_space_read_stream_4(
 >                                    sc->sc_prt, sc->sc_prh,
 >                                    PRSX(chp->ch_channel, xfer->c_slot,
 >                                    PRSO_FIS));
 
 ata_queue_get_active_xfer might return NULL in case of an active NCQ
 transfer. The previous check of the ATACH_NCQ flag should probably
 avoid that case, but the flag looks bogus to me.
 
 This is set by atastart:
 
 >         if (ISSET(xfer->c_flags, C_NCQ))
 >                 SET(chp->ch_flags, ATACH_NCQ);
 >         else
 >                 CLR(chp->ch_flags, ATACH_NCQ);
 
 So it reflects the last transfer started, but not the transfer that
 has caused the error and I don't think it is cleared when a NCQ
 transfer is done.
 
 It's probably easier to ignore ATACH_NCQ and rely on the C_NCQ flag
 of the active transfer. E.g. make siisata skip reading the error
 condition when ata_queue_get_active_xfer returns NULL.
 
 -- 
 -- 
                                 Michael van Elst
 Internet: mlelstv%serpens.de@localhost
                                 "A potential Snark may lurk in every tree."
 


Home | Main Index | Thread Index | Old Index