All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sinan Kaya <okaya@codeaurora.org>
To: linux-fbdev@vger.kernel.org, timur@codeaurora.org
Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	linux-arm-msm@vger.kernel.org,
	open list <linux-kernel@vger.kernel.org>,
	"open list:FRAMEBUFFER LAYER" <dri-devel@lists.freedesktop.org>,
	Sinan Kaya <okaya@codeaurora.org>,
	Peter Jones <pjones@redhat.com>,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH V2 2/2] efi/fb: Convert PCI bus address to resource if translated by the bridge
Date: Fri, 18 May 2018 10:17:51 -0400	[thread overview]
Message-ID: <1526653072-7153-2-git-send-email-okaya@codeaurora.org> (raw)
In-Reply-To: <1526653072-7153-1-git-send-email-okaya@codeaurora.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: 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 <okaya@codeaurora.org>
---
 drivers/video/fbdev/efifb.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c
index 6daac8d..429cc85 100644
--- a/drivers/video/fbdev/efifb.c
+++ b/drivers/video/fbdev/efifb.c
@@ -431,6 +431,7 @@ static void efifb_fixup_resources(struct pci_dev *dev)
 		.end = screen_info.lfb_base + screen_info.lfb_size - 1,
 		.flags = IORESOURCE_MEM,
 	};
+	struct pci_bus_region region;
 	int i;
 
 	if (efifb_pci_dev || screen_info.orig_video_isVGA != VIDEO_TYPE_EFI)
@@ -442,6 +443,10 @@ static void efifb_fixup_resources(struct pci_dev *dev)
 	if (!screen_res.start)
 		return;
 
+	region.start = screen_res.start;
+	region.end = screen_res.end;
+	pcibios_bus_to_resource(dev->bus, &screen_res, &region);
+
 	for (i = 0; i <= PCI_STD_RESOURCE_END; i++) {
 		struct resource *res = &dev->resource[i];
 
-- 
2.7.4

WARNING: multiple messages have this Message-ID (diff)
From: Sinan Kaya <okaya@codeaurora.org>
To: linux-fbdev@vger.kernel.org, timur@codeaurora.org
Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	linux-arm-msm@vger.kernel.org,
	open list <linux-kernel@vger.kernel.org>,
	"open list:FRAMEBUFFER LAYER" <dri-devel@lists.freedesktop.org>,
	Sinan Kaya <okaya@codeaurora.org>,
	Peter Jones <pjones@redhat.com>,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH V2 2/2] efi/fb: Convert PCI bus address to resource if translated by the bridge
Date: Fri, 18 May 2018 14:17:51 +0000	[thread overview]
Message-ID: <1526653072-7153-2-git-send-email-okaya@codeaurora.org> (raw)
In-Reply-To: <1526653072-7153-1-git-send-email-okaya@codeaurora.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: probing for efifb
efifb: cannot reserve video memory at 0x1e000000
efifb: framebuffer at 0x1e000000, using 1920k, total 1875k
efifb: mode is 800x600x32, linelength200, pages=1
efifb: scrolling: redraw
efifb: Truecolor: size=8:8:8:8, shift$:16:8:0

Use the host bridge offset information to convert bus address to
resource address in the fixup.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/video/fbdev/efifb.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c
index 6daac8d..429cc85 100644
--- a/drivers/video/fbdev/efifb.c
+++ b/drivers/video/fbdev/efifb.c
@@ -431,6 +431,7 @@ static void efifb_fixup_resources(struct pci_dev *dev)
 		.end = screen_info.lfb_base + screen_info.lfb_size - 1,
 		.flags = IORESOURCE_MEM,
 	};
+	struct pci_bus_region region;
 	int i;
 
 	if (efifb_pci_dev || screen_info.orig_video_isVGA != VIDEO_TYPE_EFI)
@@ -442,6 +443,10 @@ static void efifb_fixup_resources(struct pci_dev *dev)
 	if (!screen_res.start)
 		return;
 
+	region.start = screen_res.start;
+	region.end = screen_res.end;
+	pcibios_bus_to_resource(dev->bus, &screen_res, &region);
+
 	for (i = 0; i <= PCI_STD_RESOURCE_END; i++) {
 		struct resource *res = &dev->resource[i];
 
-- 
2.7.4


WARNING: multiple messages have this Message-ID (diff)
From: okaya@codeaurora.org (Sinan Kaya)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V2 2/2] efi/fb: Convert PCI bus address to resource if translated by the bridge
Date: Fri, 18 May 2018 10:17:51 -0400	[thread overview]
Message-ID: <1526653072-7153-2-git-send-email-okaya@codeaurora.org> (raw)
In-Reply-To: <1526653072-7153-1-git-send-email-okaya@codeaurora.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: 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 <okaya@codeaurora.org>
---
 drivers/video/fbdev/efifb.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c
