From patchwork Tue Jan 7 00:56:31 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bjorn Helgaas X-Patchwork-Id: 3445021 X-Patchwork-Delegate: bhelgaas@google.com Return-Path: X-Original-To: patchwork-linux-pci@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 2390B9F2E9 for ; Tue, 7 Jan 2014 00:57:59 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 4DA912017B for ; Tue, 7 Jan 2014 00:57:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6FCDD2016D for ; Tue, 7 Jan 2014 00:57:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757885AbaAGA4g (ORCPT ); Mon, 6 Jan 2014 19:56:36 -0500 Received: from mail-ie0-f182.google.com ([209.85.223.182]:37575 "EHLO mail-ie0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757884AbaAGA4d (ORCPT ); Mon, 6 Jan 2014 19:56:33 -0500 Received: by mail-ie0-f182.google.com with SMTP id as1so19545500iec.41 for ; Mon, 06 Jan 2014 16:56:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=subject:to:from:cc:date:message-id:in-reply-to:references :user-agent:mime-version:content-type:content-transfer-encoding; bh=PSHn55kH0VYc/1ILic6P6+RL1sdH7fU22mCNnNOmiA4=; b=mWhIfj0Qy7b+GjnHDh+NWLm9e2IgYMZuKJP3C1mE3oMvNbalnPj9ZrrsrkYUe4x6/k wVzB8bPiBic/vpSuDThUklejk3/GWM2dz9hc1wMoRVUeEuFkH2PjXRwQkM33P2/cgsPy 6y31ovPdPYHtS93Ofu9Q22/XDBlHoj1F+YP4UY8YVpqvvPejYlz25z6p5lTJsU90/UDf L4bILcWWQhoVylP9bp58Kb36FSfdmZXdO3h7j62g4BgQH6vWLc9rjjCQNw1r8WXm6lOq thWS+M19WIbrRLh++dBFKoay2kfG/BhhT7zM+97O1K91vop396qMUyeK+Lck+3X15Cim wChw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:from:cc:date:message-id:in-reply-to :references:user-agent:mime-version:content-type :content-transfer-encoding; bh=PSHn55kH0VYc/1ILic6P6+RL1sdH7fU22mCNnNOmiA4=; b=elLKI2VzJD1PBO7PzMEcKSWEOUEIrTOxUmW6VllMihmui39OIY7JqDYd22te5JAkRS KhlNH2ZZn0Rg6u06Uf7nX+ZAMkNHCOLegKi24rDwOmhWhssSThfWU39zePN+M+VeAep/ 0y+CprKJPEKZv4GbtOWcKM/doKz17F/IbvCqs9wysxxAaGC5vY6MYkEj54UmvhfP8Pmg 1w3HzhCc2/zC56hO5OYRMhfoOaj4NkDWpbW1coF42ENZ4prJbsOmhO34yamVKfTTajcP x6hWy7SRIGIRG2MIMd1o3WeaLZE6IDPwg0FXp4WRkPxdkHbCBUx3GcECrjDO1q5P8sql dwJQ== X-Gm-Message-State: ALoCoQkOLHJ0xpYWj53dCRmfO7Iz0ud5Rr5qTLuIp9wthcKoIObN53xeComqJv3gtFE++NLIWXM42z/qeSzVRjF07rNp+SaQxyTWs60jjdxL6Uh5/MBLEhEN+iwNQuLZq8kTOFz6AIim5mQjEtjvhM7hFDCn65Sw+JI5eAHRSMoBxQNDmMk/x++/vkZCkjDnMWU0QxJaVXvPVWU4aXtMXDq5IJy64Ho7pFNHvoQfGGs3CTKpsOi+6kI= X-Received: by 10.50.118.39 with SMTP id kj7mr22545895igb.37.1389056192795; Mon, 06 Jan 2014 16:56:32 -0800 (PST) Received: from localhost ([172.29.127.26]) by mx.google.com with ESMTPSA id f5sm908897igc.4.2014.01.06.16.56.31 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Mon, 06 Jan 2014 16:56:32 -0800 (PST) Subject: [PATCH v7 11/15] agp/intel: Use CPU physical address, not bus address, for ioremap() To: linux-pci@vger.kernel.org, Daniel Vetter From: Bjorn Helgaas Cc: David Airlie , Yinghai Lu , Guo Chao , linux-kernel@vger.kernel.org Date: Mon, 06 Jan 2014 17:56:31 -0700 Message-ID: <20140107005630.10786.35580.stgit@bhelgaas-glaptop.roam.corp.google.com> In-Reply-To: <20140107005003.10786.85164.stgit@bhelgaas-glaptop.roam.corp.google.com> References: <20140107005003.10786.85164.stgit@bhelgaas-glaptop.roam.corp.google.com> User-Agent: StGit/0.16 MIME-Version: 1.0 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP In i810_setup(), i830_setup(), and i9xx_setup(), we use the result of pci_bus_address() as an argument to ioremap() and to compute gtt_phys_addr. These should use pci_resource_start() instead because we want the CPU physical address, not the bus address. If there were an AGP device behind a host bridge that translated addresses, e.g., a PNP0A08 device with _TRA != 0, this would fix a bug. I'm not aware of any of those, but they are possible. Signed-off-by: Bjorn Helgaas --- drivers/char/agp/intel-gtt.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c index dd8b66a617dc..ad5da1ffcbe9 100644 --- a/drivers/char/agp/intel-gtt.c +++ b/drivers/char/agp/intel-gtt.c @@ -172,7 +172,7 @@ static void i8xx_destroy_pages(struct page *page) #define I810_GTT_ORDER 4 static int i810_setup(void) { - u32 reg_addr; + phys_addr_t reg_addr; char *gtt_table; /* i81x does not preallocate the gtt. It's always 64kb in size. */ @@ -181,7 +181,7 @@ static int i810_setup(void) return -ENOMEM; intel_private.i81x_gtt_table = gtt_table; - reg_addr = pci_bus_address(intel_private.pcidev, I810_MMADR_BAR); + reg_addr = pci_resource_start(intel_private.pcidev, I810_MMADR_BAR); intel_private.registers = ioremap(reg_addr, KB(64)); if (!intel_private.registers) @@ -782,9 +782,9 @@ EXPORT_SYMBOL(intel_enable_gtt); static int i830_setup(void) { - u32 reg_addr; + phys_addr_t reg_addr; - reg_addr = pci_bus_address(intel_private.pcidev, I810_MMADR_BAR); + reg_addr = pci_resource_start(intel_private.pcidev, I810_MMADR_BAR); intel_private.registers = ioremap(reg_addr, KB(64)); if (!intel_private.registers) @@ -1102,10 +1102,10 @@ static void i965_write_entry(dma_addr_t addr, static int i9xx_setup(void) { - u32 reg_addr; + phys_addr_t reg_addr; int size = KB(512); - reg_addr = pci_bus_address(intel_private.pcidev, I915_MMADR_BAR); + reg_addr = pci_resource_start(intel_private.pcidev, I915_MMADR_BAR); intel_private.registers = ioremap(reg_addr, size); if (!intel_private.registers) @@ -1114,7 +1114,7 @@ static int i9xx_setup(void) switch (INTEL_GTT_GEN) { case 3: intel_private.gtt_phys_addr = - pci_bus_address(intel_private.pcidev, I915_PTE_BAR); + pci_resource_start(intel_private.pcidev, I915_PTE_BAR); break; case 5: intel_private.gtt_phys_addr = reg_addr + MB(2);