All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michał Mirosław" <mirq-linux@rere.qmqm.pl>
To: dri-devel@lists.freedesktop.org
Cc: linux-fbdev@vger.kernel.org, linux-tegra@vger.kernel.org,
	Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	David Airlie <airlied@linux.ie>,
	amd-gfx@lists.freedesktop.org,
	virtualization@lists.linux-foundation.org,
	Eric Anholt <eric@anholt.net>,
	Thierry Reding <thierry.reding@gmail.com>,
	Alex Deucher <alexander.deucher@amd.com>,
	Maxime Ripard <maxime.ripard@bootlin.com>,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 03/12] fbdev: add remove_conflicting_pci_framebuffers()
Date: Thu, 30 Aug 2018 23:00:06 +0200	[thread overview]
Message-ID: <cab03a68df539b2f4be93a61323d3f3129c5325b.1535656077.git.mirq-linux__19843.7032210224$1535663833$gmane$org@rere.qmqm.pl> (raw)
In-Reply-To: <cover.1535656077.git.mirq-linux@rere.qmqm.pl>

Almost all PCI drivers using remove_conflicting_framebuffers() wrap it
with the same code.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
[for v1]
Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>

---
v2: add kerneldoc for DRM helper
---
 drivers/video/fbdev/core/fbmem.c | 22 ++++++++++++++++++++++
 include/drm/drm_fb_helper.h      | 24 ++++++++++++++++++++++++
 include/linux/fb.h               |  2 ++
 3 files changed, 48 insertions(+)

diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
index 0df148eb4699..927e016487e9 100644
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
@@ -34,6 +34,7 @@
 #include <linux/fb.h>
 #include <linux/fbcon.h>
 #include <linux/mem_encrypt.h>
+#include <linux/pci.h>
 
 #include <asm/fb.h>
 
@@ -1802,6 +1803,27 @@ int remove_conflicting_framebuffers(struct apertures_struct *a,
 }
 EXPORT_SYMBOL(remove_conflicting_framebuffers);
 
+int remove_conflicting_pci_framebuffers(struct pci_dev *pdev, int res_id, const char *name)
+{
+	struct apertures_struct *ap;
+	bool primary = false;
+
+	ap = alloc_apertures(1);
+	if (!ap)
+		return -ENOMEM;
+
+	ap->ranges[0].base = pci_resource_start(pdev, res_id);
+	ap->ranges[0].size = pci_resource_len(pdev, res_id);
+#ifdef CONFIG_X86
+	primary = pdev->resource[PCI_ROM_RESOURCE].flags &
+					IORESOURCE_ROM_SHADOW;
+#endif
+	remove_conflicting_framebuffers(ap, name, primary);
+	kfree(ap);
+	return 0;
+}
+EXPORT_SYMBOL(remove_conflicting_pci_framebuffers);
+
 /**
  *	register_framebuffer - registers a frame buffer device
  *	@fb_info: frame buffer info structure
diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h
index 1c1e53abb25d..6e1fc52d1b1b 100644
--- a/include/drm/drm_fb_helper.h
+++ b/include/drm/drm_fb_helper.h
@@ -587,4 +587,28 @@ drm_fb_helper_remove_conflicting_framebuffers(struct apertures_struct *a,
 #endif
 }
 
+/**
+ * drm_fb_helper_remove_conflicting_framebuffers - remove firmware framebuffers for PCI devices
+ * @pdev: PCI device being driven
+ * @resource_id: index of PCI BAR configuring framebuffer memory
+ * @name: requesting driver name
+ *
+ * This function removes framebuffer devices (eg. initialized by firmware)
+ * using memory range configured for @pdev's BAR @resource_id.
+ *
+ * The function assumes that PCI device with shadowed ROM is drives a primary
+ * display and so kicks out vga16fb.
+ */
+static inline int
+drm_fb_helper_remove_conflicting_pci_framebuffers(struct pci_dev *pdev,
+						  int resource_id,
+						  const char *name)
+{
+#if IS_REACHABLE(CONFIG_FB)
+	return remove_conflicting_pci_framebuffers(pdev, resource_id, name);
+#else
+	return 0;
+#endif
+}
+
 #endif
