From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tejun Heo Subject: [CALL-FOR-HELP] pata_ali: can't get MWDMA working! Date: Thu, 10 Jan 2008 01:52:17 +0900 Message-ID: <4784FBC1.7070804@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------030905020201080606000802" Return-path: Received: from py-out-1112.google.com ([64.233.166.183]:5770 "EHLO py-out-1112.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752098AbYAIQw0 (ORCPT ); Wed, 9 Jan 2008 11:52:26 -0500 Received: by py-out-1112.google.com with SMTP id u52so493100pyb.10 for ; Wed, 09 Jan 2008 08:52:25 -0800 (PST) Sender: linux-ide-owner@vger.kernel.org List-Id: linux-ide@vger.kernel.org To: Jeff Garzik , Mark Lord , Alan Cox , IDE/ATA development list , andre@linux-ide.org, Bartlomiej This is a multi-part message in MIME format. --------------030905020201080606000802 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hello, all. Broken MWDMA on pata_ali has caused a number of bug reports. I've been trying to fix it for some time now && finally got a machine with pata_ali and non-working MWDMA2 ATAPI device on my desk a few weeks ago. Testing confirms what users have been reporting - MWDMA2 works fine with the IDE alim15x3 driver while any DMA data transfer on pata_ali times out. At first I thought this was simple timing programming error, but no. pata_ali's mode programming wasn't wrong although it was different in how it programs empty slots. Even after making pata_ali to program the controller exactly the same as alim15x3 (identical lspci -xxx results), MWDMA didn't work. (attached) I wondered whether the device was configured differently, so compared hdparm --Istdout results. They were identical too. (attached) I walked through IDE and libata codes and found some differences in the order registers are accessed and which values are written (e.g. libata never turns on device 0/1 DMA capable bits in BMDMA status register while IDE does). I made them access the registers in the same order and write the same values. Still no go. Then, I made libata probing sequence very close to IDE such that no reset is performed and NIEN isn't tempered with. No go. I thought maybe the drive should just be blacklisted. I took the laptop apart, took out the DVD combo drive to ICH7 ata_piix. It works just fine. So, I'm out of ideas at this point. Any suggestions? Ideas? Thanks. -- tejun --------------030905020201080606000802 Content-Type: text/plain; name="libata.pci" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="libata.pci" 00:10.0 IDE interface [Class 0101]: ALi Corporation M5229 IDE [10b9:5229] (rev c4) (prog-if b0) Subsystem: Hewlett-Packard Company Pavilion ze4400 builtin IDE [103c:0024] Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR-