From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Morton Subject: Re: sata_mv success on 2.6.16-rc6-mm2 (was: Re: 2.6.16-rc6-mm2) Date: Sat, 18 Mar 2006 11:57:37 -0800 Message-ID: <20060318115737.05aa167b.akpm@osdl.org> References: <20060318044056.350a2931.akpm@osdl.org> <20060318151010.GA19568@favonius> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Return-path: Received: from smtp.osdl.org ([65.172.181.4]:64403 "EHLO smtp.osdl.org") by vger.kernel.org with ESMTP id S1750876AbWCRUAi (ORCPT ); Sat, 18 Mar 2006 15:00:38 -0500 In-Reply-To: <20060318151010.GA19568@favonius> Sender: linux-ide-owner@vger.kernel.org List-Id: linux-ide@vger.kernel.org To: sander@humilis.net Cc: linux-ide@vger.kernel.org, jgarzik@favonius.humilis.net, lkml@rtr.ca Sander wrote: > > Andrew Morton wrote (ao): > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.16-rc6/2.6.16-rc6-mm2/ > > Good news! This kernel lets me use eight Maxtor sata disks in raid5 over > nForce4 and Marvell MV88SX6081. > Well that sounds like progress. > ... > > [ 83.244314] BUG: warning at drivers/scsi/sata_mv.c:1896/__msleep() > [ 83.244362] > [ 83.244362] Call Trace: {__mv_phy_reset+242} > [ 83.244509] {mv_channel_reset+133} {mv_interrupt+565} > [ 83.244669] {handle_IRQ_event+41} {__do_IRQ+155} > [ 83.244828] {do_IRQ+59} {default_idle+0} > [ 83.244989] {ret_from_intr+0} {thread_return+86} > [ 83.245172] {default_idle+45} {cpu_idle+98} > [ 83.245329] {start_secondary+1224} This is due to a -mm-only debug patch which generates a warning if any kernel code does a busywait delay of more than one millisecond. drivers/scsi/sata_mv.c:__msleep() is doing that. > [ 86.569852] ata5: dev 0 cfg 49:2f00 82:7c6b 83:7f09 84:4063 85:7c69 86:3e01 87:4063 88:007f > [ 86.569856] ata5: dev 0 ATA-7, max UDMA/133, 586114704 sectors: LBA48 > [ 86.570840] BUG: warning at drivers/scsi/libata-core.c:3884/__ata_qc_complete() > [ 86.570902] > [ 86.570903] Call Trace: {__ata_qc_complete+98} > [ 86.571046] {mv_interrupt+626} {handle_IRQ_event+41} > [ 86.571208] {__do_IRQ+155} {do_IRQ+59} > [ 86.571365] {ret_from_intr+0} {__reacquire_kernel_lock+39} > [ 86.571552] {thread_return+166} {schedule_timeout+138} > [ 86.571713] {process_timeout+0} {wait_for_completion_timeout+137} > [ 86.571878] {default_wake_function+0} {ata_exec_command+36} > [ 86.572042] {ata_exec_internal+266} {ata_set_mode+667} > [ 86.575479] {request_irq+130} {ata_device_add+1163} > [ 86.575639] {mv_init_one+1547} {pci_device_probe+221} > [ 86.575799] {driver_probe_device+82} {__driver_attach+0} > [ 86.575959] {__driver_attach+86} {bus_for_each_dev+67} > [ 86.576121] {bus_add_driver+116} {pci_bus_match+0} > [ 86.576279] {__pci_register_driver+85} {init+455} > [ 86.576438] {child_rip+8} {init+0} > [ 86.576582] {child_rip+0} This is: void __ata_qc_complete(struct ata_queued_cmd *qc) { WARN_ON(qc == NULL); /* ata_qc_from_tag _might_ return NULL */ WARN_ON(!(qc->flags & ATA_QCFLAG_ACTIVE)); complaining that ATA_QCFLAG_ACTIVE is not set.