From patchwork Mon Oct 12 07:28:26 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejun Heo X-Patchwork-Id: 35733 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 4AD09B6F2B for ; Mon, 12 Oct 2009 18:32:59 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753553AbZJLH3Y (ORCPT ); Mon, 12 Oct 2009 03:29:24 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754545AbZJLH3Y (ORCPT ); Mon, 12 Oct 2009 03:29:24 -0400 Received: from hera.kernel.org ([140.211.167.34]:45662 "EHLO hera.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753553AbZJLH3X (ORCPT ); Mon, 12 Oct 2009 03:29:23 -0400 Received: from htj.dyndns.org (IDENT:U2FsdGVkX1/VxjmiNfw1NxNyH700gTSffpxQBww9fHs@localhost [127.0.0.1]) by hera.kernel.org (8.14.2/8.14.2) with ESMTP id n9C7SRW9011246 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Mon, 12 Oct 2009 07:28:28 GMT Received: from [127.0.0.2] (htj.dyndns.org [127.0.0.2]) by htj.dyndns.org (Postfix) with ESMTPSA id CE46540E93596; Mon, 12 Oct 2009 16:28:26 +0900 (KST) Message-ID: <4AD2DA9A.7080503@kernel.org> Date: Mon, 12 Oct 2009 16:28:26 +0900 From: Tejun Heo User-Agent: Thunderbird 2.0.0.23 (X11/20090817) MIME-Version: 1.0 To: Greg KH CC: Jeff Garzik , IDE/ATA development list , balducci@units.it, Shane Huang , stable@kernel.org, maierp@informatik.tu-muenchen.de Subject: [PATCH #stable] ahci: disable 64bit DMA by default on SB600s References: <4AC71901.6010005@kernel.org> <4ACAC646.9050606@garzik.org> <20091009220248.GA28123@kroah.com> In-Reply-To: <20091009220248.GA28123@kroah.com> X-Enigmail-Version: 0.95.7 X-Virus-Scanned: ClamAV 0.93.3/9882/Mon Oct 12 03:15:10 2009 on hera.kernel.org X-Virus-Status: Clean X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00, UNPARSEABLE_RELAY autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on hera.kernel.org X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.0 (hera.kernel.org [127.0.0.1]); Mon, 12 Oct 2009 07:28:31 +0000 (UTC) Sender: linux-ide-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org Till now only one board, ASUS M2A-VM, can do 64bit dma with recent BIOSen. Enabling 64bit DMA by default already broke three boards. Enabling 64bit DMA isn't worth these regressions. Disable 64bit DMA by default and enable it only on boards which are known to work. Signed-off-by: Tejun Heo Reported-by: Gabriele Balducci Reported-by: maierp@informatik.tu-muenchen.de Cc: Shane Huang Cc: stable@kernel.org --- > This doesn't apply to the 2.6.31-stable tree. > > Tejun, could you respin this for the stable release, if you feel it > needs to be there? Yeap, here's minimal backport. Thanks. drivers/ata/ahci.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Index: tree0/drivers/ata/ahci.c =================================================================== --- tree0.orig/drivers/ata/ahci.c +++ tree0/drivers/ata/ahci.c @@ -433,7 +433,8 @@ static const struct ata_port_info ahci_p [board_ahci_sb600] = { AHCI_HFLAGS (AHCI_HFLAG_IGN_SERR_INTERNAL | - AHCI_HFLAG_NO_MSI | AHCI_HFLAG_SECT255), + AHCI_HFLAG_NO_MSI | AHCI_HFLAG_SECT255 | + AHCI_HFLAG_32BIT_ONLY), .flags = AHCI_FLAG_COMMON, .pio_mask = ATA_PIO4, .udma_mask = ATA_UDMA6, @@ -2608,7 +2609,7 @@ static void ahci_p5wdh_workaround(struct * 1501 which was released on 2007-10-26. Force 32bit DMA on anything * older than 1501. Please read bko#9412 for more info. */ -static bool ahci_asus_m2a_vm_32bit_only(struct pci_dev *pdev) +static bool ahci_asus_m2a_vm_enable_64bit(struct pci_dev *pdev) { static const struct dmi_system_id sysids[] = { { @@ -2639,12 +2640,12 @@ static bool ahci_asus_m2a_vm_32bit_only( if (date && strlen(date) >= 10 && date[2] == '/' && date[5] == '/' && (year > 2007 || (year == 2007 && strncmp(date, cutoff_mmdd, 5) >= 0))) - return false; + return true; dev_printk(KERN_WARNING, &pdev->dev, "ASUS M2A-VM: BIOS too old, " "forcing 32bit DMA, update BIOS\n"); - return true; + return false; } static bool ahci_broken_system_poweroff(struct pci_dev *pdev) @@ -2858,8 +2859,8 @@ static int ahci_init_one(struct pci_dev hpriv->flags &= ~AHCI_HFLAG_IGN_SERR_INTERNAL; /* apply ASUS M2A_VM quirk */ - if (ahci_asus_m2a_vm_32bit_only(pdev)) - hpriv->flags |= AHCI_HFLAG_32BIT_ONLY; + if (ahci_asus_m2a_vm_enable_64bit(pdev)) + hpriv->flags &= ~AHCI_HFLAG_32BIT_ONLY; if ((hpriv->flags & AHCI_HFLAG_NO_MSI) || pci_enable_msi(pdev)) pci_intx(pdev, 1);