diff mbox series

fbdev: list all pci memory bars as conflicting apertures

Message ID 20190314114500.8336-1-kraxel@redhat.com (mailing list archive)
State New, archived
Headers show
Series fbdev: list all pci memory bars as conflicting apertures | expand

Commit Message

Gerd Hoffmann March 14, 2019, 11:45 a.m. UTC
Simply add all pci memory bars to struct apertures_struct in
remove_conflicting_pci_framebuffers(), without depending on the
res_id parameter.

The plan is to drop the res_id parameter later on.  For now keep the
parameter, use it for sanity-checking and warn on inconsistencies.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/video/fbdev/core/fbmem.c | 29 +++++++++++++++++++++++++----
 1 file changed, 25 insertions(+), 4 deletions(-)

Comments

Bartlomiej Zolnierkiewicz April 1, 2019, 2 p.m. UTC | #1
On 03/14/2019 12:45 PM, Gerd Hoffmann wrote:
> Simply add all pci memory bars to struct apertures_struct in
> remove_conflicting_pci_framebuffers(), without depending on the
> res_id parameter.
> 
> The plan is to drop the res_id parameter later on.  For now keep the
> parameter, use it for sanity-checking and warn on inconsistencies.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Patch queued for v5.2, thanks.

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
Daniel Vetter April 2, 2019, 12:09 p.m. UTC | #2
On Mon, Apr 1, 2019 at 4:00 PM Bartlomiej Zolnierkiewicz
<b.zolnierkie@samsung.com> wrote:
>
>
> On 03/14/2019 12:45 PM, Gerd Hoffmann wrote:
> > Simply add all pci memory bars to struct apertures_struct in
> > remove_conflicting_pci_framebuffers(), without depending on the
> > res_id parameter.
> >
> > The plan is to drop the res_id parameter later on.  For now keep the
> > parameter, use it for sanity-checking and warn on inconsistencies.
> >
> > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> > Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>
> Patch queued for v5.2, thanks.

Might be good to also stuff this into drm (double merge or topic
branch, whatever you prefer), since that's where all the users are.
Gerd also has some follow-up patches to apply on top of this one iirc.
-Daniel
Gerd Hoffmann April 2, 2019, 8:43 p.m. UTC | #3
On Tue, Apr 02, 2019 at 02:09:45PM +0200, Daniel Vetter wrote:
> On Mon, Apr 1, 2019 at 4:00 PM Bartlomiej Zolnierkiewicz
> <b.zolnierkie@samsung.com> wrote:
> >
> >
> > On 03/14/2019 12:45 PM, Gerd Hoffmann wrote:
> > > Simply add all pci memory bars to struct apertures_struct in
> > > remove_conflicting_pci_framebuffers(), without depending on the
> > > res_id parameter.
> > >
> > > The plan is to drop the res_id parameter later on.  For now keep the
> > > parameter, use it for sanity-checking and warn on inconsistencies.
> > >
> > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> > > Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> >
> > Patch queued for v5.2, thanks.
> 
> Might be good to also stuff this into drm (double merge or topic
> branch, whatever you prefer), since that's where all the users are.
> Gerd also has some follow-up patches to apply on top of this one iirc.

No follow-up patches yet.  Plan is to wait a bit, see if the
sanity-checks trigger, and if all goes well go drop the res_id
parameter in 5.3 ...

cheers,
  Gerd
Daniel Vetter April 3, 2019, 6:48 a.m. UTC | #4
On Tue, Apr 2, 2019 at 10:43 PM Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> On Tue, Apr 02, 2019 at 02:09:45PM +0200, Daniel Vetter wrote:
> > On Mon, Apr 1, 2019 at 4:00 PM Bartlomiej Zolnierkiewicz
> > <b.zolnierkie@samsung.com> wrote:
> > >
> > >
> > > On 03/14/2019 12:45 PM, Gerd Hoffmann wrote:
> > > > Simply add all pci memory bars to struct apertures_struct in
> > > > remove_conflicting_pci_framebuffers(), without depending on the
> > > > res_id parameter.
> > > >
> > > > The plan is to drop the res_id parameter later on.  For now keep the
> > > > parameter, use it for sanity-checking and warn on inconsistencies.
> > > >
> > > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> > > > Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> > >
> > > Patch queued for v5.2, thanks.
> >
> > Might be good to also stuff this into drm (double merge or topic
> > branch, whatever you prefer), since that's where all the users are.
> > Gerd also has some follow-up patches to apply on top of this one iirc.
>
> No follow-up patches yet.  Plan is to wait a bit, see if the
> sanity-checks trigger, and if all goes well go drop the res_id
> parameter in 5.3 ...

