Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp3281451imm; Thu, 17 May 2018 06:25:52 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqZbHlDgFUF6P66fRThSsyqo6dBbipdApMS8RezoNJbbXzUoqLtLH8cb3RUQBXWU/eg3grK X-Received: by 2002:a17:902:e8:: with SMTP id a95-v6mr5242691pla.274.1526563552301; Thu, 17 May 2018 06:25:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526563552; cv=none; d=google.com; s=arc-20160816; b=A3RxlktgCMUh2DkSfr4JsRwERKrUp7ccUipgMzUJt+IZ+cp2XWdcYSDWyZy+Yzd92k vaP4rN9bYwXpB9rq9+FISiLrw1hQA+NdXB9M02rl5+2xiAq4ac3yH5C1ABbtIyGdlxLj IlnRQZF2bwXd4xFr0lV1g7veqLGJGAeZf8xh8nrUdKvYRYuczwdRanRZKkx7llnK4MH/ V0XMo8YwlDRA3sQBy0dcW2i8cXmTuIn51FbY4TeuPC3coolzH4qO0OnKV7D8130wfAg+ hi2g/nc6lTCMvBhOW3BQZuQEJ1Qg+D6El8cYa9i1ltmupP5Mjwu5keirP1fh1jDegY0f RmXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dmarc-filter:dkim-signature :dkim-signature:arc-authentication-results; bh=L0AsPX2yqd6D2fuFwZipVftS4iLdzhSVUKrQTWnkdRA=; b=EJm4nJ7j3pYLVangqgFX6wBLGMsQPNLDHc/DtQ4hHT7ihtbmKrmVsZJPsVaTpHCHOi 87EZZDD+cTXKCKjdKrA0/YB9qucAwdtAPxZ1RSCoYMM4LM/r/MFiuZN30lIStgcVYAHL iJXVjiFtaT8m3ZbUcqnaL/0hl/YFCThoUdQCKNiT1co3dc/T5gYr07DfVGGV/sl9EspU rFaE5rFcl2LErPWcRaeCn+jEZcYZy6/1Wu1jPJPd4I+46Y+PT/77ZU7F7G9zSTpJZ5Rf zBRMdMxw7UhcK4PuFkQ67Fm3aSlmiIT1oGhMmC4x8LSe9Wy9t5EVzpah3eRjSORG8s9E kP5g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=ataKxERO; dkim=pass header.i=@codeaurora.org header.s=default header.b=M/P6Afj4; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s9-v6si5410355pfk.46.2018.05.17.06.24.57; Thu, 17 May 2018 06:25:52 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=ataKxERO; dkim=pass header.i=@codeaurora.org header.s=default header.b=M/P6Afj4; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752195AbeEQNWc (ORCPT + 99 others); Thu, 17 May 2018 09:22:32 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:39056 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751642AbeEQNWa (ORCPT ); Thu, 17 May 2018 09:22:30 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 26FB960C66; Thu, 17 May 2018 13:22:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1526563350; bh=AiMBoL3aNXek35Je6mKz2Ov00dSAMy1HjuXVxSGJj8Y=; h=From:To:Cc:Subject:Date:From; b=ataKxEROWfedM9EMyp6Pk5zRGBIRBehDLP3cNYAjRhoZMBkYd7CRP6ofl2SlyTTuU nzqMy1JJ/sXCfKv+CoZJHlBQzcFbGZwqTqG6gQMlWrzJhPnG1sH5hNlJ1TxdKv88e8 9b3dKClamP4rai7qY93J8nf5Q5B82la1uC1XJLO4= X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on pdx-caf-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=2.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,T_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.0 Received: from drakthul.qualcomm.com (global_nat1_iad_fw.qualcomm.com [129.46.232.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: okaya@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id 4F378609D1; Thu, 17 May 2018 13:22:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1526563349; bh=AiMBoL3aNXek35Je6mKz2Ov00dSAMy1HjuXVxSGJj8Y=; h=From:To:Cc:Subject:Date:From; b=M/P6Afj4G/7hCOJHm82NJEzhME28HelqPGiyE7vuRM1dYh15QK51qbEe0TuAm8UmH SpV42AToU2W/QhCg1GMV0YsMQhkForjK6OxL3kwGLZEyt8GOYU13CV+8MjxlXSiMPR AfvGP1IRCtIK571woSdSM5uMKqhTo6T2s/DlaOM8= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 4F378609D1 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=okaya@codeaurora.org From: Sinan Kaya To: linux-pci@vger.kernel.org, timur@codeaurora.org, ard.biesheuvel@linaro.org Cc: linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Sinan Kaya , Peter Jones , Bartlomiej Zolnierkiewicz , linux-fbdev@vger.kernel.org (open list:EFIFB FRAMEBUFFER DRIVER), dri-devel@lists.freedesktop.org (open list:FRAMEBUFFER LAYER), linux-kernel@vger.kernel.org (open list) Subject: [PATCH] efi/fb: Convert PCI bus address to resource if translated by the bridge Date: Thu, 17 May 2018 09:22:23 -0400 Message-Id: <1526563343-28721-1-git-send-email-okaya@codeaurora.org> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A host bridge is allowed to remap BAR addresses using _TRA attribute in _CRS windows. pci_bus 0000:00: root bus resource [mem 0x80100100000-0x8011fffffff window] (bus address [0x00100000-0x1fffffff]) pci 0000:02:00.0: reg 0x10: [mem 0x8011e000000-0x8011effffff] When a VGA device is behind such a host bridge and the resource is translated efifb driver is trying to do ioremap against bus address rather than the resource address and is failing to probe. efifb driver is having difficulty locating the base address from BAR address when efifb: probing for efifb efifb: cannot reserve video memory at 0x1e000000 efifb: framebuffer at 0x1e000000, using 1920k, total 1875k efifb: mode is 800x600x32, linelength=3200, pages=1 efifb: scrolling: redraw efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0 Use the host bridge offset information to convert bus address to resource address in the fixup. Signed-off-by: Sinan Kaya --- drivers/video/fbdev/efifb.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c index 46a4484..ea68d5c 100644 --- a/drivers/video/fbdev/efifb.c +++ b/drivers/video/fbdev/efifb.c @@ -428,6 +428,8 @@ static void efifb_fixup_resources(struct pci_dev *dev) { u64 base = screen_info.lfb_base; u64 size = screen_info.lfb_size; + struct pci_bus_region region; + struct resource res; int i; if (efifb_pci_dev || screen_info.orig_video_isVGA != VIDEO_TYPE_EFI) @@ -439,6 +441,14 @@ static void efifb_fixup_resources(struct pci_dev *dev) if (!base) return; + region.start = base; + region.end = base + size - 1; + res.start = 0; + res.flags = IORESOURCE_MEM; + pcibios_bus_to_resource(dev->bus, &res, ®ion); + if (res.start) + base = res.start; + for (i = 0; i <= PCI_STD_RESOURCE_END; i++) { struct resource *res = &dev->resource[i]; -- 2.7.4