On 10/13/07, Jeff Garzik <jeff@xxxxxxxxxx> wrote: > Torsten Kaiser wrote: > > On 10/12/07, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > >> On Fri, 12 Oct 2007 10:31:42 +0200 "Torsten Kaiser" <just.for.lkml@xxxxxxxxxxxxxx> wrote: > >>> Oct 12 10:23:03 treogen smartd[6091]: Device: /dev/sdc, not found in > >>> smartd database. > >> hm. > >> > >>> Oct 12 10:23:03 treogen [ 105.990000] WARNING: at > >>> drivers/ata/libata-core.c:5752 ata_qc_issue() > >> Let's cc linux-ide. > >> > >>> Oct 12 10:23:03 treogen [ 105.990000] > >>> Oct 12 10:23:03 treogen [ 105.990000] Call Trace: > >>> Oct 12 10:23:03 treogen [ 105.990000] [<ffffffff804442ef>] > >>> ata_qc_issue+0x47f/0x540 > >>> Oct 12 10:23:03 treogen [ 105.990000] [<ffffffff80432e60>] scsi_done+0x0/0x20 > >>> Oct 12 10:23:03 treogen [ 105.990000] [<ffffffff80449c80>] > >>> ata_scsi_flush_xlat+0x0/0x30 > > > Oct 13 07:46:48 treogen [ 99.850000] > > Oct 13 07:46:48 treogen [ 99.850000] ata3: EH in SWNCQ > > mode,QC:qc_active 0x3 sactive 0x1 > > Oct 13 07:46:48 treogen [ 99.850000] ata3: SWNCQ:qc_active 0x1 > > defer_bits 0x0 last_issue_tag 0x0 > > The WARNING indicates that there is a SWNCQ bug in sata_nv. Given that > the problem appears when SYNCHRONIZE CACHE is being issued, I would I can't follow you on SYNCHRONIZE CACHE. The only command written to the syslog in the errors where 0x60==ATA_CMD_FPDMA_READ and 0xB0 (which is not in include/linux/ata.h, but ATA-6 says that this is SMART related. That makes sense, as smartd is failing). > guess that sata_nv is not properly handling non-queued commands. But that still seems correct, as I would not expect that SMART commands get queued. (Thats just a guess, as I did not try to find the code that does this distinction) > This is a patch from libata-dev.git#nv-swncq (via #ALL). Comparing sata_nv.c from 2.6.23-rc8-mm1 and 2.6.23-mm1 I see two changes, that look suspicious: http://git.kernel.org/?p=linux/kernel/git/jgarzik/libata-dev.git;a=commitdiff;h=31cc23b34913bc173680bdc87af79e551bf8cc0d The comment says: "ahci and sata_sil24 are converted to use ata_std_qc_defer()." But the patch also adds ".qc_defer = ata_std_qc_defer," to sata_nv.c The second change is the removal of the 'lock' spinlock from sata_nv.c that was used in nv_swncq_qc_issue and nv_swncq_host_interrupt. Should I try to revert one or both of these changes? Torsten - To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html