Hm I thought you had a patch to convert i915 over. Or did that land already?
-Daniel
Gerd Hoffmann April 3, 2019, 7:22 a.m. UTC | #5
On Wed, Apr 03, 2019 at 08:48:16AM +0200, Daniel Vetter wrote:
> On Tue, Apr 2, 2019 at 10:43 PM Gerd Hoffmann <kraxel@redhat.com> wrote:
> >
> > On Tue, Apr 02, 2019 at 02:09:45PM +0200, Daniel Vetter wrote:
> > > On Mon, Apr 1, 2019 at 4:00 PM Bartlomiej Zolnierkiewicz
> > > <b.zolnierkie@samsung.com> wrote:
> > > >
> > > >
> > > > On 03/14/2019 12:45 PM, Gerd Hoffmann wrote:
> > > > > Simply add all pci memory bars to struct apertures_struct in
> > > > > remove_conflicting_pci_framebuffers(), without depending on the
> > > > > res_id parameter.
> > > > >
> > > > > The plan is to drop the res_id parameter later on.  For now keep the
> > > > > parameter, use it for sanity-checking and warn on inconsistencies.
> > > > >
> > > > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> > > > > Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> > > >
> > > > Patch queued for v5.2, thanks.
> > >
> > > Might be good to also stuff this into drm (double merge or topic
> > > branch, whatever you prefer), since that's where all the users are.
> > > Gerd also has some follow-up patches to apply on top of this one iirc.
> >
> > No follow-up patches yet.  Plan is to wait a bit, see if the
> > sanity-checks trigger, and if all goes well go drop the res_id
> > parameter in 5.3 ...
> 
> Hm I thought you had a patch to convert i915 over. Or did that land already?

Ah, *that* one.  Yep, that is still sitting in a branch here.  Didn't
rebase it yet.  But I suspect it will be easier to first drop res_id
and then rebase the i915 patch on top of *that*, so I don't have to
figure which i915 revision needs which res_id ...

cheers,
  Gerd
Daniel Vetter April 3, 2019, 7:25 a.m. UTC | #6
On Wed, Apr 3, 2019 at 9:22 AM Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> On Wed, Apr 03, 2019 at 08:48:16AM +0200, Daniel Vetter wrote:
> > On Tue, Apr 2, 2019 at 10:43 PM Gerd Hoffmann <kraxel@redhat.com> wrote:
> > >
> > > On Tue, Apr 02, 2019 at 02:09:45PM +0200, Daniel Vetter wrote:
> > > > On Mon, Apr 1, 2019 at 4:00 PM Bartlomiej Zolnierkiewicz
> > > > <b.zolnierkie@samsung.com> wrote:
> > > > >
> > > > >
> > > > > On 03/14/2019 12:45 PM, Gerd Hoffmann wrote:
> > > > > > Simply add all pci memory bars to struct apertures_struct in
> > > > > > remove_conflicting_pci_framebuffers(), without depending on the
> > > > > > res_id parameter.
> > > > > >
> > > > > > The plan is to drop the res_id parameter later on.  For now keep the
> > > > > > parameter, use it for sanity-checking and warn on inconsistencies.
> > > > > >
> > > > > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> > > > > > Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> > > > >
> > > > > Patch queued for v5.2, thanks.
> > > >
> > > > Might be good to also stuff this into drm (double merge or topic
> > > > branch, whatever you prefer), since that's where all the users are.
> > > > Gerd also has some follow-up patches to apply on top of this one iirc.
> > >
> > > No follow-up patches yet.  Plan is to wait a bit, see if the
> > > sanity-checks trigger, and if all goes well go drop the res_id
> > > parameter in 5.3 ...
> >
> > Hm I thought you had a patch to convert i915 over. Or did that land already?
>
> Ah, *that* one.  Yep, that is still sitting in a branch here.  Didn't
> rebase it yet.  But I suspect it will be easier to first drop res_id
> and then rebase the i915 patch on top of *that*, so I don't have to
> figure which i915 revision needs which res_id ...

Ok, sounds like a plan for 5.3 somewhen.
-Daniel
diff mbox series

Patch

diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
index cb43a2258c51..e4e5c129a0f5 100644
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
@@ -1879,14 +1879,35 @@  int remove_conflicting_pci_framebuffers(struct pci_dev *pdev, int res_id, const
 {
 	struct apertures_struct *ap;
 	bool primary = false;
-	int err;
+	int err, idx, bar;
+	bool res_id_found = false;
 
-	ap = alloc_apertures(1);
+	for (idx = 0, bar = 0; bar < PCI_ROM_RESOURCE; bar++) {
+		if (!(pci_resource_flags(pdev, bar) & IORESOURCE_MEM))
+			continue;
+		idx++;
+	}
+
+	ap = alloc_apertures(idx);
 	if (!ap)
 		return -ENOMEM;
 
-	ap->ranges[0].base = pci_resource_start(pdev, res_id);
-	ap->ranges[0].size = pci_resource_len(pdev, res_id);
+	for (idx = 0, bar = 0; bar < PCI_ROM_RESOURCE; bar++) {
+		if (!(pci_resource_flags(pdev, bar) & IORESOURCE_MEM))
+			continue;
+		ap->ranges[idx].base = pci_resource_start(pdev, bar);
+		ap->ranges[idx].size = pci_resource_len(pdev, bar);
+		pci_info(pdev, "%s: bar %d: 0x%lx -> 0x%lx\n", __func__, bar,
+			 (unsigned long)pci_resource_start(pdev, bar),
+			 (unsigned long)pci_resource_end(pdev, bar));
+		idx++;
+		if (res_id == bar)
+			res_id_found = true;
+	}
+	if (!res_id_found)
+		pci_warn(pdev, "%s: passed res_id (%d) is not a memory bar\n",
+			 __func__, res_id);
+
 #ifdef CONFIG_X86
 	primary = pdev->resource[PCI_ROM_RESOURCE].flags &
 					IORESOURCE_ROM_SHADOW;