From patchwork Tue Jan 7 00:55:47 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bjorn Helgaas X-Patchwork-Id: 307507 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.180.67]) by ozlabs.org (Postfix) with ESMTP id 4F2DD2C0084 for ; Tue, 7 Jan 2014 11:58:51 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757539AbaAGAzx (ORCPT ); Mon, 6 Jan 2014 19:55:53 -0500 Received: from mail-ig0-f178.google.com ([209.85.213.178]:51539 "EHLO mail-ig0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756728AbaAGAzv (ORCPT ); Mon, 6 Jan 2014 19:55:51 -0500 Received: by mail-ig0-f178.google.com with SMTP id ut6so271456igb.5 for ; Mon, 06 Jan 2014 16:55:50 -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=i+C6qXkXbmzQid1/QZi/CvBtojkpgApDpiBNCSFf4+I=; b=TmK0yiRZVIVlyNvMukidP0GyfHjNtpjl1a1AQKvfICmkl31cpbIGPVArRNtLMB1E/U T55DgVMqLD53WX6xUz2uMX+4KIzLRzKWJiGDxhoiY3/yu58V17pGE7IYD60Wj9r4Dnek ue8G/6OZsWyD1aP2mBX7QCeoogGARg8Cg5GJ8tkwQ1iyGupmmVSEpIdQBoTORqhophr9 TvKaQKDQhLIoQfmRnr1UNkKtP+V0YI2+rxzmPwSMpk6H7neMx3dVl6LlV/pmCZPSyPJi srFTpjpVFHjkp59es3HsnMEctEwDwMKWzD/DjKkbjSESbBmSnj2y5mXrgHNEcDk/FY8e SHZQ== 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=i+C6qXkXbmzQid1/QZi/CvBtojkpgApDpiBNCSFf4+I=; b=Yb+YGGhBYUcEMP0rHacmDnAmyuVbab0ikx/CPGYaeR7lO0fdFvok0uHZfG9+Bqwpm8 vAJYN2K7B+7v8wKY8521fYBpJLKFOrmtSqxfgHxMajA2YbhBf+Q194olk0ZvgSj9bZps L2a8TTPNgMBl0Lm1InpKbdyQ5PbQ96l5FVQmzymnFlaR7W9EOjyLxr0ceuWw9AXfx5WJ CE4bPgtlMh2Gdya7DH6r+EfhV6EhapQiuZ1W0xida5WlV3eTJlCpxWTqcHqD7rmseufw cX2x2g8PxHG8wxWZIQo/d6E+4QLF/vUCSt2GTU2nOf/XNfjF0O78HGibJiz7YjjpgBTV ew3A== X-Gm-Message-State: ALoCoQldxd9fHIvYmzpQobJijh0MMA8pCbSbIKNHJD4Ubfp7ufgmLhdG1kyPSst/iNxGUdsBsdjZ8LyJ/fHh2IFMZ+on4BqCogB0dh75prtqm1I/9ErJB6VbufUDg/CX05QH4wcrNRmF61k+poQRaZRupeG2QZN2St32rc5PhJbZjNwyWSQ4qc1vrohLgCjl4JkcZhNi+D/o7ktsr887nS0thmFZJzuc49R3fTKSWkLvC24Tg2AhBeI= X-Received: by 10.42.35.5 with SMTP id o5mr81698068icd.8.1389056150620; Mon, 06 Jan 2014 16:55:50 -0800 (PST) Received: from localhost ([172.29.127.26]) by mx.google.com with ESMTPSA id s4sm1034497ige.0.2014.01.06.16.55.48 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Mon, 06 Jan 2014 16:55:49 -0800 (PST) Subject: [PATCH v7 05/15] agp: Use pci_resource_start() to get CPU physical address for BAR 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:55:47 -0700 Message-ID: <20140107005547.10786.23438.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 amd_irongate_configure(), ati_configure(), and nvidia_configure() call ioremap() on an address read directly from a BAR. But a BAR contains a bus address, and ioremap() expects a CPU physical address. Use pci_resource_start() to obtain the physical address. Signed-off-by: Bjorn Helgaas --- drivers/char/agp/amd-k7-agp.c | 8 ++++---- drivers/char/agp/ati-agp.c | 8 ++++---- drivers/char/agp/nvidia-agp.c | 4 +++- 3 files changed, 11 insertions(+), 9 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/amd-k7-agp.c b/drivers/char/agp/amd-k7-agp.c index 9898ed6d5b9a..e8c2e9167e89 100644 --- a/drivers/char/agp/amd-k7-agp.c +++ b/drivers/char/agp/amd-k7-agp.c @@ -11,7 +11,7 @@ #include #include "agp.h" -#define AMD_MMBASE 0x14 +#define AMD_MMBASE_BAR 1 #define AMD_APSIZE 0xac #define AMD_MODECNTL 0xb0 #define AMD_MODECNTL2 0xb2 @@ -205,6 +205,7 @@ static int amd_irongate_fetch_size(void) static int amd_irongate_configure(void) { struct aper_size_info_lvl2 *current_size; + phys_addr_t reg; u32 temp; u16 enable_reg; @@ -212,9 +213,8 @@ static int amd_irongate_configure(void) if (!amd_irongate_private.registers) { /* Get the memory mapped registers */ - pci_read_config_dword(agp_bridge->dev, AMD_MMBASE, &temp); - temp = (temp & PCI_BASE_ADDRESS_MEM_MASK); - amd_irongate_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096); + reg = pci_resource_start(agp_bridge->dev, AMD_MMBASE_BAR); + amd_irongate_private.registers = (volatile u8 __iomem *) ioremap(reg, 4096); if (!amd_irongate_private.registers) return -ENOMEM; } diff --git a/drivers/char/agp/ati-agp.c b/drivers/char/agp/ati-agp.c index 53cb310d433e..ba83c11186ce 100644 --- a/drivers/char/agp/ati-agp.c +++ b/drivers/char/agp/ati-agp.c @@ -12,7 +12,7 @@ #include #include "agp.h" -#define ATI_GART_MMBASE_ADDR 0x14 +#define ATI_GART_MMBASE_BAR 1 #define ATI_RS100_APSIZE 0xac #define ATI_RS100_IG_AGPMODE 0xb0 #define ATI_RS300_APSIZE 0xf8 @@ -196,12 +196,12 @@ static void ati_cleanup(void) static int ati_configure(void) { + phys_addr_t reg; u32 temp; /* Get the memory mapped registers */ - pci_read_config_dword(agp_bridge->dev, ATI_GART_MMBASE_ADDR, &temp); - temp = (temp & 0xfffff000); - ati_generic_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096); + reg = pci_resource_start(agp_bridge->dev, ATI_GART_MMBASE_BAR); + ati_generic_private.registers = (volatile u8 __iomem *) ioremap(reg, 4096); if (!ati_generic_private.registers) return -ENOMEM; diff --git a/drivers/char/agp/nvidia-agp.c b/drivers/char/agp/nvidia-agp.c index ab65d55272c4..a1861b75eb31 100644 --- a/drivers/char/agp/nvidia-agp.c +++ b/drivers/char/agp/nvidia-agp.c @@ -106,6 +106,7 @@ static int nvidia_configure(void) { int i, rc, num_dirs; u32 apbase, aplimit; + phys_addr_t apbase_phys; struct aper_size_info_8 *current_size; u32 temp; @@ -152,8 +153,9 @@ static int nvidia_configure(void) pci_write_config_dword(agp_bridge->dev, NVIDIA_0_APSIZE, temp | 0x100); /* map aperture */ + apbase_phys = pci_resource_start(agp_bridge->dev, AGP_APERTURE_BAR); nvidia_private.aperture = - (volatile u32 __iomem *) ioremap(apbase, 33 * PAGE_SIZE); + (volatile u32 __iomem *) ioremap(apbase_phys, 33 * PAGE_SIZE); if (!nvidia_private.aperture) return -ENOMEM;