index 6daac8d..429cc85 100644
--- a/drivers/video/fbdev/efifb.c
+++ b/drivers/video/fbdev/efifb.c
@@ -431,6 +431,7 @@ static void efifb_fixup_resources(struct pci_dev *dev)
 		.end = screen_info.lfb_base + screen_info.lfb_size - 1,
 		.flags = IORESOURCE_MEM,
 	};
+	struct pci_bus_region region;
 	int i;
 
 	if (efifb_pci_dev || screen_info.orig_video_isVGA != VIDEO_TYPE_EFI)
@@ -442,6 +443,10 @@ static void efifb_fixup_resources(struct pci_dev *dev)
 	if (!screen_res.start)
 		return;
 
+	region.start = screen_res.start;
+	region.end = screen_res.end;
+	pcibios_bus_to_resource(dev->bus, &screen_res, &region);
+
 	for (i = 0; i <= PCI_STD_RESOURCE_END; i++) {
 		struct resource *res = &dev->resource[i];
 
-- 
2.7.4

WARNING: multiple messages have this Message-ID (diff)
From: Sinan Kaya <okaya@codeaurora.org>
To: linux-fbdev@vger.kernel.org, timur@codeaurora.org
Cc: linux-arm-msm@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	Sinan Kaya <okaya@codeaurora.org>,
	Peter Jones <pjones@redhat.com>,
	Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	dri-devel@lists.freedesktop.org (open list:FRAMEBUFFER LAYER),
	linux-kernel@vger.kernel.org (open list)
Subject: [PATCH V2 2/2] efi/fb: Convert PCI bus address to resource if translated by the bridge
Date: Fri, 18 May 2018 10:17:51 -0400	[thread overview]
Message-ID: <1526653072-7153-2-git-send-email-okaya@codeaurora.org> (raw)
In-Reply-To: <1526653072-7153-1-git-send-email-okaya@codeaurora.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: 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 <okaya@codeaurora.org>
---
 drivers/video/fbdev/efifb.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c
index 6daac8d..429cc85 100644
--- a/drivers/video/fbdev/efifb.c
+++ b/drivers/video/fbdev/efifb.c
@@ -431,6 +431,7 @@ static void efifb_fixup_resources(struct pci_dev *dev)
 		.end = screen_info.lfb_base + screen_info.lfb_size - 1,
 		.flags = IORESOURCE_MEM,
 	};
+	struct pci_bus_region region;
 	int i;
 
 	if (efifb_pci_dev || screen_info.orig_video_isVGA != VIDEO_TYPE_EFI)
@@ -442,6 +443,10 @@ static void efifb_fixup_resources(struct pci_dev *dev)
 	if (!screen_res.start)
 		return;
 