diff --git a/include/linux/fb.h b/include/linux/fb.h
index aa74a228bb92..abeffd55b66a 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -632,6 +632,8 @@ extern ssize_t fb_sys_write(struct fb_info *info, const char __user *buf,
 extern int register_framebuffer(struct fb_info *fb_info);
 extern int unregister_framebuffer(struct fb_info *fb_info);
 extern int unlink_framebuffer(struct fb_info *fb_info);
+extern int remove_conflicting_pci_framebuffers(struct pci_dev *pdev, int res_id,
+					       const char *name);
 extern int remove_conflicting_framebuffers(struct apertures_struct *a,
 					   const char *name, bool primary);
 extern int fb_prepare_logo(struct fb_info *fb_info, int rotate);
-- 
2.18.0

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

  parent reply	other threads:[~2018-08-30 21:00 UTC|newest]

Thread overview: 191+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-24 17:53 [PATCH 00/13] remove_conflicting_framebuffers() cleanup Michał Mirosław
2017-11-24 17:53 ` [PATCH 01/13] fbdev: show fbdev number for debugging Michał Mirosław
2017-11-24 17:53 ` [PATCH 02/13] fbdev: add remove_conflicting_pci_framebuffers() Michał Mirosław
     [not found]   ` <1738dbed0239bffc886f126fd3091daa39cd14c9.1511544782.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org>
2017-11-27 10:27     ` Daniel Vetter
2017-11-27 20:52       ` Sudip Mukherjee
2017-11-27 20:52       ` Sudip Mukherjee
2017-11-28 10:22         ` Daniel Vetter
2017-11-28 11:32           ` Greg KH
2017-11-28 12:30             ` Sudip Mukherjee
2017-11-28 13:06               ` Greg KH
2017-11-29  9:56               ` Daniel Vetter
2017-11-30 23:49                 ` Sudip Mukherjee
2017-11-30 23:49                 ` Sudip Mukherjee
2017-12-01  7:19                   ` Daniel Vetter
2017-12-01 14:10                     ` Sudip Mukherjee
2017-12-01  7:19                   ` Daniel Vetter
2017-12-01 14:40                   ` Emil Velikov
2017-12-01 14:40                   ` Emil Velikov
2017-12-11 21:57                     ` Sudip Mukherjee
2017-12-11 21:57                     ` Sudip Mukherjee
2017-11-29  9:56               ` Daniel Vetter
2017-11-28 12:30             ` Sudip Mukherjee
2017-11-28 11:32           ` Greg KH
2017-11-28 10:22         ` Daniel Vetter
2017-11-27 10:27   ` Daniel Vetter
2017-11-24 17:53 ` [PATCH 06/13] drm/mgag200: use simpler remove_conflicting_pci_framebuffers() Michał Mirosław
2017-11-24 17:53 ` [PATCH 05/13] drm/cirrus: " Michał Mirosław
2017-11-24 17:53 ` [PATCH 04/13] drm/bochs: " Michał Mirosław
2017-11-24 17:53 ` [PATCH 09/13] staging: sm750fb: " Michał Mirosław
2017-11-27 10:25   ` Daniel Vetter
2017-11-27 20:57     ` Sudip Mukherjee
2017-11-24 17:53 ` [PATCH 08/13] drm/virtio: " Michał Mirosław
2017-11-24 17:53 ` [PATCH 11/13] drm/vc4: use simpler remove_conflicting_framebuffers(NULL) Michał Mirosław
2017-11-28 20:11   ` Eric Anholt
     [not found] ` <cover.1511544782.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org>
2017-11-24 17:53   ` [PATCH 03/13] drm/amdgpu: use simpler remove_conflicting_pci_framebuffers() Michał Mirosław
2017-11-27 15:27     ` Alex Deucher
2017-11-24 17:53   ` [PATCH 07/13] drm/radeon: " Michał Mirosław
2017-11-24 17:53   ` [PATCH 10/13] fbdev: allow apertures == NULL in remove_conflicting_framebuffers() Michał Mirosław
     [not found]     ` <13240c59cafec988cdda37cc4d48252ff56f0d04.1511544782.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org>
2017-11-27 10:29       ` Daniel Vetter
2017-11-24 17:53   ` [PATCH 13/13] drm/tegra: kick out simplefb Michał Mirosław
     [not found]     ` <89e22ee1c026b40a5bfa91de282d658b56dc8ee8.1511544782.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org>
2017-11-24 20:50       ` Thierry Reding
2017-11-24 21:42         ` Michał Mirosław
2017-11-24 17:53 ` [PATCH 12/13] drm/sun4i: use simpler remove_conflicting_framebuffers(NULL) Michał Mirosław
2017-11-27  7:26   ` Maxime Ripard
2017-11-27 10:30 ` [PATCH 00/13] remove_conflicting_framebuffers() cleanup Daniel Vetter
2017-11-27 10:30 ` Daniel Vetter
2017-11-27 10:33   ` Thierry Reding
2018-01-03 15:04   ` Bartlomiej Zolnierkiewicz
     [not found]   ` <20171127103044.faakzch7ehlkc3or-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2017-11-27 10:33     ` Thierry Reding
2018-01-03 15:04     ` Bartlomiej Zolnierkiewicz
2018-08-30 21:00 ` [PATCH v2 00/12] " Michał Mirosław
2018-08-30 21:00   ` Michał Mirosław
2018-08-30 21:00   ` Michał Mirosław
2018-08-30 21:00   ` [PATCH v2 02/12] fbdev: allow apertures == NULL in remove_conflicting_framebuffers() Michał Mirosław
2018-08-30 21:00   ` [PATCH v2 01/12] fbdev: show fbdev number for debugging Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00   ` [PATCH v2 02/12] fbdev: allow apertures == NULL in remove_conflicting_framebuffers() Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-31  8:56     ` Daniel Vetter
2018-08-31  8:56       ` Daniel Vetter
2018-08-31  8:56       ` Daniel Vetter
     [not found]       ` <20180831085656.GR21634-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2018-08-31  9:01         ` Daniel Vetter
2018-08-31  9:01           ` Daniel Vetter
2018-08-31  9:01           ` Daniel Vetter
2018-08-31  9:01       ` Daniel Vetter
2018-08-30 21:00   ` [PATCH v2 01/12] fbdev: show fbdev number for debugging Michał Mirosław
2018-08-30 21:00   ` [PATCH v2 03/12] fbdev: add remove_conflicting_pci_framebuffers() Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00   ` [PATCH v2 04/12] drm/amdgpu: use simpler remove_conflicting_pci_framebuffers() Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00   ` Michał Mirosław [this message]
2018-08-30 21:00   ` Michał Mirosław
2018-08-30 21:00   ` [PATCH v2 06/12] drm/cirrus: " Michał Mirosław
2018-08-30 21:00   ` [PATCH v2 05/12] drm/bochs: " Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00   ` [PATCH v2 06/12] drm/cirrus: " Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00   ` [PATCH v2 05/12] drm/bochs: " Michał Mirosław
2018-08-30 21:00   ` [PATCH v2 08/12] drm/radeon: " Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00   ` [PATCH v2 07/12] drm/mgag200: " Michał Mirosław
2018-08-30 21:00   ` Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00   ` [PATCH v2 09/12] drm/virtio: " Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00   ` [PATCH v2 10/12] drm/vc4: use simpler remove_conflicting_framebuffers(NULL) Michał Mirosław
2018-08-30 21:00   ` Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00   ` [PATCH v2 11/12] drm/sun4i: " Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00   ` Michał Mirosław
2018-08-30 21:00   ` [PATCH v2 12/12] drm/tegra: kick out simplefb Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00     ` Michał Mirosław
2018-08-30 21:00   ` Michał Mirosław
2018-08-31  9:04   ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup Daniel Vetter
2018-08-31  9:04     ` Daniel Vetter
2018-08-31  9:04     ` Daniel Vetter
2018-08-31  9:07     ` Chris Wilson
     [not found]     ` <20180831090439.GT21634-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2018-08-31  9:07       ` Chris Wilson
2018-08-31  9:07         ` Chris Wilson
2018-08-31  9:07         ` Chris Wilson
2018-09-01 13:45         ` Michał Mirosław
2018-09-01 13:45           ` Michał Mirosław
2018-09-01 13:45           ` Michał Mirosław
2018-09-01 14:08   ` [PATCH v3 00/13] " Michał Mirosław
2018-09-01 14:08     ` Michał Mirosław
2018-09-01 14:08     ` Michał Mirosław
2018-09-01 14:08     ` [PATCH v3 02/13] fbdev: allow apertures == NULL in remove_conflicting_framebuffers() Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08     ` [PATCH v3 01/13] fbdev: show fbdev number for debugging Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08     ` Michał Mirosław
2018-09-01 14:08     ` [PATCH v3 04/13] fbdev: add remove_conflicting_pci_framebuffers() Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-03 16:16       ` Daniel Vetter
2018-09-03 16:16         ` Daniel Vetter
2018-09-03 16:16         ` Daniel Vetter
2018-09-04 15:40       ` kbuild test robot
2018-09-04 15:40       ` kbuild test robot
2018-09-04 15:40         ` kbuild test robot
2018-09-04 15:40         ` kbuild test robot
2018-09-01 14:08     ` Michał Mirosław
2018-09-01 14:08     ` [PATCH v3 03/13] fbdev: add kerneldoc do remove_conflicting_framebuffers() Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
     [not found]       ` <283fef19815b991700b56119d8d5874a2a8da44e.1535810304.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org>
2018-09-05 11:02         ` Paul Menzel
2018-09-05 11:02           ` Paul Menzel
2018-09-05 11:02           ` Paul Menzel
2018-09-01 14:08     ` Michał Mirosław
2018-09-01 14:08     ` [PATCH v3 05/13] drm/amdgpu: use simpler remove_conflicting_pci_framebuffers() Michał Mirosław
2018-09-01 14:08     ` Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08     ` [PATCH v3 06/13] drm/bochs: " Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08     ` [PATCH v3 07/13] drm/cirrus: " Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08     ` [PATCH v3 08/13] drm/mgag200: " Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08     ` [PATCH v3 09/13] drm/radeon: " Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08     ` Michał Mirosław
2018-09-01 14:08     ` [PATCH v3 08/13] drm/mgag200: " Michał Mirosław
2018-09-01 14:08     ` [PATCH v3 10/13] drm/virtio: " Michał Mirosław
2018-09-01 14:08     ` Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08     ` [PATCH v3 11/13] drm/vc4: use simpler remove_conflicting_framebuffers(NULL) Michał Mirosław
2018-09-01 14:08     ` Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08     ` [PATCH v3 13/13] drm/tegra: kick out simplefb Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08     ` [PATCH v3 12/13] drm/sun4i: use simpler remove_conflicting_framebuffers(NULL) Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08       ` Michał Mirosław
2018-09-01 14:08     ` [PATCH v3 13/13] drm/tegra: kick out simplefb Michał Mirosław
2018-09-01 14:08     ` [PATCH v3 12/13] drm/sun4i: use simpler remove_conflicting_framebuffers(NULL) Michał Mirosław
     [not found]     ` <cover.1535810304.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org>
2018-09-03  7:43       ` [PATCH v3 00/13] remove_conflicting_framebuffers() cleanup Daniel Vetter
2018-09-03  7:43         ` Daniel Vetter
2018-09-03  7:43         ` Daniel Vetter
2018-09-03 11:31         ` Bartlomiej Zolnierkiewicz
     [not found]         ` <20180903074315.GB21634-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2018-09-03 11:31           ` Bartlomiej Zolnierkiewicz
2018-09-03 11:31             ` Bartlomiej Zolnierkiewicz
2018-09-03 11:31             ` Bartlomiej Zolnierkiewicz
2018-09-03 16:26             ` Daniel Vetter
2018-09-03 16:26               ` Daniel Vetter
2018-09-03 16:26               ` Daniel Vetter
2018-09-03 16:26             ` Daniel Vetter
2018-09-03  7:43     ` Daniel Vetter
2018-08-30 21:00 ` [PATCH v2 00/12] " Michał Mirosław

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='cab03a68df539b2f4be93a61323d3f3129c5325b.1535656077.git.mirq-linux__19843.7032210224$1535663833$gmane$org@rere.qmqm.pl' \
    --to=mirq-linux@rere.qmqm.pl \
    --cc=airlied@linux.ie \
    --cc=alexander.deucher@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=b.zolnierkie@samsung.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=eric@anholt.net \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=maxime.ripard@bootlin.com \
    --cc=thierry.reding@gmail.com \
    --cc=virtualization@lists.linux-foundation.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.