* [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup [not found] <cover.1511544782.git.mirq-linux@rere.qmqm.pl> @ 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 ` (13 more replies) 0 siblings, 14 replies; 38+ messages in thread From: Michał Mirosław @ 2018-08-30 21:00 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Maxime Ripard, linux-arm-kernel This series cleans up duplicated code for replacing firmware FB driver with proper DRI driver and adds handover support to Tegra driver. This is a sligtly updated version of a series sent on 24 Nov 2017. v2: - rebased on current drm-next - dropped staging/sm750fb changes - added kernel docs for DRM helpers Michał Mirosław (12): fbdev: show fbdev number for debugging fbdev: allow apertures = NULL in remove_conflicting_framebuffers() fbdev: add remove_conflicting_pci_framebuffers() drm/amdgpu: use simpler remove_conflicting_pci_framebuffers() drm/bochs: use simpler remove_conflicting_pci_framebuffers() drm/cirrus: use simpler remove_conflicting_pci_framebuffers() drm/mgag200: use simpler remove_conflicting_pci_framebuffers() drm/radeon: use simpler remove_conflicting_pci_framebuffers() drm/virtio: use simpler remove_conflicting_pci_framebuffers() drm/vc4: use simpler remove_conflicting_framebuffers(NULL) drm/sun4i: use simpler remove_conflicting_framebuffers(NULL) drm/tegra: kick out simplefb drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 24 +------------- drivers/gpu/drm/bochs/bochs_drv.c | 18 +---------- drivers/gpu/drm/cirrus/cirrus_drv.c | 23 +------------- drivers/gpu/drm/mgag200/mgag200_drv.c | 21 +------------ drivers/gpu/drm/mgag200/mgag200_main.c | 9 ------ drivers/gpu/drm/radeon/radeon_drv.c | 23 +------------- drivers/gpu/drm/sun4i/sun4i_drv.c | 18 +---------- drivers/gpu/drm/tegra/drm.c | 4 +++ drivers/gpu/drm/vc4/vc4_drv.c | 20 +----------- drivers/gpu/drm/virtio/virtgpu_drm_bus.c | 24 ++------------ drivers/video/fbdev/core/fbmem.c | 40 ++++++++++++++++++++++-- include/drm/drm_fb_helper.h | 34 ++++++++++++++++++++ include/linux/fb.h | 2 ++ 13 files changed, 88 insertions(+), 172 deletions(-) -- 2.18.0 ^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v2 02/12] fbdev: allow apertures == NULL in remove_conflicting_framebuffers() 2018-08-30 21:00 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup Michał Mirosław @ 2018-08-30 21:00 ` Michał Mirosław 2018-08-31 8:56 ` Daniel Vetter 2018-08-30 21:00 ` [PATCH v2 01/12] fbdev: show fbdev number for debugging Michał Mirosław ` (12 subsequent siblings) 13 siblings, 1 reply; 38+ messages in thread From: Michał Mirosław @ 2018-08-30 21:00 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Maxime Ripard, linux-arm-kernel Interpret (otherwise-invalid) NULL apertures argument to mean all-memory range. This will allow to remove several duplicates of this code from drivers in following patches. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> [for v1] Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> --- v2: added kerneldoc to corresponding DRM helper --- drivers/video/fbdev/core/fbmem.c | 14 ++++++++++++++ include/drm/drm_fb_helper.h | 10 ++++++++++ 2 files changed, 24 insertions(+) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index 30a18d4c9de4..0df148eb4699 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -1779,11 +1779,25 @@ int remove_conflicting_framebuffers(struct apertures_struct *a, const char *name, bool primary) { int ret; + bool do_free = false; + + if (!a) { + a = alloc_apertures(1); + if (!a) + return -ENOMEM; + + a->ranges[0].base = 0; + a->ranges[0].size = ~0; + do_free = true; + } mutex_lock(®istration_lock); ret = do_remove_conflicting_framebuffers(a, name, primary); mutex_unlock(®istration_lock); + if (do_free) + kfree(a); + return ret; } EXPORT_SYMBOL(remove_conflicting_framebuffers); diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index b069433e7fc1..1c1e53abb25d 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -566,6 +566,16 @@ static inline void drm_fb_helper_output_poll_changed(struct drm_device *dev) #endif +/** + * drm_fb_helper_remove_conflicting_framebuffers - remove firmware framebuffers + * @a: memory range, users of which are to be removed + * @name: requesting driver name + * @primary: also kick vga16fb if present + * + * This function removes framebuffer devices (eg. initialized by firmware) + * which use memory range described by @a. If @a is NULL all such devices are + * removed. + */ static inline int drm_fb_helper_remove_conflicting_framebuffers(struct apertures_struct *a, const char *name, bool primary) -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH v2 02/12] fbdev: allow apertures == NULL in remove_conflicting_framebuffers() 2018-08-30 21:00 ` [PATCH v2 02/12] fbdev: allow apertures == NULL in remove_conflicting_framebuffers() Michał Mirosław @ 2018-08-31 8:56 ` Daniel Vetter [not found] ` <20180831085656.GR21634-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> 0 siblings, 1 reply; 38+ messages in thread From: Daniel Vetter @ 2018-08-31 8:56 UTC (permalink / raw) To: Michał Mirosław Cc: linux-fbdev, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, Alex Deucher, Thierry Reding, dri-devel, linux-tegra, Maxime Ripard, linux-arm-kernel On Thu, Aug 30, 2018 at 11:00:05PM +0200, Michał Mirosław wrote: > Interpret (otherwise-invalid) NULL apertures argument to mean all-memory > range. This will allow to remove several duplicates of this code from > drivers in following patches. > > Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> > [for v1] > Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> > > --- > v2: added kerneldoc to corresponding DRM helper > --- > drivers/video/fbdev/core/fbmem.c | 14 ++++++++++++++ > include/drm/drm_fb_helper.h | 10 ++++++++++ > 2 files changed, 24 insertions(+) > > diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c > index 30a18d4c9de4..0df148eb4699 100644 > --- a/drivers/video/fbdev/core/fbmem.c > +++ b/drivers/video/fbdev/core/fbmem.c > @@ -1779,11 +1779,25 @@ int remove_conflicting_framebuffers(struct apertures_struct *a, > const char *name, bool primary) > { > int ret; > + bool do_free = false; > + > + if (!a) { > + a = alloc_apertures(1); > + if (!a) > + return -ENOMEM; > + > + a->ranges[0].base = 0; > + a->ranges[0].size = ~0; > + do_free = true; > + } > > mutex_lock(®istration_lock); > ret = do_remove_conflicting_framebuffers(a, name, primary); > mutex_unlock(®istration_lock); > > + if (do_free) > + kfree(a); > + > return ret; > } > EXPORT_SYMBOL(remove_conflicting_framebuffers); > diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h > index b069433e7fc1..1c1e53abb25d 100644 > --- a/include/drm/drm_fb_helper.h > +++ b/include/drm/drm_fb_helper.h > @@ -566,6 +566,16 @@ static inline void drm_fb_helper_output_poll_changed(struct drm_device *dev) > > #endif > > +/** > + * drm_fb_helper_remove_conflicting_framebuffers - remove firmware framebuffers > + * @a: memory range, users of which are to be removed > + * @name: requesting driver name > + * @primary: also kick vga16fb if present > + * > + * This function removes framebuffer devices (eg. initialized by firmware) > + * which use memory range described by @a. If @a is NULL all such devices are > + * removed. > + */ This looks like misplaced copypasta. You only need this once I think. -Daniel > static inline int > drm_fb_helper_remove_conflicting_framebuffers(struct apertures_struct *a, > const char *name, bool primary) > -- > 2.18.0 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 38+ messages in thread
[parent not found: <20180831085656.GR21634-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>]
* Re: [PATCH v2 02/12] fbdev: allow apertures == NULL in remove_conflicting_framebuffers() [not found] ` <20180831085656.GR21634-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> @ 2018-08-31 9:01 ` Daniel Vetter 0 siblings, 0 replies; 38+ messages in thread From: Daniel Vetter @ 2018-08-31 9:01 UTC (permalink / raw) To: Michał Mirosław Cc: linux-fbdev-u79uwXL29TY76Z2rM5mHXA, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA, Alex Deucher, Thierry Reding, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, linux-tegra-u79uwXL29TY76Z2rM5mHXA, Maxime Ripard, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Gerd Hoffmann On Fri, Aug 31, 2018 at 10:56:56AM +0200, Daniel Vetter wrote: > On Thu, Aug 30, 2018 at 11:00:05PM +0200, Michał Mirosław wrote: > > Interpret (otherwise-invalid) NULL apertures argument to mean all-memory > > range. This will allow to remove several duplicates of this code from > > drivers in following patches. > > > > Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> > > [for v1] > > Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> > > > > --- > > v2: added kerneldoc to corresponding DRM helper > > --- > > drivers/video/fbdev/core/fbmem.c | 14 ++++++++++++++ > > include/drm/drm_fb_helper.h | 10 ++++++++++ > > 2 files changed, 24 insertions(+) > > > > diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c > > index 30a18d4c9de4..0df148eb4699 100644 > > --- a/drivers/video/fbdev/core/fbmem.c > > +++ b/drivers/video/fbdev/core/fbmem.c > > @@ -1779,11 +1779,25 @@ int remove_conflicting_framebuffers(struct apertures_struct *a, > > const char *name, bool primary) > > { > > int ret; > > + bool do_free = false; > > + > > + if (!a) { > > + a = alloc_apertures(1); > > + if (!a) > > + return -ENOMEM; > > + > > + a->ranges[0].base = 0; > > + a->ranges[0].size = ~0; > > + do_free = true; > > + } > > > > mutex_lock(®istration_lock); > > ret = do_remove_conflicting_framebuffers(a, name, primary); > > mutex_unlock(®istration_lock); > > > > + if (do_free) > > + kfree(a); > > + > > return ret; > > } > > EXPORT_SYMBOL(remove_conflicting_framebuffers); > > diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h > > index b069433e7fc1..1c1e53abb25d 100644 > > --- a/include/drm/drm_fb_helper.h > > +++ b/include/drm/drm_fb_helper.h > > @@ -566,6 +566,16 @@ static inline void drm_fb_helper_output_poll_changed(struct drm_device *dev) > > > > #endif > > > > +/** > > + * drm_fb_helper_remove_conflicting_framebuffers - remove firmware framebuffers > > + * @a: memory range, users of which are to be removed > > + * @name: requesting driver name > > + * @primary: also kick vga16fb if present > > + * > > + * This function removes framebuffer devices (eg. initialized by firmware) > > + * which use memory range described by @a. If @a is NULL all such devices are > > + * removed. > > + */ > > This looks like misplaced copypasta. You only need this once I think. Ah no, just a fixup for the lack of kerneldoc we have. Can you pls split this out into a separate patch? Thanks, Daniel > -Daniel > > > static inline int > > drm_fb_helper_remove_conflicting_framebuffers(struct apertures_struct *a, > > const char *name, bool primary) > > -- > > 2.18.0 > > > > _______________________________________________ > > dri-devel mailing list > > dri-devel@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/dri-devel > > -- > Daniel Vetter > Software Engineer, Intel Corporation > http://blog.ffwll.ch -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v2 01/12] fbdev: show fbdev number for debugging 2018-08-30 21:00 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup 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 ` [PATCH v2 04/12] drm/amdgpu: use simpler remove_conflicting_pci_framebuffers() Michał Mirosław ` (11 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-08-30 21:00 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Maxime Ripard, linux-arm-kernel Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/video/fbdev/core/fbmem.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index f741ba8df01b..30a18d4c9de4 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -1618,8 +1618,8 @@ static int do_remove_conflicting_framebuffers(struct apertures_struct *a, (primary && gen_aper && gen_aper->count && gen_aper->ranges[0].base = VGA_FB_PHYS)) { - printk(KERN_INFO "fb: switching to %s from %s\n", - name, registered_fb[i]->fix.id); + printk(KERN_INFO "fb%d: switching to %s from %s\n", + i, name, registered_fb[i]->fix.id); ret = do_unregister_framebuffer(registered_fb[i]); if (ret) return ret; -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 04/12] drm/amdgpu: use simpler remove_conflicting_pci_framebuffers() 2018-08-30 21:00 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup 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 ` [PATCH v2 03/12] fbdev: add remove_conflicting_pci_framebuffers() Michał Mirosław ` (10 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-08-30 21:00 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Maxime Ripard, linux-arm-kernel Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Alex Deucher <alexander.deucher@amd.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index 0b19482b36b8..9b6e037719db 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -560,28 +560,6 @@ MODULE_DEVICE_TABLE(pci, pciidlist); static struct drm_driver kms_driver; -static int amdgpu_kick_out_firmware_fb(struct pci_dev *pdev) -{ - struct apertures_struct *ap; - bool primary = false; - - ap = alloc_apertures(1); - if (!ap) - return -ENOMEM; - - ap->ranges[0].base = pci_resource_start(pdev, 0); - ap->ranges[0].size = pci_resource_len(pdev, 0); - -#ifdef CONFIG_X86 - primary = pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW; -#endif - drm_fb_helper_remove_conflicting_framebuffers(ap, "amdgpudrmfb", primary); - kfree(ap); - - return 0; -} - - static int amdgpu_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { @@ -609,7 +587,7 @@ static int amdgpu_pci_probe(struct pci_dev *pdev, return ret; /* Get rid of things like offb */ - ret = amdgpu_kick_out_firmware_fb(pdev); + ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, 0, "amdgpudrmfb"); if (ret) return ret; -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 03/12] fbdev: add remove_conflicting_pci_framebuffers() 2018-08-30 21:00 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup Michał Mirosław ` (2 preceding siblings ...) 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 ` [PATCH v2 06/12] drm/cirrus: use simpler remove_conflicting_pci_framebuffers() Michał Mirosław ` (9 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-08-30 21:00 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Maxime Ripard, linux-arm-kernel 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 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 06/12] drm/cirrus: use simpler remove_conflicting_pci_framebuffers() 2018-08-30 21:00 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup Michał Mirosław ` (3 preceding siblings ...) 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 ` [PATCH v2 05/12] drm/bochs: " Michał Mirosław ` (8 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-08-30 21:00 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Maxime Ripard, linux-arm-kernel Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/cirrus/cirrus_drv.c | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/drivers/gpu/drm/cirrus/cirrus_drv.c b/drivers/gpu/drm/cirrus/cirrus_drv.c index 69c4e352dd78..85ed8657c862 100644 --- a/drivers/gpu/drm/cirrus/cirrus_drv.c +++ b/drivers/gpu/drm/cirrus/cirrus_drv.c @@ -42,33 +42,12 @@ static const struct pci_device_id pciidlist[] = { }; -static int cirrus_kick_out_firmware_fb(struct pci_dev *pdev) -{ - struct apertures_struct *ap; - bool primary = false; - - ap = alloc_apertures(1); - if (!ap) - return -ENOMEM; - - ap->ranges[0].base = pci_resource_start(pdev, 0); - ap->ranges[0].size = pci_resource_len(pdev, 0); - -#ifdef CONFIG_X86 - primary = pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW; -#endif - drm_fb_helper_remove_conflicting_framebuffers(ap, "cirrusdrmfb", primary); - kfree(ap); - - return 0; -} - static int cirrus_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { int ret; - ret = cirrus_kick_out_firmware_fb(pdev); + ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, 0, "cirrusdrmfb"); if (ret) return ret; -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 05/12] drm/bochs: use simpler remove_conflicting_pci_framebuffers() 2018-08-30 21:00 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup Michał Mirosław ` (4 preceding siblings ...) 2018-08-30 21:00 ` [PATCH v2 06/12] drm/cirrus: use simpler remove_conflicting_pci_framebuffers() 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 ` (7 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-08-30 21:00 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Maxime Ripard, linux-arm-kernel Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/bochs/bochs_drv.c | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c index 7b20318483e4..c61b40c72b62 100644 --- a/drivers/gpu/drm/bochs/bochs_drv.c +++ b/drivers/gpu/drm/bochs/bochs_drv.c @@ -143,22 +143,6 @@ static const struct dev_pm_ops bochs_pm_ops = { /* ---------------------------------------------------------------------- */ /* pci interface */ -static int bochs_kick_out_firmware_fb(struct pci_dev *pdev) -{ - struct apertures_struct *ap; - - ap = alloc_apertures(1); - if (!ap) - return -ENOMEM; - - ap->ranges[0].base = pci_resource_start(pdev, 0); - ap->ranges[0].size = pci_resource_len(pdev, 0); - drm_fb_helper_remove_conflicting_framebuffers(ap, "bochsdrmfb", false); - kfree(ap); - - return 0; -} - static int bochs_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { @@ -171,7 +155,7 @@ static int bochs_pci_probe(struct pci_dev *pdev, return -ENOMEM; } - ret = bochs_kick_out_firmware_fb(pdev); + ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, 0, "bochsdrmfb"); if (ret) return ret; -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 07/12] drm/mgag200: use simpler remove_conflicting_pci_framebuffers() 2018-08-30 21:00 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup Michał Mirosław ` (5 preceding siblings ...) 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 ` [PATCH v2 08/12] drm/radeon: " Michał Mirosław ` (6 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-08-30 21:00 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Maxime Ripard, linux-arm-kernel Remove duplicated call, while at it. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/mgag200/mgag200_drv.c | 21 +-------------------- drivers/gpu/drm/mgag200/mgag200_main.c | 9 --------- 2 files changed, 1 insertion(+), 29 deletions(-) diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c index 74cdde2ee474..ac6af4bd9df6 100644 --- a/drivers/gpu/drm/mgag200/mgag200_drv.c +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c @@ -42,29 +42,10 @@ static const struct pci_device_id pciidlist[] = { MODULE_DEVICE_TABLE(pci, pciidlist); -static void mgag200_kick_out_firmware_fb(struct pci_dev *pdev) -{ - struct apertures_struct *ap; - bool primary = false; - - ap = alloc_apertures(1); - if (!ap) - return; - - ap->ranges[0].base = pci_resource_start(pdev, 0); - ap->ranges[0].size = pci_resource_len(pdev, 0); - -#ifdef CONFIG_X86 - primary = pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW; -#endif - drm_fb_helper_remove_conflicting_framebuffers(ap, "mgag200drmfb", primary); - kfree(ap); -} - static int mga_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { - mgag200_kick_out_firmware_fb(pdev); + drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, 0, "mgag200drmfb"); return drm_get_pci_dev(pdev, ent, &driver); } diff --git a/drivers/gpu/drm/mgag200/mgag200_main.c b/drivers/gpu/drm/mgag200/mgag200_main.c index 780f983b0294..79d54103d470 100644 --- a/drivers/gpu/drm/mgag200/mgag200_main.c +++ b/drivers/gpu/drm/mgag200/mgag200_main.c @@ -124,20 +124,11 @@ static int mga_probe_vram(struct mga_device *mdev, void __iomem *mem) static int mga_vram_init(struct mga_device *mdev) { void __iomem *mem; - struct apertures_struct *aper = alloc_apertures(1); - if (!aper) - return -ENOMEM; /* BAR 0 is VRAM */ mdev->mc.vram_base = pci_resource_start(mdev->dev->pdev, 0); mdev->mc.vram_window = pci_resource_len(mdev->dev->pdev, 0); - aper->ranges[0].base = mdev->mc.vram_base; - aper->ranges[0].size = mdev->mc.vram_window; - - drm_fb_helper_remove_conflicting_framebuffers(aper, "mgafb", true); - kfree(aper); - if (!devm_request_mem_region(mdev->dev->dev, mdev->mc.vram_base, mdev->mc.vram_window, "mgadrmfb_vram")) { DRM_ERROR("can't reserve VRAM\n"); -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 08/12] drm/radeon: use simpler remove_conflicting_pci_framebuffers() 2018-08-30 21:00 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup Michał Mirosław ` (6 preceding siblings ...) 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 ` [PATCH v2 09/12] drm/virtio: " Michał Mirosław ` (5 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-08-30 21:00 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, Eric Anholt, Thierry Reding, Alex Deucher, Maxime Ripard, linux-arm-kernel Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Alex Deucher <alexander.deucher@amd.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/radeon/radeon_drv.c | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c index b28288a781ef..36c98a0ec991 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c @@ -311,27 +311,6 @@ static struct drm_driver kms_driver; bool radeon_device_is_virtual(void); -static int radeon_kick_out_firmware_fb(struct pci_dev *pdev) -{ - struct apertures_struct *ap; - bool primary = false; - - ap = alloc_apertures(1); - if (!ap) - return -ENOMEM; - - ap->ranges[0].base = pci_resource_start(pdev, 0); - ap->ranges[0].size = pci_resource_len(pdev, 0); - -#ifdef CONFIG_X86 - primary = pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW; -#endif - drm_fb_helper_remove_conflicting_framebuffers(ap, "radeondrmfb", primary); - kfree(ap); - - return 0; -} - static int radeon_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { @@ -341,7 +320,7 @@ static int radeon_pci_probe(struct pci_dev *pdev, return -EPROBE_DEFER; /* Get rid of things like offb */ - ret = radeon_kick_out_firmware_fb(pdev); + ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, 0, "radeondrmfb"); if (ret) return ret; -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 09/12] drm/virtio: use simpler remove_conflicting_pci_framebuffers() 2018-08-30 21:00 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup Michał Mirosław ` (7 preceding siblings ...) 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 ` [PATCH v2 10/12] drm/vc4: use simpler remove_conflicting_framebuffers(NULL) Michał Mirosław ` (4 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-08-30 21:00 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, Eric Anholt, Thierry Reding, Alex Deucher, Maxime Ripard, linux-arm-kernel Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/virtio/virtgpu_drm_bus.c | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/drivers/gpu/drm/virtio/virtgpu_drm_bus.c b/drivers/gpu/drm/virtio/virtgpu_drm_bus.c index 7df8d0c9026a..115ed546ca4e 100644 --- a/drivers/gpu/drm/virtio/virtgpu_drm_bus.c +++ b/drivers/gpu/drm/virtio/virtgpu_drm_bus.c @@ -28,26 +28,6 @@ #include "virtgpu_drv.h" -static void virtio_pci_kick_out_firmware_fb(struct pci_dev *pci_dev) -{ - struct apertures_struct *ap; - bool primary; - - ap = alloc_apertures(1); - if (!ap) - return; - - ap->ranges[0].base = pci_resource_start(pci_dev, 0); - ap->ranges[0].size = pci_resource_len(pci_dev, 0); - - primary = pci_dev->resource[PCI_ROM_RESOURCE].flags - & IORESOURCE_ROM_SHADOW; - - drm_fb_helper_remove_conflicting_framebuffers(ap, "virtiodrmfb", primary); - - kfree(ap); -} - int drm_virtio_init(struct drm_driver *driver, struct virtio_device *vdev) { struct drm_device *dev; @@ -69,7 +49,9 @@ int drm_virtio_init(struct drm_driver *driver, struct virtio_device *vdev) pname); dev->pdev = pdev; if (vga) - virtio_pci_kick_out_firmware_fb(pdev); + drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, + 0, + "virtiodrmfb"); snprintf(unique, sizeof(unique), "pci:%s", pname); ret = drm_dev_set_unique(dev, unique); -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 10/12] drm/vc4: use simpler remove_conflicting_framebuffers(NULL) 2018-08-30 21:00 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup Michał Mirosław ` (8 preceding siblings ...) 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 ` [PATCH v2 11/12] drm/sun4i: " Michał Mirosław ` (3 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-08-30 21:00 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Maxime Ripard, linux-arm-kernel Use remove_conflicting_framebuffers(NULL) instead of open-coding it. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Eric Anholt <eric@anholt.net> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/vc4/vc4_drv.c | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c index 94b99c90425a..96bb90325995 100644 --- a/drivers/gpu/drm/vc4/vc4_drv.c +++ b/drivers/gpu/drm/vc4/vc4_drv.c @@ -246,24 +246,6 @@ static void vc4_match_add_drivers(struct device *dev, } } -static void vc4_kick_out_firmware_fb(void) -{ - struct apertures_struct *ap; - - ap = alloc_apertures(1); - if (!ap) - return; - - /* Since VC4 is a UMA device, the simplefb node may have been - * located anywhere in memory. - */ - ap->ranges[0].base = 0; - ap->ranges[0].size = ~0; - - drm_fb_helper_remove_conflicting_framebuffers(ap, "vc4drmfb", false); - kfree(ap); -} - static int vc4_drm_bind(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); @@ -296,7 +278,7 @@ static int vc4_drm_bind(struct device *dev) if (ret) goto gem_destroy; - vc4_kick_out_firmware_fb(); + drm_fb_helper_remove_conflicting_framebuffers(NULL, "vc4drmfb", false); ret = drm_dev_register(drm, 0); if (ret < 0) -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 11/12] drm/sun4i: use simpler remove_conflicting_framebuffers(NULL) 2018-08-30 21:00 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup Michał Mirosław ` (9 preceding siblings ...) 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 ` [PATCH v2 12/12] drm/tegra: kick out simplefb Michał Mirosław ` (2 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-08-30 21:00 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, Maxime Ripard, Eric Anholt, amd-gfx, virtualization, David Airlie, Thierry Reding, Gerd Hoffmann, Alex Deucher, linux-arm-kernel Use remove_conflicting_framebuffers(NULL) instead of duplicating it. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/sun4i/sun4i_drv.c | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c index 50d19605c38f..555b5db8036f 100644 --- a/drivers/gpu/drm/sun4i/sun4i_drv.c +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c @@ -60,22 +60,6 @@ static struct drm_driver sun4i_drv_driver = { /* Frame Buffer Operations */ }; -static void sun4i_remove_framebuffers(void) -{ - struct apertures_struct *ap; - - ap = alloc_apertures(1); - if (!ap) - return; - - /* The framebuffer can be located anywhere in RAM */ - ap->ranges[0].base = 0; - ap->ranges[0].size = ~0; - - drm_fb_helper_remove_conflicting_framebuffers(ap, "sun4i-drm-fb", false); - kfree(ap); -} - static int sun4i_drv_bind(struct device *dev) { struct drm_device *drm; @@ -118,7 +102,7 @@ static int sun4i_drv_bind(struct device *dev) drm->irq_enabled = true; /* Remove early framebuffers (ie. simplefb) */ - sun4i_remove_framebuffers(); + drm_fb_helper_remove_conflicting_framebuffers(NULL, "sun4i-drm-fb", false); /* Create our framebuffer */ ret = sun4i_framebuffer_init(drm); -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 12/12] drm/tegra: kick out simplefb 2018-08-30 21:00 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup Michał Mirosław ` (10 preceding siblings ...) 2018-08-30 21:00 ` [PATCH v2 11/12] drm/sun4i: " 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-09-01 14:08 ` [PATCH v3 00/13] " Michał Mirosław 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-08-30 21:00 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, Bartlomiej Zolnierkiewicz, David Airlie, Eric Anholt, amd-gfx, virtualization, Alex Deucher, Thierry Reding, Gerd Hoffmann, linux-tegra, Maxime Ripard, linux-arm-kernel Kick out firmware fb when loading Tegra driver. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/tegra/drm.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c index 7afe2f635f74..b51ec138fed2 100644 --- a/drivers/gpu/drm/tegra/drm.c +++ b/drivers/gpu/drm/tegra/drm.c @@ -1203,6 +1203,10 @@ static int host1x_drm_probe(struct host1x_device *dev) dev_set_drvdata(&dev->dev, drm); + err = drm_fb_helper_remove_conflicting_framebuffers(NULL, "tegradrmfb", false); + if (err < 0) + goto unref; + err = drm_dev_register(drm, 0); if (err < 0) goto unref; -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup 2018-08-30 21:00 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup Michał Mirosław ` (11 preceding siblings ...) 2018-08-30 21:00 ` [PATCH v2 12/12] drm/tegra: kick out simplefb Michał Mirosław @ 2018-08-31 9:04 ` Daniel Vetter [not found] ` <20180831090439.GT21634-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> 2018-09-01 14:08 ` [PATCH v3 00/13] " Michał Mirosław 13 siblings, 1 reply; 38+ messages in thread From: Daniel Vetter @ 2018-08-31 9:04 UTC (permalink / raw) To: Michał Mirosław Cc: linux-fbdev, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, Alex Deucher, Thierry Reding, dri-devel, linux-tegra, Maxime Ripard, linux-arm-kernel On Thu, Aug 30, 2018 at 11:00:01PM +0200, Michał Mirosław wrote: > This series cleans up duplicated code for replacing firmware FB > driver with proper DRI driver and adds handover support to > Tegra driver. > > This is a sligtly updated version of a series sent on 24 Nov 2017. > > v2: > - rebased on current drm-next > - dropped staging/sm750fb changes > - added kernel docs for DRM helpers > > Michał Mirosław (12): > fbdev: show fbdev number for debugging > fbdev: allow apertures = NULL in remove_conflicting_framebuffers() > fbdev: add remove_conflicting_pci_framebuffers() > drm/amdgpu: use simpler remove_conflicting_pci_framebuffers() > drm/bochs: use simpler remove_conflicting_pci_framebuffers() > drm/cirrus: use simpler remove_conflicting_pci_framebuffers() > drm/mgag200: use simpler remove_conflicting_pci_framebuffers() > drm/radeon: use simpler remove_conflicting_pci_framebuffers() > drm/virtio: use simpler remove_conflicting_pci_framebuffers() > drm/vc4: use simpler remove_conflicting_framebuffers(NULL) > drm/sun4i: use simpler remove_conflicting_framebuffers(NULL) > drm/tegra: kick out simplefb Looks very neat. A bit confused about the drm changes in the fbdev-titled patches 1&3, but I guess we can merge as-is. Up to you whether you want to split or not I'd say. Bartlomiej, ack for pullin in this entire pile through drm-misc? Thanks, Daniel > > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 24 +------------- > drivers/gpu/drm/bochs/bochs_drv.c | 18 +---------- > drivers/gpu/drm/cirrus/cirrus_drv.c | 23 +------------- > drivers/gpu/drm/mgag200/mgag200_drv.c | 21 +------------ > drivers/gpu/drm/mgag200/mgag200_main.c | 9 ------ > drivers/gpu/drm/radeon/radeon_drv.c | 23 +------------- > drivers/gpu/drm/sun4i/sun4i_drv.c | 18 +---------- > drivers/gpu/drm/tegra/drm.c | 4 +++ > drivers/gpu/drm/vc4/vc4_drv.c | 20 +----------- > drivers/gpu/drm/virtio/virtgpu_drm_bus.c | 24 ++------------ > drivers/video/fbdev/core/fbmem.c | 40 ++++++++++++++++++++++-- > include/drm/drm_fb_helper.h | 34 ++++++++++++++++++++ > include/linux/fb.h | 2 ++ > 13 files changed, 88 insertions(+), 172 deletions(-) > > -- > 2.18.0 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 38+ messages in thread
[parent not found: <20180831090439.GT21634-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>]
* Re: [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup [not found] ` <20180831090439.GT21634-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> @ 2018-08-31 9:07 ` Chris Wilson 2018-09-01 13:45 ` Michał Mirosław 0 siblings, 1 reply; 38+ messages in thread From: Chris Wilson @ 2018-08-31 9:07 UTC (permalink / raw) To: Michał Mirosław, Daniel Vetter Cc: linux-fbdev-u79uwXL29TY76Z2rM5mHXA, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA, linux-tegra-u79uwXL29TY76Z2rM5mHXA, Thierry Reding, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Alex Deucher, Maxime Ripard, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Gerd Hoffmann Quoting Daniel Vetter (2018-08-31 10:04:39) > On Thu, Aug 30, 2018 at 11:00:01PM +0200, Michał Mirosław wrote: > > This series cleans up duplicated code for replacing firmware FB > > driver with proper DRI driver and adds handover support to > > Tegra driver. > > > > This is a sligtly updated version of a series sent on 24 Nov 2017. > > > > v2: > > - rebased on current drm-next > > - dropped staging/sm750fb changes > > - added kernel docs for DRM helpers > > > > Michał Mirosław (12): > > fbdev: show fbdev number for debugging > > fbdev: allow apertures = NULL in remove_conflicting_framebuffers() > > fbdev: add remove_conflicting_pci_framebuffers() > > drm/amdgpu: use simpler remove_conflicting_pci_framebuffers() > > drm/bochs: use simpler remove_conflicting_pci_framebuffers() > > drm/cirrus: use simpler remove_conflicting_pci_framebuffers() > > drm/mgag200: use simpler remove_conflicting_pci_framebuffers() > > drm/radeon: use simpler remove_conflicting_pci_framebuffers() > > drm/virtio: use simpler remove_conflicting_pci_framebuffers() > > drm/vc4: use simpler remove_conflicting_framebuffers(NULL) > > drm/sun4i: use simpler remove_conflicting_framebuffers(NULL) > > drm/tegra: kick out simplefb > > Looks very neat. A bit confused about the drm changes in the fbdev-titled > patches 1&3, but I guess we can merge as-is. Up to you whether you want to > split or not I'd say. Ahah, someone is looking at remove_conflicting_framebuffers(). May I interest you in a use-after-free? [ 378.423513] stack segment: 0000 [#1] PREEMPT SMP PTI [ 378.423530] CPU: 1 PID: 4338 Comm: pm_rpm Tainted: G U 4.19.0-rc1-CI-CI_DRM_4746+ #1 [ 378.423548] Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./J4205-ITX, BIOS P1.10 09/29/2016 [ 378.423570] RIP: 0010:do_remove_conflicting_framebuffers+0x56/0x170 [ 378.423587] Code: 49 8b 45 00 48 85 c0 74 50 f6 40 0a 08 74 4a 4d 85 e4 48 8b a8 78 04 00 00 74 1f 48 85 ed 74 1a 41 8b 0c 24 31 db 85 c9 74 10 <8b> 55 00 85 d2 75 42 83 c3 01 41 39 1c 24 77 f0 48 85 ed 74 1a 45 [ 378.423620] RSP: 0018:ffffc900001dfa88 EFLAGS: 00010202 [ 378.423632] RAX: ffff880274470008 RBX: 0000000000000000 RCX: 0000000000000001 [ 378.423646] RDX: 0000000000000001 RSI: ffffffffa025c634 RDI: ffff88025cc3b428 [ 378.423660] RBP: 6b6b6b6b6b6b6b6b R08: 000000001edaddfa R09: ffffffffa025c634 [ 378.423673] R10: ffffc900001dfae8 R11: ffffffff820de938 R12: ffff88025cc3b428 [ 378.423687] R13: ffffffff8234ca20 R14: ffffffff8234cb20 R15: 0000000000000001 [ 378.423701] FS: 00007fcf03d0a980(0000) GS:ffff880277e80000(0000) knlGS:0000000000000000 [ 378.423717] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 378.423729] CR2: 00007fffece1fdb8 CR3: 00000001fe32e000 CR4: 00000000003406e0 [ 378.423742] Call Trace: [ 378.423756] remove_conflicting_framebuffers+0x28/0x40 [ 378.423856] i915_driver_load+0x7f5/0x10c0 [i915] [ 378.423873] ? _raw_spin_unlock_irqrestore+0x4c/0x60 [ 378.423887] ? lockdep_hardirqs_on+0xe0/0x1b0 [ 378.423962] i915_pci_probe+0x29/0xa0 [i915] [ 378.423977] pci_device_probe+0xa1/0x130 [ 378.423990] really_probe+0x25d/0x3c0 [ 378.424002] driver_probe_device+0x10a/0x120 [ 378.424013] __driver_attach+0xdb/0x100 [ 378.424025] ? driver_probe_device+0x120/0x120 [ 378.424037] bus_for_each_dev+0x74/0xc0 [ 378.424048] bus_add_driver+0x15f/0x250 [ 378.424060] ? 0xffffffffa069d000 [ 378.424070] driver_register+0x56/0xe0 [ 378.424080] ? 0xffffffffa069d000 [ 378.424090] do_one_initcall+0x58/0x2e0 [ 378.424101] ? rcu_lockdep_current_cpu_online+0x8f/0xd0 [ 378.424116] ? do_init_module+0x1d/0x1ea [ 378.424127] ? rcu_read_lock_sched_held+0x6f/0x80 [ 378.424141] ? kmem_cache_alloc_trace+0x264/0x290 [ 378.424154] do_init_module+0x56/0x1ea [ 378.424167] load_module+0x26ba/0x29a0 [ 378.424182] ? vfs_read+0x122/0x140 [ 378.424199] ? __se_sys_finit_module+0xd3/0xf0 [ 378.424210] __se_sys_finit_module+0xd3/0xf0 [ 378.424226] do_syscall_64+0x55/0x190 [ 378.424237] entry_SYSCALL_64_after_hwframe+0x49/0xbe [ 378.424249] RIP: 0033:0x7fcf02f9b839 [ 378.424258] Code: 00 f3 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 1f f6 2c 00 f7 d8 64 89 01 48 [ 378.424290] RSP: 002b:00007fffece21f58 EFLAGS: 00000246 ORIG_RAX: 0000000000000139 [ 378.424307] RAX: ffffffffffffffda RBX: 000056344e1a4d80 RCX: 00007fcf02f9b839 [ 378.424321] RDX: 0000000000000000 RSI: 00007fcf026470e5 RDI: 0000000000000003 [ 378.424336] RBP: 00007fcf026470e5 R08: 0000000000000000 R09: 0000000000000000 [ 378.424349] R10: 0000000000000003 R11: 0000000000000246 R12: 0000000000000000 [ 378.424363] R13: 000056344e1a0000 R14: 0000000000000000 R15: 000056344e1a4d80 https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4613/fi-bxt-j4205/dmesg0.log -Chris ^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup 2018-08-31 9:07 ` Chris Wilson @ 2018-09-01 13:45 ` Michał Mirosław 0 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-09-01 13:45 UTC (permalink / raw) To: Chris Wilson Cc: linux-fbdev, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, linux-tegra, Thierry Reding, dri-devel, Daniel Vetter, Alex Deucher, Maxime Ripard, linux-arm-kernel On Fri, Aug 31, 2018 at 10:07:42AM +0100, Chris Wilson wrote: [...] > Ahah, someone is looking at remove_conflicting_framebuffers(). May I > interest you in a use-after-free? > [ 378.423513] stack segment: 0000 [#1] PREEMPT SMP PTI > [ 378.423530] CPU: 1 PID: 4338 Comm: pm_rpm Tainted: G U 4.19.0-rc1-CI-CI_DRM_4746+ #1 > [ 378.423548] Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./J4205-ITX, BIOS P1.10 09/29/2016 > [ 378.423570] RIP: 0010:do_remove_conflicting_framebuffers+0x56/0x170 > [ 378.423587] Code: 49 8b 45 00 48 85 c0 74 50 f6 40 0a 08 74 4a 4d 85 e4 48 8b a8 78 04 00 00 74 1f 48 85 ed 74 1a 41 8b 0c 24 31 db 85 c9 74 10 <8b> 55 00 85 d2 75 42 83 c3 01 41 39 1c 24 77 f0 48 85 ed 74 1a 45 > [ 378.423620] RSP: 0018:ffffc900001dfa88 EFLAGS: 00010202 > [ 378.423632] RAX: ffff880274470008 RBX: 0000000000000000 RCX: 0000000000000001 > [ 378.423646] RDX: 0000000000000001 RSI: ffffffffa025c634 RDI: ffff88025cc3b428 > [ 378.423660] RBP: 6b6b6b6b6b6b6b6b R08: 000000001edaddfa R09: ffffffffa025c634 > [ 378.423673] R10: ffffc900001dfae8 R11: ffffffff820de938 R12: ffff88025cc3b428 > [ 378.423687] R13: ffffffff8234ca20 R14: ffffffff8234cb20 R15: 0000000000000001 > [ 378.423701] FS: 00007fcf03d0a980(0000) GS:ffff880277e80000(0000) knlGS:0000000000000000 > [ 378.423717] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > [ 378.423729] CR2: 00007fffece1fdb8 CR3: 00000001fe32e000 CR4: 00000000003406e0 > [ 378.423742] Call Trace: > [ 378.423756] remove_conflicting_framebuffers+0x28/0x40 > [ 378.423856] i915_driver_load+0x7f5/0x10c0 [i915] [...] Looks like registered_fb[] entry is pointing to (partially?) freed or corrupted fb_info, but I can't see how this could be an effect of remove_conflicting_framebuffers(). Best Regards, Micha³ Miros³aw ^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v3 00/13] remove_conflicting_framebuffers() cleanup 2018-08-30 21:00 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup Michał Mirosław ` (12 preceding siblings ...) 2018-08-31 9:04 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup Daniel Vetter @ 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 ` (13 more replies) 13 siblings, 14 replies; 38+ messages in thread From: Michał Mirosław @ 2018-09-01 14:08 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, Jonathan Hunter, Eric Anholt, Thierry Reding, Alex Deucher, Dave Airlie, Maxime Ripard, virtualization, linux-arm-kernel This series cleans up duplicated code for replacing firmware FB driver with proper DRI driver and adds handover support to Tegra driver. This is a sligtly updated version of a series sent on 24 Nov 2017. --- v2: - rebased on current drm-next - dropped staging/sm750fb changes - added kernel docs for DRM helpers v3: - move kerneldoc to fbdev, where functions are implemented - split kerneldoc for remove_conflicting_framebuffers() - propagate return value in remove_conflicting_pci_framebuffers() --- Michał Mirosław (13): fbdev: show fbdev number for debugging fbdev: allow apertures = NULL in remove_conflicting_framebuffers() fbdev: add kerneldoc do remove_conflicting_framebuffers() fbdev: add remove_conflicting_pci_framebuffers() drm/amdgpu: use simpler remove_conflicting_pci_framebuffers() drm/bochs: use simpler remove_conflicting_pci_framebuffers() drm/cirrus: use simpler remove_conflicting_pci_framebuffers() drm/mgag200: use simpler remove_conflicting_pci_framebuffers() drm/radeon: use simpler remove_conflicting_pci_framebuffers() drm/virtio: use simpler remove_conflicting_pci_framebuffers() drm/vc4: use simpler remove_conflicting_framebuffers(NULL) drm/sun4i: use simpler remove_conflicting_framebuffers(NULL) drm/tegra: kick out simplefb drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 24 +-------- drivers/gpu/drm/bochs/bochs_drv.c | 18 +------ drivers/gpu/drm/cirrus/cirrus_drv.c | 23 +-------- drivers/gpu/drm/mgag200/mgag200_drv.c | 21 +------- drivers/gpu/drm/mgag200/mgag200_main.c | 9 ---- drivers/gpu/drm/radeon/radeon_drv.c | 23 +-------- drivers/gpu/drm/sun4i/sun4i_drv.c | 18 +------ drivers/gpu/drm/tegra/drm.c | 4 ++ drivers/gpu/drm/vc4/vc4_drv.c | 20 +------- drivers/gpu/drm/virtio/virtgpu_drm_bus.c | 24 ++------- drivers/video/fbdev/core/fbmem.c | 63 +++++++++++++++++++++++- include/drm/drm_fb_helper.h | 12 +++++ include/linux/fb.h | 2 + 13 files changed, 89 insertions(+), 172 deletions(-) -- 2.18.0 ^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v3 02/13] fbdev: allow apertures == NULL in remove_conflicting_framebuffers() 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 ` [PATCH v3 01/13] fbdev: show fbdev number for debugging Michał Mirosław ` (12 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-09-01 14:08 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, Jonathan Hunter, Eric Anholt, Thierry Reding, Alex Deucher, Dave Airlie, Maxime Ripard, virtualization, linux-arm-kernel Interpret (otherwise-invalid) NULL apertures argument to mean all-memory range. This will allow to remove several duplicates of this code from drivers in following patches. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> --- v2: added kerneldoc to corresponding DRM helper v3: split kerneldoc to another patch --- drivers/video/fbdev/core/fbmem.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index 30a18d4c9de4..0df148eb4699 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -1779,11 +1779,25 @@ int remove_conflicting_framebuffers(struct apertures_struct *a, const char *name, bool primary) { int ret; + bool do_free = false; + + if (!a) { + a = alloc_apertures(1); + if (!a) + return -ENOMEM; + + a->ranges[0].base = 0; + a->ranges[0].size = ~0; + do_free = true; + } mutex_lock(®istration_lock); ret = do_remove_conflicting_framebuffers(a, name, primary); mutex_unlock(®istration_lock); + if (do_free) + kfree(a); + return ret; } EXPORT_SYMBOL(remove_conflicting_framebuffers); -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v3 01/13] fbdev: show fbdev number for debugging 2018-09-01 14:08 ` [PATCH v3 00/13] " 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 ` [PATCH v3 04/13] fbdev: add remove_conflicting_pci_framebuffers() Michał Mirosław ` (11 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-09-01 14:08 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, Jonathan Hunter, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Dave Airlie, Maxime Ripard, virtualization, linux-arm-kernel Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/video/fbdev/core/fbmem.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index f741ba8df01b..30a18d4c9de4 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -1618,8 +1618,8 @@ static int do_remove_conflicting_framebuffers(struct apertures_struct *a, (primary && gen_aper && gen_aper->count && gen_aper->ranges[0].base = VGA_FB_PHYS)) { - printk(KERN_INFO "fb: switching to %s from %s\n", - name, registered_fb[i]->fix.id); + printk(KERN_INFO "fb%d: switching to %s from %s\n", + i, name, registered_fb[i]->fix.id); ret = do_unregister_framebuffer(registered_fb[i]); if (ret) return ret; -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v3 04/13] fbdev: add remove_conflicting_pci_framebuffers() 2018-09-01 14:08 ` [PATCH v3 00/13] " 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 ` [PATCH v3 01/13] fbdev: show fbdev number for debugging Michał Mirosław @ 2018-09-01 14:08 ` Michał Mirosław 2018-09-03 16:16 ` Daniel Vetter 2018-09-04 15:40 ` kbuild test robot 2018-09-01 14:08 ` [PATCH v3 03/13] fbdev: add kerneldoc do remove_conflicting_framebuffers() Michał Mirosław ` (10 subsequent siblings) 13 siblings, 2 replies; 38+ messages in thread From: Michał Mirosław @ 2018-09-01 14:08 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, Jonathan Hunter, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Dave Airlie, Maxime Ripard, virtualization, linux-arm-kernel Almost all PCI drivers using remove_conflicting_framebuffers() wrap it with the same code. --- v2: add kerneldoc for DRM helper v3: propagate remove_conflicting_framebuffers() return value + move kerneldoc to where function is implemented Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> --- drivers/video/fbdev/core/fbmem.c | 35 ++++++++++++++++++++++++++++++++ include/drm/drm_fb_helper.h | 12 +++++++++++ include/linux/fb.h | 2 ++ 3 files changed, 49 insertions(+) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index 2de93b5014e3..cd96b1c62bbe 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> @@ -1812,6 +1813,40 @@ int remove_conflicting_framebuffers(struct apertures_struct *a, } EXPORT_SYMBOL(remove_conflicting_framebuffers); +/** + * remove_conflicting_pci_framebuffers - remove firmware-configured framebuffers for PCI devices + * @pdev: PCI device + * @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 drives a primary + * display and so kicks out vga16fb. + */ +int remove_conflicting_pci_framebuffers(struct pci_dev *pdev, int res_id, const char *name) +{ + struct apertures_struct *ap; + bool primary = false; + int err; + + 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 + err = remove_conflicting_framebuffers(ap, name, primary); + kfree(ap); + return err; +} +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 b069433e7fc1..20ea856db900 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -577,4 +577,16 @@ drm_fb_helper_remove_conflicting_framebuffers(struct apertures_struct *a, #endif } +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 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH v3 04/13] fbdev: add remove_conflicting_pci_framebuffers() 2018-09-01 14:08 ` [PATCH v3 04/13] fbdev: add remove_conflicting_pci_framebuffers() Michał Mirosław @ 2018-09-03 16:16 ` Daniel Vetter 2018-09-04 15:40 ` kbuild test robot 1 sibling, 0 replies; 38+ messages in thread From: Daniel Vetter @ 2018-09-03 16:16 UTC (permalink / raw) To: Michał Mirosław Cc: linux-fbdev, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, Jonathan Hunter, Alex Deucher, Thierry Reding, dri-devel, linux-tegra, Dave Airlie, Maxime Ripard, virtualization, linux-arm-kernel On Sat, Sep 01, 2018 at 04:08:45PM +0200, Michał Mirosław wrote: > Almost all PCI drivers using remove_conflicting_framebuffers() wrap it > with the same code. > > --- This cuts away the sob. Just fyi. -Daniel > v2: add kerneldoc for DRM helper > v3: propagate remove_conflicting_framebuffers() return value > + move kerneldoc to where function is implemented > > Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> > --- > drivers/video/fbdev/core/fbmem.c | 35 ++++++++++++++++++++++++++++++++ > include/drm/drm_fb_helper.h | 12 +++++++++++ > include/linux/fb.h | 2 ++ > 3 files changed, 49 insertions(+) > > diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c > index 2de93b5014e3..cd96b1c62bbe 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> > > @@ -1812,6 +1813,40 @@ int remove_conflicting_framebuffers(struct apertures_struct *a, > } > EXPORT_SYMBOL(remove_conflicting_framebuffers); > > +/** > + * remove_conflicting_pci_framebuffers - remove firmware-configured framebuffers for PCI devices > + * @pdev: PCI device > + * @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 drives a primary > + * display and so kicks out vga16fb. > + */ > +int remove_conflicting_pci_framebuffers(struct pci_dev *pdev, int res_id, const char *name) > +{ > + struct apertures_struct *ap; > + bool primary = false; > + int err; > + > + 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 > + err = remove_conflicting_framebuffers(ap, name, primary); > + kfree(ap); > + return err; > +} > +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 b069433e7fc1..20ea856db900 100644 > --- a/include/drm/drm_fb_helper.h > +++ b/include/drm/drm_fb_helper.h > @@ -577,4 +577,16 @@ drm_fb_helper_remove_conflicting_framebuffers(struct apertures_struct *a, > #endif > } > > +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 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v3 04/13] fbdev: add remove_conflicting_pci_framebuffers() 2018-09-01 14:08 ` [PATCH v3 04/13] fbdev: add remove_conflicting_pci_framebuffers() Michał Mirosław 2018-09-03 16:16 ` Daniel Vetter @ 2018-09-04 15:40 ` kbuild test robot 1 sibling, 0 replies; 38+ messages in thread From: kbuild test robot @ 2018-09-04 15:40 UTC (permalink / raw) To: Michał Mirosław Cc: linux-fbdev, amd-gfx, Bartlomiej Zolnierkiewicz, David Airlie, dri-devel, Jonathan Hunter, Alex Deucher, Thierry Reding, kbuild-all, linux-tegra, Dave Airlie, Maxime Ripard, virtualization, linux-arm-kernel, Gerd Hoffmann [-- Attachment #1: Type: text/plain, Size: 25151 bytes --] Hi Michał, I love your patch! Perhaps something to improve: [auto build test WARNING on linus/master] [also build test WARNING on v4.19-rc2 next-20180831] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Micha-Miros-aw/remove_conflicting_framebuffers-cleanup/20180903-094322 reproduce: make htmldocs :::::: branch date: 5 hours ago :::::: commit date: 5 hours ago All warnings (new ones prefixed by >>): WARNING: convert(1) not found, for SVG to PDF conversion install ImageMagick (https://www.imagemagick.org) include/linux/srcu.h:175: warning: Function parameter or member 'p' not described in 'srcu_dereference_notrace' include/linux/srcu.h:175: warning: Function parameter or member 'sp' not described in 'srcu_dereference_notrace' include/linux/gfp.h:1: warning: no structured comments found include/net/cfg80211.h:4381: warning: Function parameter or member 'wext.ibss' not described in 'wireless_dev' include/net/cfg80211.h:4381: warning: Function parameter or member 'wext.connect' not described in 'wireless_dev' include/net/cfg80211.h:4381: warning: Function parameter or member 'wext.keys' not described in 'wireless_dev' include/net/cfg80211.h:4381: warning: Function parameter or member 'wext.ie' not described in 'wireless_dev' include/net/cfg80211.h:4381: warning: Function parameter or member 'wext.ie_len' not described in 'wireless_dev' include/net/cfg80211.h:4381: warning: Function parameter or member 'wext.bssid' not described in 'wireless_dev' include/net/cfg80211.h:4381: warning: Function parameter or member 'wext.ssid' not described in 'wireless_dev' include/net/cfg80211.h:4381: warning: Function parameter or member 'wext.default_key' not described in 'wireless_dev' include/net/cfg80211.h:4381: warning: Function parameter or member 'wext.default_mgmt_key' not described in 'wireless_dev' include/net/cfg80211.h:4381: warning: Function parameter or member 'wext.prev_bssid_valid' not described in 'wireless_dev' include/net/mac80211.h:2328: warning: Function parameter or member 'radiotap_timestamp.units_pos' not described in 'ieee80211_hw' include/net/mac80211.h:2328: warning: Function parameter or member 'radiotap_timestamp.accuracy' not described in 'ieee80211_hw' include/net/mac80211.h:977: warning: Function parameter or member 'control.rates' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'control.rts_cts_rate_idx' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'control.use_rts' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'control.use_cts_prot' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'control.short_preamble' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'control.skip_table' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'control.jiffies' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'control.vif' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'control.hw_key' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'control.flags' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'control.enqueue_time' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'ack' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'ack.cookie' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'status.rates' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'status.ack_signal' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'status.ampdu_ack_len' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'status.ampdu_len' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'status.antenna' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'status.tx_time' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'status.is_valid_ack_signal' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'status.status_driver_data' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'driver_rates' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'pad' not described in 'ieee80211_tx_info' include/net/mac80211.h:977: warning: Function parameter or member 'rate_driver_data' not described in 'ieee80211_tx_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'rx_stats_avg' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'rx_stats_avg.signal' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'rx_stats_avg.chain_signal' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.filtered' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.retry_failed' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.retry_count' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.lost_packets' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.last_tdls_pkt_time' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.msdu_retries' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.msdu_failed' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.last_ack' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.last_ack_signal' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.ack_signal_filled' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.avg_ack_signal' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'tx_stats.packets' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'tx_stats.bytes' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'tx_stats.last_rate' not described in 'sta_info' net/mac80211/sta_info.h:588: warning: Function parameter or member 'tx_stats.msdu' not described in 'sta_info' include/linux/mod_devicetable.h:763: warning: Function parameter or member 'driver_data' not described in 'typec_device_id' kernel/sched/fair.c:3371: warning: Function parameter or member 'flags' not described in 'attach_entity_load_avg' arch/x86/include/asm/atomic.h:84: warning: Excess function parameter 'i' description in 'arch_atomic_sub_and_test' arch/x86/include/asm/atomic.h:84: warning: Excess function parameter 'v' description in 'arch_atomic_sub_and_test' arch/x86/include/asm/atomic.h:96: warning: Excess function parameter 'v' description in 'arch_atomic_inc' arch/x86/include/asm/atomic.h:109: warning: Excess function parameter 'v' description in 'arch_atomic_dec' arch/x86/include/asm/atomic.h:124: warning: Excess function parameter 'v' description in 'arch_atomic_dec_and_test' arch/x86/include/asm/atomic.h:138: warning: Excess function parameter 'v' description in 'arch_atomic_inc_and_test' arch/x86/include/asm/atomic.h:153: warning: Excess function parameter 'i' description in 'arch_atomic_add_negative' arch/x86/include/asm/atomic.h:153: warning: Excess function parameter 'v' description in 'arch_atomic_add_negative' include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_excl.cb' not described in 'dma_buf' include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_excl.poll' not described in 'dma_buf' include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_excl.active' not described in 'dma_buf' include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_shared.cb' not described in 'dma_buf' include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_shared.poll' not described in 'dma_buf' include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_shared.active' not described in 'dma_buf' include/linux/dma-fence-array.h:54: warning: Function parameter or member 'work' not described in 'dma_fence_array' >> drivers/video/fbdev/core/fbmem.c:1848: warning: Function parameter or member 'res_id' not described in 'remove_conflicting_pci_framebuffers' drivers/video/fbdev/core/fbmem.c:1848: warning: Excess function parameter 'resource_id' description in 'remove_conflicting_pci_framebuffers' include/linux/gpio/driver.h:142: warning: Function parameter or member 'request_key' not described in 'gpio_irq_chip' include/linux/iio/hw-consumer.h:1: warning: no structured comments found include/linux/input/sparse-keymap.h:46: warning: Function parameter or member 'sw' not described in 'key_entry' drivers/pci/pci.c:218: warning: Excess function parameter 'p' description in 'pci_dev_str_match_path' include/linux/regulator/driver.h:227: warning: Function parameter or member 'resume' not described in 'regulator_ops' drivers/regulator/core.c:4479: warning: Excess function parameter 'state' description in 'regulator_suspend' arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw0' not described in 'irb' arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw1' not described in 'irb' arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw2' not described in 'irb' arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw3' not described in 'irb' arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.eadm' not described in 'irb' drivers/slimbus/stream.c:1: warning: no structured comments found drivers/target/target_core_device.c:1: warning: no structured comments found drivers/usb/dwc3/gadget.c:510: warning: Excess function parameter 'dwc' description in 'dwc3_gadget_start_config' drivers/usb/typec/class.c:1497: warning: Excess function parameter 'drvdata' description in 'typec_port_register_altmode' drivers/usb/typec/class.c:1497: warning: Excess function parameter 'drvdata' description in 'typec_port_register_altmode' drivers/usb/typec/class.c:1497: warning: Excess function parameter 'drvdata' description in 'typec_port_register_altmode' drivers/usb/typec/class.c:1497: warning: Excess function parameter 'drvdata' description in 'typec_port_register_altmode' drivers/usb/typec/class.c:1497: warning: Excess function parameter 'drvdata' description in 'typec_port_register_altmode' drivers/usb/typec/class.c:1497: warning: Excess function parameter 'drvdata' description in 'typec_port_register_altmode' drivers/usb/typec/class.c:1497: warning: Excess function parameter 'drvdata' description in 'typec_port_register_altmode' drivers/usb/typec/class.c:1497: warning: Excess function parameter 'drvdata' description in 'typec_port_register_altmode' drivers/usb/typec/class.c:1497: warning: Excess function parameter 'drvdata' description in 'typec_port_register_altmode' drivers/usb/typec/class.c:1497: warning: Excess function parameter 'drvdata' description in 'typec_port_register_altmode' drivers/usb/typec/class.c:1497: warning: Excess function parameter 'drvdata' description in 'typec_port_register_altmode' drivers/usb/typec/class.c:1497: warning: Excess function parameter 'drvdata' description in 'typec_port_register_altmode' drivers/usb/typec/bus.c:1: warning: no structured comments found drivers/usb/typec/bus.c:268: warning: Function parameter or member 'mode' not described in 'typec_match_altmode' drivers/usb/typec/class.c:1497: warning: Excess function parameter 'drvdata' description in 'typec_port_register_altmode' drivers/usb/typec/class.c:1: warning: no structured comments found include/linux/w1.h:281: warning: Function parameter or member 'of_match_table' not described in 'w1_family' fs/direct-io.c:257: warning: Excess function parameter 'offset' description in 'dio_complete' fs/file_table.c:1: warning: no structured comments found fs/libfs.c:477: warning: Excess function parameter 'available' description in 'simple_write_end' fs/posix_acl.c:646: warning: Function parameter or member 'inode' not described in 'posix_acl_update_mode' fs/posix_acl.c:646: warning: Function parameter or member 'mode_p' not described in 'posix_acl_update_mode' fs/posix_acl.c:646: warning: Function parameter or member 'acl' not described in 'posix_acl_update_mode' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:183: warning: Function parameter or member 'blockable' not described in 'amdgpu_mn_read_lock' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:254: warning: Function parameter or member 'blockable' not described in 'amdgpu_mn_invalidate_range_start_gfx' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:302: warning: Function parameter or member 'blockable' not described in 'amdgpu_mn_invalidate_range_start_hsa' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:3011: warning: Excess function parameter 'dev' description in 'amdgpu_vm_get_task_info' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:3012: warning: Function parameter or member 'adev' not described in 'amdgpu_vm_get_task_info' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:3012: warning: Excess function parameter 'dev' description in 'amdgpu_vm_get_task_info' include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_pin' not described in 'drm_driver' include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_unpin' not described in 'drm_driver' include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_res_obj' not described in 'drm_driver' include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_get_sg_table' not described in 'drm_driver' include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_import_sg_table' not described in 'drm_driver' include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_vmap' not described in 'drm_driver' include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_vunmap' not described in 'drm_driver' include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_mmap' not described in 'drm_driver' include/drm/drm_panel.h:98: warning: Function parameter or member 'link' not described in 'drm_panel' drivers/gpu/drm/i915/i915_vma.h:49: warning: cannot understand function prototype: 'struct i915_vma ' drivers/gpu/drm/i915/i915_vma.h:1: warning: no structured comments found drivers/gpu/drm/i915/intel_guc_fwif.h:553: warning: cannot understand function prototype: 'struct guc_log_buffer_state ' drivers/gpu/drm/i915/i915_trace.h:1: warning: no structured comments found include/linux/skbuff.h:860: warning: Function parameter or member 'dev_scratch' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member 'list' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member 'ip_defrag_offset' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member 'skb_mstamp' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member '__cloned_offset' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member 'head_frag' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member '__pkt_type_offset' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member 'encapsulation' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member 'encap_hdr_csum' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member 'csum_valid' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member 'csum_complete_sw' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member 'csum_level' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member 'inner_protocol_type' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member 'remcsum_offload' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member 'offload_fwd_mark' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member 'offload_mr_fwd_mark' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member 'sender_cpu' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member 'reserved_tailroom' not described in 'sk_buff' include/linux/skbuff.h:860: warning: Function parameter or member 'inner_ipproto' not described in 'sk_buff' include/net/sock.h:238: warning: Function parameter or member 'skc_addrpair' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_portpair' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_ipv6only' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_net_refcnt' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_v6_daddr' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_v6_rcv_saddr' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_cookie' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_listener' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_tw_dr' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_rcv_wnd' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_tw_rcv_nxt' not described in 'sock_common' include/net/sock.h:509: warning: Function parameter or member 'sk_backlog.rmem_alloc' not described in 'sock' include/net/sock.h:509: warning: Function parameter or member 'sk_backlog.len' not described in 'sock' include/net/sock.h:509: warning: Function parameter or member 'sk_backlog.head' not described in 'sock' include/net/sock.h:509: warning: Function parameter or member 'sk_backlog.tail' not described in 'sock' include/net/sock.h:509: warning: Function parameter or member 'sk_wq_raw' not described in 'sock' include/net/sock.h:509: warning: Function parameter or member 'tcp_rtx_queue' not described in 'sock' include/net/sock.h:509: warning: Function parameter or member 'sk_route_forced_caps' not described in 'sock' include/net/sock.h:509: warning: Function parameter or member 'sk_txtime_report_errors' not described in 'sock' include/net/sock.h:509: warning: Function parameter or member 'sk_validate_xmit_skb' not described in 'sock' include/linux/netdevice.h:2018: warning: Function parameter or member 'adj_list.upper' not described in 'net_device' include/linux/netdevice.h:2018: warning: Function parameter or member 'adj_list.lower' not described in 'net_device' include/linux/netdevice.h:2018: warning: Function parameter or member 'gso_partial_features' not described in 'net_device' include/linux/netdevice.h:2018: warning: Function parameter or member 'switchdev_ops' not described in 'net_device' # https://github.com/0day-ci/linux/commit/eed1edfa16cb1ed0b7530c47d080859c9a2036ec git remote add linux-review https://github.com/0day-ci/linux git remote update linux-review git checkout eed1edfa16cb1ed0b7530c47d080859c9a2036ec vim +1848 drivers/video/fbdev/core/fbmem.c 712f3147 drivers/video/fbmem.c Linus Torvalds 2011-05-13 1833 712f3147 drivers/video/fbmem.c Linus Torvalds 2011-05-13 1834 /** eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1835 * remove_conflicting_pci_framebuffers - remove firmware-configured framebuffers for PCI devices eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1836 * @pdev: PCI device eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1837 * @resource_id: index of PCI BAR configuring framebuffer memory eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1838 * @name: requesting driver name eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1839 * eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1840 * This function removes framebuffer devices (eg. initialized by firmware) eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1841 * using memory range configured for @pdev's BAR @resource_id. eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1842 * eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1843 * The function assumes that PCI device with shadowed ROM drives a primary eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1844 * display and so kicks out vga16fb. eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1845 */ eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1846 int remove_conflicting_pci_framebuffers(struct pci_dev *pdev, int res_id, const char *name) eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1847 { eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 @1848 struct apertures_struct *ap; eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1849 bool primary = false; eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1850 int err; eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1851 eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1852 ap = alloc_apertures(1); eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1853 if (!ap) eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1854 return -ENOMEM; eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1855 eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1856 ap->ranges[0].base = pci_resource_start(pdev, res_id); eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1857 ap->ranges[0].size = pci_resource_len(pdev, res_id); eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1858 #ifdef CONFIG_X86 eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1859 primary = pdev->resource[PCI_ROM_RESOURCE].flags & eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1860 IORESOURCE_ROM_SHADOW; eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1861 #endif eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1862 err = remove_conflicting_framebuffers(ap, name, primary); eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1863 kfree(ap); eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1864 return err; eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1865 } eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1866 EXPORT_SYMBOL(remove_conflicting_pci_framebuffers); eed1edfa drivers/video/fbdev/core/fbmem.c Michał Mirosław 2018-09-01 1867 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 6587 bytes --] ^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v3 03/13] fbdev: add kerneldoc do remove_conflicting_framebuffers() 2018-09-01 14:08 ` [PATCH v3 00/13] " Michał Mirosław ` (2 preceding siblings ...) 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 [not found] ` <283fef19815b991700b56119d8d5874a2a8da44e.1535810304.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org> 2018-09-01 14:08 ` [PATCH v3 05/13] drm/amdgpu: use simpler remove_conflicting_pci_framebuffers() Michał Mirosław ` (9 subsequent siblings) 13 siblings, 1 reply; 38+ messages in thread From: Michał Mirosław @ 2018-09-01 14:08 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, Jonathan Hunter, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Dave Airlie, Maxime Ripard, virtualization, linux-arm-kernel Document remove_conflicting_framebuffers() behaviour. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> --- drivers/video/fbdev/core/fbmem.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index 0df148eb4699..2de93b5014e3 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -1775,6 +1775,16 @@ int unlink_framebuffer(struct fb_info *fb_info) } EXPORT_SYMBOL(unlink_framebuffer); +/** + * remove_conflicting_framebuffers - remove firmware-configured framebuffers + * @a: memory range, users of which are to be removed + * @name: requesting driver name + * @primary: also kick vga16fb if present + * + * This function removes framebuffer devices (initialized by firmware/bootloader) + * which use memory range described by @a. If @a is NULL all such devices are + * removed. + */ int remove_conflicting_framebuffers(struct apertures_struct *a, const char *name, bool primary) { -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
[parent not found: <283fef19815b991700b56119d8d5874a2a8da44e.1535810304.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org>]
* Re: [PATCH v3 03/13] fbdev: add kerneldoc do remove_conflicting_framebuffers() [not found] ` <283fef19815b991700b56119d8d5874a2a8da44e.1535810304.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org> @ 2018-09-05 11:02 ` Paul Menzel 0 siblings, 0 replies; 38+ messages in thread From: Paul Menzel @ 2018-09-05 11:02 UTC (permalink / raw) To: Michał Mirosław, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW Cc: linux-fbdev-u79uwXL29TY76Z2rM5mHXA, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Jonathan Hunter, Eric Anholt, Thierry Reding, Gerd Hoffmann, Dave Airlie, linux-tegra-u79uwXL29TY76Z2rM5mHXA, Alex Deucher, Maxime Ripard, virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r [-- Attachment #1: Type: text/plain, Size: 1358 bytes --] Dear Michał, Thank you for documenting the function. Do you mean *to* instead of *do* in the commit message summary? On 09/01/18 16:08, Michał Mirosław wrote: > Document remove_conflicting_framebuffers() behaviour. > > Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> > --- > drivers/video/fbdev/core/fbmem.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c > index 0df148eb4699..2de93b5014e3 100644 > --- a/drivers/video/fbdev/core/fbmem.c > +++ b/drivers/video/fbdev/core/fbmem.c > @@ -1775,6 +1775,16 @@ int unlink_framebuffer(struct fb_info *fb_info) > } > EXPORT_SYMBOL(unlink_framebuffer); > > +/** > + * remove_conflicting_framebuffers - remove firmware-configured framebuffers > + * @a: memory range, users of which are to be removed > + * @name: requesting driver name > + * @primary: also kick vga16fb if present > + * > + * This function removes framebuffer devices (initialized by firmware/bootloader) > + * which use memory range described by @a. If @a is NULL all such devices are > + * removed. > + */ > int remove_conflicting_framebuffers(struct apertures_struct *a, > const char *name, bool primary) > { Acked-by: Paul Menzel <pmenzel@molgen.mpg.de> Kind regards, Paul [-- Attachment #2: S/MIME Cryptographic Signature --] [-- Type: application/pkcs7-signature, Size: 5174 bytes --] ^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v3 05/13] drm/amdgpu: use simpler remove_conflicting_pci_framebuffers() 2018-09-01 14:08 ` [PATCH v3 00/13] " Michał Mirosław ` (3 preceding siblings ...) 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 ` [PATCH v3 06/13] drm/bochs: " Michał Mirosław ` (8 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-09-01 14:08 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, Jonathan Hunter, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Dave Airlie, Maxime Ripard, virtualization, linux-arm-kernel Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Alex Deucher <alexander.deucher@amd.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index 0b19482b36b8..9b6e037719db 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -560,28 +560,6 @@ MODULE_DEVICE_TABLE(pci, pciidlist); static struct drm_driver kms_driver; -static int amdgpu_kick_out_firmware_fb(struct pci_dev *pdev) -{ - struct apertures_struct *ap; - bool primary = false; - - ap = alloc_apertures(1); - if (!ap) - return -ENOMEM; - - ap->ranges[0].base = pci_resource_start(pdev, 0); - ap->ranges[0].size = pci_resource_len(pdev, 0); - -#ifdef CONFIG_X86 - primary = pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW; -#endif - drm_fb_helper_remove_conflicting_framebuffers(ap, "amdgpudrmfb", primary); - kfree(ap); - - return 0; -} - - static int amdgpu_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { @@ -609,7 +587,7 @@ static int amdgpu_pci_probe(struct pci_dev *pdev, return ret; /* Get rid of things like offb */ - ret = amdgpu_kick_out_firmware_fb(pdev); + ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, 0, "amdgpudrmfb"); if (ret) return ret; -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v3 06/13] drm/bochs: use simpler remove_conflicting_pci_framebuffers() 2018-09-01 14:08 ` [PATCH v3 00/13] " Michał Mirosław ` (4 preceding siblings ...) 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 ` [PATCH v3 07/13] drm/cirrus: " Michał Mirosław ` (7 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-09-01 14:08 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, Eric Anholt, Thierry Reding, Alex Deucher, Dave Airlie, Maxime Ripard, Jonathan Hunter, linux-arm-kernel Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/bochs/bochs_drv.c | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c index 7b20318483e4..c61b40c72b62 100644 --- a/drivers/gpu/drm/bochs/bochs_drv.c +++ b/drivers/gpu/drm/bochs/bochs_drv.c @@ -143,22 +143,6 @@ static const struct dev_pm_ops bochs_pm_ops = { /* ---------------------------------------------------------------------- */ /* pci interface */ -static int bochs_kick_out_firmware_fb(struct pci_dev *pdev) -{ - struct apertures_struct *ap; - - ap = alloc_apertures(1); - if (!ap) - return -ENOMEM; - - ap->ranges[0].base = pci_resource_start(pdev, 0); - ap->ranges[0].size = pci_resource_len(pdev, 0); - drm_fb_helper_remove_conflicting_framebuffers(ap, "bochsdrmfb", false); - kfree(ap); - - return 0; -} - static int bochs_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { @@ -171,7 +155,7 @@ static int bochs_pci_probe(struct pci_dev *pdev, return -ENOMEM; } - ret = bochs_kick_out_firmware_fb(pdev); + ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, 0, "bochsdrmfb"); if (ret) return ret; -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v3 07/13] drm/cirrus: use simpler remove_conflicting_pci_framebuffers() 2018-09-01 14:08 ` [PATCH v3 00/13] " Michał Mirosław ` (5 preceding siblings ...) 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 ` [PATCH v3 09/13] drm/radeon: " Michał Mirosław ` (6 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-09-01 14:08 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, Eric Anholt, Thierry Reding, Alex Deucher, Dave Airlie, Maxime Ripard, Jonathan Hunter, linux-arm-kernel Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/cirrus/cirrus_drv.c | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/drivers/gpu/drm/cirrus/cirrus_drv.c b/drivers/gpu/drm/cirrus/cirrus_drv.c index 69c4e352dd78..85ed8657c862 100644 --- a/drivers/gpu/drm/cirrus/cirrus_drv.c +++ b/drivers/gpu/drm/cirrus/cirrus_drv.c @@ -42,33 +42,12 @@ static const struct pci_device_id pciidlist[] = { }; -static int cirrus_kick_out_firmware_fb(struct pci_dev *pdev) -{ - struct apertures_struct *ap; - bool primary = false; - - ap = alloc_apertures(1); - if (!ap) - return -ENOMEM; - - ap->ranges[0].base = pci_resource_start(pdev, 0); - ap->ranges[0].size = pci_resource_len(pdev, 0); - -#ifdef CONFIG_X86 - primary = pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW; -#endif - drm_fb_helper_remove_conflicting_framebuffers(ap, "cirrusdrmfb", primary); - kfree(ap); - - return 0; -} - static int cirrus_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { int ret; - ret = cirrus_kick_out_firmware_fb(pdev); + ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, 0, "cirrusdrmfb"); if (ret) return ret; -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v3 09/13] drm/radeon: use simpler remove_conflicting_pci_framebuffers() 2018-09-01 14:08 ` [PATCH v3 00/13] " Michał Mirosław ` (6 preceding siblings ...) 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 ` [PATCH v3 08/13] drm/mgag200: " Michał Mirosław ` (5 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-09-01 14:08 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, Jonathan Hunter, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Dave Airlie, Maxime Ripard, virtualization, linux-arm-kernel Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Alex Deucher <alexander.deucher@amd.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/radeon/radeon_drv.c | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c index b28288a781ef..36c98a0ec991 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c @@ -311,27 +311,6 @@ static struct drm_driver kms_driver; bool radeon_device_is_virtual(void); -static int radeon_kick_out_firmware_fb(struct pci_dev *pdev) -{ - struct apertures_struct *ap; - bool primary = false; - - ap = alloc_apertures(1); - if (!ap) - return -ENOMEM; - - ap->ranges[0].base = pci_resource_start(pdev, 0); - ap->ranges[0].size = pci_resource_len(pdev, 0); - -#ifdef CONFIG_X86 - primary = pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW; -#endif - drm_fb_helper_remove_conflicting_framebuffers(ap, "radeondrmfb", primary); - kfree(ap); - - return 0; -} - static int radeon_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { @@ -341,7 +320,7 @@ static int radeon_pci_probe(struct pci_dev *pdev, return -EPROBE_DEFER; /* Get rid of things like offb */ - ret = radeon_kick_out_firmware_fb(pdev); + ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, 0, "radeondrmfb"); if (ret) return ret; -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v3 08/13] drm/mgag200: use simpler remove_conflicting_pci_framebuffers() 2018-09-01 14:08 ` [PATCH v3 00/13] " Michał Mirosław ` (7 preceding siblings ...) 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 ` [PATCH v3 10/13] drm/virtio: " Michał Mirosław ` (4 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-09-01 14:08 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, Jonathan Hunter, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Dave Airlie, Maxime Ripard, virtualization, linux-arm-kernel Remove duplicated call, while at it. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/mgag200/mgag200_drv.c | 21 +-------------------- drivers/gpu/drm/mgag200/mgag200_main.c | 9 --------- 2 files changed, 1 insertion(+), 29 deletions(-) diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c index 74cdde2ee474..ac6af4bd9df6 100644 --- a/drivers/gpu/drm/mgag200/mgag200_drv.c +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c @@ -42,29 +42,10 @@ static const struct pci_device_id pciidlist[] = { MODULE_DEVICE_TABLE(pci, pciidlist); -static void mgag200_kick_out_firmware_fb(struct pci_dev *pdev) -{ - struct apertures_struct *ap; - bool primary = false; - - ap = alloc_apertures(1); - if (!ap) - return; - - ap->ranges[0].base = pci_resource_start(pdev, 0); - ap->ranges[0].size = pci_resource_len(pdev, 0); - -#ifdef CONFIG_X86 - primary = pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW; -#endif - drm_fb_helper_remove_conflicting_framebuffers(ap, "mgag200drmfb", primary); - kfree(ap); -} - static int mga_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { - mgag200_kick_out_firmware_fb(pdev); + drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, 0, "mgag200drmfb"); return drm_get_pci_dev(pdev, ent, &driver); } diff --git a/drivers/gpu/drm/mgag200/mgag200_main.c b/drivers/gpu/drm/mgag200/mgag200_main.c index 780f983b0294..79d54103d470 100644 --- a/drivers/gpu/drm/mgag200/mgag200_main.c +++ b/drivers/gpu/drm/mgag200/mgag200_main.c @@ -124,20 +124,11 @@ static int mga_probe_vram(struct mga_device *mdev, void __iomem *mem) static int mga_vram_init(struct mga_device *mdev) { void __iomem *mem; - struct apertures_struct *aper = alloc_apertures(1); - if (!aper) - return -ENOMEM; /* BAR 0 is VRAM */ mdev->mc.vram_base = pci_resource_start(mdev->dev->pdev, 0); mdev->mc.vram_window = pci_resource_len(mdev->dev->pdev, 0); - aper->ranges[0].base = mdev->mc.vram_base; - aper->ranges[0].size = mdev->mc.vram_window; - - drm_fb_helper_remove_conflicting_framebuffers(aper, "mgafb", true); - kfree(aper); - if (!devm_request_mem_region(mdev->dev->dev, mdev->mc.vram_base, mdev->mc.vram_window, "mgadrmfb_vram")) { DRM_ERROR("can't reserve VRAM\n"); -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v3 10/13] drm/virtio: use simpler remove_conflicting_pci_framebuffers() 2018-09-01 14:08 ` [PATCH v3 00/13] " Michał Mirosław ` (8 preceding siblings ...) 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 ` [PATCH v3 11/13] drm/vc4: use simpler remove_conflicting_framebuffers(NULL) Michał Mirosław ` (3 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-09-01 14:08 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, virtualization, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Dave Airlie, Maxime Ripard, Jonathan Hunter, linux-arm-kernel Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/virtio/virtgpu_drm_bus.c | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/drivers/gpu/drm/virtio/virtgpu_drm_bus.c b/drivers/gpu/drm/virtio/virtgpu_drm_bus.c index 7df8d0c9026a..115ed546ca4e 100644 --- a/drivers/gpu/drm/virtio/virtgpu_drm_bus.c +++ b/drivers/gpu/drm/virtio/virtgpu_drm_bus.c @@ -28,26 +28,6 @@ #include "virtgpu_drv.h" -static void virtio_pci_kick_out_firmware_fb(struct pci_dev *pci_dev) -{ - struct apertures_struct *ap; - bool primary; - - ap = alloc_apertures(1); - if (!ap) - return; - - ap->ranges[0].base = pci_resource_start(pci_dev, 0); - ap->ranges[0].size = pci_resource_len(pci_dev, 0); - - primary = pci_dev->resource[PCI_ROM_RESOURCE].flags - & IORESOURCE_ROM_SHADOW; - - drm_fb_helper_remove_conflicting_framebuffers(ap, "virtiodrmfb", primary); - - kfree(ap); -} - int drm_virtio_init(struct drm_driver *driver, struct virtio_device *vdev) { struct drm_device *dev; @@ -69,7 +49,9 @@ int drm_virtio_init(struct drm_driver *driver, struct virtio_device *vdev) pname); dev->pdev = pdev; if (vga) - virtio_pci_kick_out_firmware_fb(pdev); + drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, + 0, + "virtiodrmfb"); snprintf(unique, sizeof(unique), "pci:%s", pname); ret = drm_dev_set_unique(dev, unique); -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v3 11/13] drm/vc4: use simpler remove_conflicting_framebuffers(NULL) 2018-09-01 14:08 ` [PATCH v3 00/13] " Michał Mirosław ` (9 preceding siblings ...) 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 ` [PATCH v3 13/13] drm/tegra: kick out simplefb Michał Mirosław ` (2 subsequent siblings) 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-09-01 14:08 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx, Jonathan Hunter, Eric Anholt, Thierry Reding, Gerd Hoffmann, Alex Deucher, Dave Airlie, Maxime Ripard, virtualization, linux-arm-kernel Use remove_conflicting_framebuffers(NULL) instead of open-coding it. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Eric Anholt <eric@anholt.net> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/vc4/vc4_drv.c | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c index 94b99c90425a..96bb90325995 100644 --- a/drivers/gpu/drm/vc4/vc4_drv.c +++ b/drivers/gpu/drm/vc4/vc4_drv.c @@ -246,24 +246,6 @@ static void vc4_match_add_drivers(struct device *dev, } } -static void vc4_kick_out_firmware_fb(void) -{ - struct apertures_struct *ap; - - ap = alloc_apertures(1); - if (!ap) - return; - - /* Since VC4 is a UMA device, the simplefb node may have been - * located anywhere in memory. - */ - ap->ranges[0].base = 0; - ap->ranges[0].size = ~0; - - drm_fb_helper_remove_conflicting_framebuffers(ap, "vc4drmfb", false); - kfree(ap); -} - static int vc4_drm_bind(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); @@ -296,7 +278,7 @@ static int vc4_drm_bind(struct device *dev) if (ret) goto gem_destroy; - vc4_kick_out_firmware_fb(); + drm_fb_helper_remove_conflicting_framebuffers(NULL, "vc4drmfb", false); ret = drm_dev_register(drm, 0); if (ret < 0) -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v3 13/13] drm/tegra: kick out simplefb 2018-09-01 14:08 ` [PATCH v3 00/13] " Michał Mirosław ` (10 preceding siblings ...) 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 ` [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> 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-09-01 14:08 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, Bartlomiej Zolnierkiewicz, David Airlie, Eric Anholt, amd-gfx, Jonathan Hunter, Alex Deucher, Thierry Reding, Gerd Hoffmann, linux-tegra, Dave Airlie, Maxime Ripard, virtualization, linux-arm-kernel Kick out firmware fb when loading Tegra driver. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/tegra/drm.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c index 7afe2f635f74..b51ec138fed2 100644 --- a/drivers/gpu/drm/tegra/drm.c +++ b/drivers/gpu/drm/tegra/drm.c @@ -1203,6 +1203,10 @@ static int host1x_drm_probe(struct host1x_device *dev) dev_set_drvdata(&dev->dev, drm); + err = drm_fb_helper_remove_conflicting_framebuffers(NULL, "tegradrmfb", false); + if (err < 0) + goto unref; + err = drm_dev_register(drm, 0); if (err < 0) goto unref; -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v3 12/13] drm/sun4i: use simpler remove_conflicting_framebuffers(NULL) 2018-09-01 14:08 ` [PATCH v3 00/13] " Michał Mirosław ` (11 preceding siblings ...) 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 [not found] ` <cover.1535810304.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org> 13 siblings, 0 replies; 38+ messages in thread From: Michał Mirosław @ 2018-09-01 14:08 UTC (permalink / raw) To: dri-devel Cc: linux-fbdev, linux-tegra, Bartlomiej Zolnierkiewicz, Maxime Ripard, Eric Anholt, amd-gfx, Jonathan Hunter, David Airlie, Thierry Reding, Gerd Hoffmann, Alex Deucher, Dave Airlie, virtualization, linux-arm-kernel Use remove_conflicting_framebuffers(NULL) instead of duplicating it. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/sun4i/sun4i_drv.c | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c index 50d19605c38f..555b5db8036f 100644 --- a/drivers/gpu/drm/sun4i/sun4i_drv.c +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c @@ -60,22 +60,6 @@ static struct drm_driver sun4i_drv_driver = { /* Frame Buffer Operations */ }; -static void sun4i_remove_framebuffers(void) -{ - struct apertures_struct *ap; - - ap = alloc_apertures(1); - if (!ap) - return; - - /* The framebuffer can be located anywhere in RAM */ - ap->ranges[0].base = 0; - ap->ranges[0].size = ~0; - - drm_fb_helper_remove_conflicting_framebuffers(ap, "sun4i-drm-fb", false); - kfree(ap); -} - static int sun4i_drv_bind(struct device *dev) { struct drm_device *drm; @@ -118,7 +102,7 @@ static int sun4i_drv_bind(struct device *dev) drm->irq_enabled = true; /* Remove early framebuffers (ie. simplefb) */ - sun4i_remove_framebuffers(); + drm_fb_helper_remove_conflicting_framebuffers(NULL, "sun4i-drm-fb", false); /* Create our framebuffer */ ret = sun4i_framebuffer_init(drm); -- 2.18.0 ^ permalink raw reply related [flat|nested] 38+ messages in thread
[parent not found: <cover.1535810304.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org>]
* Re: [PATCH v3 00/13] remove_conflicting_framebuffers() cleanup [not found] ` <cover.1535810304.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org> @ 2018-09-03 7:43 ` Daniel Vetter [not found] ` <20180903074315.GB21634-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> 0 siblings, 1 reply; 38+ messages in thread From: Daniel Vetter @ 2018-09-03 7:43 UTC (permalink / raw) To: Michał Mirosław Cc: linux-fbdev-u79uwXL29TY76Z2rM5mHXA, Bartlomiej Zolnierkiewicz, David Airlie, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Jonathan Hunter, Alex Deucher, Thierry Reding, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, linux-tegra-u79uwXL29TY76Z2rM5mHXA, Dave Airlie, Maxime Ripard, virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Gerd Hoffmann On Sat, Sep 01, 2018 at 04:08:41PM +0200, Michał Mirosław wrote: > This series cleans up duplicated code for replacing firmware FB > driver with proper DRI driver and adds handover support to > Tegra driver. > > This is a sligtly updated version of a series sent on 24 Nov 2017. > > --- > v2: > - rebased on current drm-next > - dropped staging/sm750fb changes > - added kernel docs for DRM helpers > v3: > - move kerneldoc to fbdev, where functions are implemented > - split kerneldoc for remove_conflicting_framebuffers() Ah, that's not quite what I had in mind. I think having the docs (also) in the drm helpers would be good, since that's where drm people will look, and that's the function they'll call. I just wanted you to split the fbdev and drm parts into 2 patches (since those are two different maintainers). Anyway, this is ok too, so imo ready for merging. If you can resurrect the drm docs (with a patch title of "drm/fb-helper: document fbdev remove functions" or similar) that would be great. Only thing we need for merging now is the ack from Bartlomiej. -Daniel > - propagate return value in remove_conflicting_pci_framebuffers() > > --- > Michał Mirosław (13): > fbdev: show fbdev number for debugging > fbdev: allow apertures = NULL in remove_conflicting_framebuffers() > fbdev: add kerneldoc do remove_conflicting_framebuffers() > fbdev: add remove_conflicting_pci_framebuffers() > drm/amdgpu: use simpler remove_conflicting_pci_framebuffers() > drm/bochs: use simpler remove_conflicting_pci_framebuffers() > drm/cirrus: use simpler remove_conflicting_pci_framebuffers() > drm/mgag200: use simpler remove_conflicting_pci_framebuffers() > drm/radeon: use simpler remove_conflicting_pci_framebuffers() > drm/virtio: use simpler remove_conflicting_pci_framebuffers() > drm/vc4: use simpler remove_conflicting_framebuffers(NULL) > drm/sun4i: use simpler remove_conflicting_framebuffers(NULL) > drm/tegra: kick out simplefb > > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 24 +-------- > drivers/gpu/drm/bochs/bochs_drv.c | 18 +------ > drivers/gpu/drm/cirrus/cirrus_drv.c | 23 +-------- > drivers/gpu/drm/mgag200/mgag200_drv.c | 21 +------- > drivers/gpu/drm/mgag200/mgag200_main.c | 9 ---- > drivers/gpu/drm/radeon/radeon_drv.c | 23 +-------- > drivers/gpu/drm/sun4i/sun4i_drv.c | 18 +------ > drivers/gpu/drm/tegra/drm.c | 4 ++ > drivers/gpu/drm/vc4/vc4_drv.c | 20 +------- > drivers/gpu/drm/virtio/virtgpu_drm_bus.c | 24 ++------- > drivers/video/fbdev/core/fbmem.c | 63 +++++++++++++++++++++++- > include/drm/drm_fb_helper.h | 12 +++++ > include/linux/fb.h | 2 + > 13 files changed, 89 insertions(+), 172 deletions(-) > > -- > 2.18.0 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 38+ messages in thread
[parent not found: <20180903074315.GB21634-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>]
* Re: [PATCH v3 00/13] remove_conflicting_framebuffers() cleanup [not found] ` <20180903074315.GB21634-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> @ 2018-09-03 11:31 ` Bartlomiej Zolnierkiewicz 2018-09-03 16:26 ` Daniel Vetter 0 siblings, 1 reply; 38+ messages in thread From: Bartlomiej Zolnierkiewicz @ 2018-09-03 11:31 UTC (permalink / raw) To: Daniel Vetter Cc: linux-fbdev-u79uwXL29TY76Z2rM5mHXA, David Airlie, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Michał Mirosław, Alex Deucher, Thierry Reding, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, linux-tegra-u79uwXL29TY76Z2rM5mHXA, Dave Airlie, Maxime Ripard, Jonathan Hunter, virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Gerd Hoffmann On Monday, September 03, 2018 09:43:15 AM Daniel Vetter wrote: > On Sat, Sep 01, 2018 at 04:08:41PM +0200, Michał Mirosław wrote: > > This series cleans up duplicated code for replacing firmware FB > > driver with proper DRI driver and adds handover support to > > Tegra driver. > > > > This is a sligtly updated version of a series sent on 24 Nov 2017. > > > > --- > > v2: > > - rebased on current drm-next > > - dropped staging/sm750fb changes > > - added kernel docs for DRM helpers > > v3: > > - move kerneldoc to fbdev, where functions are implemented > > - split kerneldoc for remove_conflicting_framebuffers() > > Ah, that's not quite what I had in mind. I think having the docs (also) in > the drm helpers would be good, since that's where drm people will look, > and that's the function they'll call. I just wanted you to split the fbdev > and drm parts into 2 patches (since those are two different maintainers). > > Anyway, this is ok too, so imo ready for merging. If you can resurrect the > drm docs (with a patch title of "drm/fb-helper: document fbdev remove > functions" or similar) that would be great. > > Only thing we need for merging now is the ack from Bartlomiej. For the whole patchset: Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> > -Daniel > > > - propagate return value in remove_conflicting_pci_framebuffers() > > > > --- > > Michał Mirosław (13): > > fbdev: show fbdev number for debugging > > fbdev: allow apertures == NULL in remove_conflicting_framebuffers() > > fbdev: add kerneldoc do remove_conflicting_framebuffers() > > fbdev: add remove_conflicting_pci_framebuffers() > > drm/amdgpu: use simpler remove_conflicting_pci_framebuffers() > > drm/bochs: use simpler remove_conflicting_pci_framebuffers() > > drm/cirrus: use simpler remove_conflicting_pci_framebuffers() > > drm/mgag200: use simpler remove_conflicting_pci_framebuffers() > > drm/radeon: use simpler remove_conflicting_pci_framebuffers() > > drm/virtio: use simpler remove_conflicting_pci_framebuffers() > > drm/vc4: use simpler remove_conflicting_framebuffers(NULL) > > drm/sun4i: use simpler remove_conflicting_framebuffers(NULL) > > drm/tegra: kick out simplefb > > > > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 24 +-------- > > drivers/gpu/drm/bochs/bochs_drv.c | 18 +------ > > drivers/gpu/drm/cirrus/cirrus_drv.c | 23 +-------- > > drivers/gpu/drm/mgag200/mgag200_drv.c | 21 +------- > > drivers/gpu/drm/mgag200/mgag200_main.c | 9 ---- > > drivers/gpu/drm/radeon/radeon_drv.c | 23 +-------- > > drivers/gpu/drm/sun4i/sun4i_drv.c | 18 +------ > > drivers/gpu/drm/tegra/drm.c | 4 ++ > > drivers/gpu/drm/vc4/vc4_drv.c | 20 +------- > > drivers/gpu/drm/virtio/virtgpu_drm_bus.c | 24 ++------- > > drivers/video/fbdev/core/fbmem.c | 63 +++++++++++++++++++++++- > > include/drm/drm_fb_helper.h | 12 +++++ > > include/linux/fb.h | 2 + > > 13 files changed, 89 insertions(+), 172 deletions(-) Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics ^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v3 00/13] remove_conflicting_framebuffers() cleanup 2018-09-03 11:31 ` Bartlomiej Zolnierkiewicz @ 2018-09-03 16:26 ` Daniel Vetter 0 siblings, 0 replies; 38+ messages in thread From: Daniel Vetter @ 2018-09-03 16:26 UTC (permalink / raw) To: Bartlomiej Zolnierkiewicz Cc: linux-fbdev-u79uwXL29TY76Z2rM5mHXA, David Airlie, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Michał Mirosław, Alex Deucher, Thierry Reding, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Daniel Vetter, linux-tegra-u79uwXL29TY76Z2rM5mHXA, Dave Airlie, Maxime Ripard, Jonathan Hunter, virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Gerd Hoffmann On Mon, Sep 03, 2018 at 01:31:34PM +0200, Bartlomiej Zolnierkiewicz wrote: > On Monday, September 03, 2018 09:43:15 AM Daniel Vetter wrote: > > On Sat, Sep 01, 2018 at 04:08:41PM +0200, Michał Mirosław wrote: > > > This series cleans up duplicated code for replacing firmware FB > > > driver with proper DRI driver and adds handover support to > > > Tegra driver. > > > > > > This is a sligtly updated version of a series sent on 24 Nov 2017. > > > > > > --- > > > v2: > > > - rebased on current drm-next > > > - dropped staging/sm750fb changes > > > - added kernel docs for DRM helpers > > > v3: > > > - move kerneldoc to fbdev, where functions are implemented > > > - split kerneldoc for remove_conflicting_framebuffers() > > > > Ah, that's not quite what I had in mind. I think having the docs (also) in > > the drm helpers would be good, since that's where drm people will look, > > and that's the function they'll call. I just wanted you to split the fbdev > > and drm parts into 2 patches (since those are two different maintainers). > > > > Anyway, this is ok too, so imo ready for merging. If you can resurrect the > > drm docs (with a patch title of "drm/fb-helper: document fbdev remove > > functions" or similar) that would be great. > > > > Only thing we need for merging now is the ack from Bartlomiej. > > For the whole patchset: > > Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Thanks, entire patch set applied to drm-misc-next for 4.20. -Daniel > > > -Daniel > > > > > - propagate return value in remove_conflicting_pci_framebuffers() > > > > > > --- > > > Michał Mirosław (13): > > > fbdev: show fbdev number for debugging > > > fbdev: allow apertures = NULL in remove_conflicting_framebuffers() > > > fbdev: add kerneldoc do remove_conflicting_framebuffers() > > > fbdev: add remove_conflicting_pci_framebuffers() > > > drm/amdgpu: use simpler remove_conflicting_pci_framebuffers() > > > drm/bochs: use simpler remove_conflicting_pci_framebuffers() > > > drm/cirrus: use simpler remove_conflicting_pci_framebuffers() > > > drm/mgag200: use simpler remove_conflicting_pci_framebuffers() > > > drm/radeon: use simpler remove_conflicting_pci_framebuffers() > > > drm/virtio: use simpler remove_conflicting_pci_framebuffers() > > > drm/vc4: use simpler remove_conflicting_framebuffers(NULL) > > > drm/sun4i: use simpler remove_conflicting_framebuffers(NULL) > > > drm/tegra: kick out simplefb > > > > > > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 24 +-------- > > > drivers/gpu/drm/bochs/bochs_drv.c | 18 +------ > > > drivers/gpu/drm/cirrus/cirrus_drv.c | 23 +-------- > > > drivers/gpu/drm/mgag200/mgag200_drv.c | 21 +------- > > > drivers/gpu/drm/mgag200/mgag200_main.c | 9 ---- > > > drivers/gpu/drm/radeon/radeon_drv.c | 23 +-------- > > > drivers/gpu/drm/sun4i/sun4i_drv.c | 18 +------ > > > drivers/gpu/drm/tegra/drm.c | 4 ++ > > > drivers/gpu/drm/vc4/vc4_drv.c | 20 +------- > > > drivers/gpu/drm/virtio/virtgpu_drm_bus.c | 24 ++------- > > > drivers/video/fbdev/core/fbmem.c | 63 +++++++++++++++++++++++- > > > include/drm/drm_fb_helper.h | 12 +++++ > > > include/linux/fb.h | 2 + > > > 13 files changed, 89 insertions(+), 172 deletions(-) > > Best regards, > -- > Bartlomiej Zolnierkiewicz > Samsung R&D Institute Poland > Samsung Electronics > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 38+ messages in thread
end of thread, other threads:[~2018-09-05 11:02 UTC | newest] Thread overview: 38+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <cover.1511544782.git.mirq-linux@rere.qmqm.pl> 2018-08-30 21:00 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup 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-31 8:56 ` Daniel Vetter [not found] ` <20180831085656.GR21634-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> 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 04/12] drm/amdgpu: use simpler remove_conflicting_pci_framebuffers() 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 ` [PATCH v2 06/12] drm/cirrus: use simpler remove_conflicting_pci_framebuffers() Michał Mirosław 2018-08-30 21:00 ` [PATCH v2 05/12] drm/bochs: " Michał Mirosław 2018-08-30 21:00 ` [PATCH v2 07/12] drm/mgag200: " Michał Mirosław 2018-08-30 21:00 ` [PATCH v2 08/12] drm/radeon: " Michał Mirosław 2018-08-30 21:00 ` [PATCH v2 09/12] drm/virtio: " 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 ` [PATCH v2 11/12] drm/sun4i: " Michał Mirosław 2018-08-30 21:00 ` [PATCH v2 12/12] drm/tegra: kick out simplefb Michał Mirosław 2018-08-31 9:04 ` [PATCH v2 00/12] remove_conflicting_framebuffers() cleanup Daniel Vetter [not found] ` <20180831090439.GT21634-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> 2018-08-31 9:07 ` Chris Wilson 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 ` [PATCH v3 02/13] fbdev: allow apertures == NULL in remove_conflicting_framebuffers() 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 ` [PATCH v3 04/13] fbdev: add remove_conflicting_pci_framebuffers() Michał Mirosław 2018-09-03 16:16 ` Daniel Vetter 2018-09-04 15:40 ` kbuild test robot 2018-09-01 14:08 ` [PATCH v3 03/13] fbdev: add kerneldoc do remove_conflicting_framebuffers() Michał Mirosław [not found] ` <283fef19815b991700b56119d8d5874a2a8da44e.1535810304.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org> 2018-09-05 11:02 ` Paul Menzel 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 ` [PATCH v3 06/13] drm/bochs: " Michał Mirosław 2018-09-01 14:08 ` [PATCH v3 07/13] drm/cirrus: " Michał Mirosław 2018-09-01 14:08 ` [PATCH v3 09/13] drm/radeon: " 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 ` [PATCH v3 11/13] drm/vc4: use simpler remove_conflicting_framebuffers(NULL) 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 [not found] ` <20180903074315.GB21634-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> 2018-09-03 11:31 ` Bartlomiej Zolnierkiewicz 2018-09-03 16:26 ` Daniel Vetter
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).