+	region.start = screen_res.start;
+	region.end = screen_res.end;
+	pcibios_bus_to_resource(dev->bus, &screen_res, &region);
+
 	for (i = 0; i <= PCI_STD_RESOURCE_END; i++) {
 		struct resource *res = &dev->resource[i];
 
-- 
2.7.4

  reply	other threads:[~2018-05-18 14:17 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-18 14:17 [PATCH V2 1/2] efi/fb: Simplify fixup code to prefer struct resource Sinan Kaya
2018-05-18 14:17 ` Sinan Kaya
2018-05-18 14:17 ` Sinan Kaya
2018-05-18 14:17 ` Sinan Kaya
2018-05-18 14:17 ` Sinan Kaya [this message]
2018-05-18 14:17   ` [PATCH V2 2/2] efi/fb: Convert PCI bus address to resource if translated by the bridge Sinan Kaya
2018-05-18 14:17   ` Sinan Kaya
2018-05-18 14:17   ` Sinan Kaya
2018-06-13 14:22   ` Sinan Kaya
2018-06-13 14:22     ` Sinan Kaya
2018-06-13 14:22     ` Sinan Kaya
2018-06-13 15:06     ` Ard Biesheuvel
2018-06-13 15:06       ` Ard Biesheuvel
2018-06-13 15:06       ` Ard Biesheuvel
2018-06-13 15:17       ` okaya
2018-06-13 15:17         ` okaya at codeaurora.org
2018-06-13 15:17         ` okaya
2018-06-13 15:22         ` Ard Biesheuvel
2018-06-13 15:22           ` Ard Biesheuvel
2018-06-13 15:22           ` Ard Biesheuvel
2018-06-13 15:29           ` okaya
2018-06-13 15:29             ` okaya at codeaurora.org
2018-06-13 15:29             ` okaya
2018-06-13 15:45   ` Ard Biesheuvel
2018-06-13 15:45     ` Ard Biesheuvel
2018-06-13 15:45     ` Ard Biesheuvel
2018-06-13 15:50     ` okaya
2018-06-13 15:50       ` okaya at codeaurora.org
2018-06-13 15:50       ` okaya
2018-06-13 16:08     ` Bartlomiej Zolnierkiewicz
2018-06-13 16:08       ` Bartlomiej Zolnierkiewicz
2018-06-13 16:08       ` Bartlomiej Zolnierkiewicz
2018-06-13 16:08       ` Bartlomiej Zolnierkiewicz
2018-06-22  7:54       ` Ard Biesheuvel
2018-06-22  7:54         ` Ard Biesheuvel
2018-06-22  7:54         ` Ard Biesheuvel
2018-06-22 10:07         ` Bartlomiej Zolnierkiewicz
2018-06-22 10:07           ` Bartlomiej Zolnierkiewicz
2018-06-22 10:07           ` Bartlomiej Zolnierkiewicz
2018-06-22 10:07           ` Bartlomiej Zolnierkiewicz
2018-06-22 10:11           ` Bartlomiej Zolnierkiewicz
2018-06-22 10:11             ` Bartlomiej Zolnierkiewicz
2018-06-22 10:11             ` Bartlomiej Zolnierkiewicz
2018-06-22 10:11             ` Bartlomiej Zolnierkiewicz
2018-06-19 22:29   ` Bjorn Helgaas
2018-06-19 22:29     ` Bjorn Helgaas
2018-06-19 22:29     ` Bjorn Helgaas
2018-06-22 11:21     ` Ard Biesheuvel
2018-06-22 11:21       ` Ard Biesheuvel
2018-06-22 11:21       ` Ard Biesheuvel
2018-06-22 13:52       ` Sinan Kaya
2018-06-22 13:52         ` Sinan Kaya
2018-06-22 13:52         ` Sinan Kaya
2018-06-22 13:55         ` Ard Biesheuvel
2018-06-22 13:55           ` Ard Biesheuvel
2018-06-22 13:55           ` Ard Biesheuvel
2018-06-22 18:01           ` Ard Biesheuvel
2018-06-22 18:01             ` Ard Biesheuvel
2018-06-22 18:01             ` Ard Biesheuvel
2018-06-22 18:30             ` Sinan Kaya
2018-06-22 18:30               ` Sinan Kaya
2018-06-22 18:30               ` Sinan Kaya
2018-06-22 19:29               ` Ard Biesheuvel
2018-06-22 19:29                 ` Ard Biesheuvel
2018-06-22 19:29                 ` Ard Biesheuvel
2018-06-25  8:20                 ` Ard Biesheuvel
2018-06-25  8:20                   ` Ard Biesheuvel
2018-06-25  8:20                   ` Ard Biesheuvel
2018-06-25 15:52                   ` okaya
2018-06-25 15:52                     ` okaya at codeaurora.org
2018-06-25 15:52                     ` okaya
2018-06-25 17:28                     ` Sinan Kaya
2018-06-25 17:28                       ` Sinan Kaya
2018-06-25 17:28                       ` Sinan Kaya
2018-06-25 17:29                       ` Ard Biesheuvel
2018-06-25 17:29                         ` Ard Biesheuvel
2018-06-25 17:29                         ` Ard Biesheuvel
2018-06-25 17:31                         ` Sinan Kaya
2018-06-25 17:31                           ` Sinan Kaya
2018-06-25 17:31                           ` Sinan Kaya
2018-06-13 15:42 ` [PATCH V2 1/2] efi/fb: Simplify fixup code to prefer struct resource Ard Biesheuvel
2018-06-13 15:42   ` Ard Biesheuvel
2018-06-13 15:42   ` Ard Biesheuvel
2018-06-22 10:11   ` Bartlomiej Zolnierkiewicz
2018-06-22 10:11     ` Bartlomiej Zolnierkiewicz
2018-06-22 10:11     ` Bartlomiej Zolnierkiewicz
2018-06-22 10:11     ` Bartlomiej Zolnierkiewicz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1526653072-7153-2-git-send-email-okaya@codeaurora.org \
    --to=okaya@codeaurora.org \
    --cc=b.zolnierkie@samsung.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pjones@redhat.com \
    --cc=timur@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.