linux-hyperv.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE
@ 2022-12-19 16:04 Thomas Zimmermann
  2022-12-19 16:04 ` [PATCH 01/18] fbcon: Remove trailing whitespaces Thomas Zimmermann
                   ` (17 more replies)
  0 siblings, 18 replies; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:04 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

Remove struct fb_info.apertures and FBINFO_MISC_FIRMWARE from fbdev
and handle the aperture ownership without involving the fbdev core.

The apertures field in struct fb_info is a remnant from earlier
ownership management for framebuffer apertures. When fbdev core code
still handled ownership of the framebuffer among fbdev device drivers,
generic drivers set the aperture ranges to claim the firmware scanout
buffer for themselves.

Now that we have a module with helpers that manage aperture and
framebuffer ownership among drivers, the aperture field is not needed
any longer. In fact, several drivers set this field, even though they
are not generic fbdev drivers. Only drivers that set FBINFO_MISC_FIRMWARE
can use apertures in a meaningful way.

To remove FBINFO_MISC_FIRMWARE, patches 1 and 2 remove it from fbcon. It
was used to work around issues with font loading. That is now all handled
in userspace.

Patches 3 to 9 remove aperture setup from all non-generic drivers. These
drivers are not for firmware graphics and do not have to set the values.
For DRM, we do not need to allocate the apertures field any longer.

Patches 10 to 17 update all generic fbdev drivers to manage aperture
ownership by themselves by called Linux aperture helpers. The setup of
the apertures field and setting FBINFO_MISC_FIRMWARE is being removed as
a result of that.

With all of its users gone, patch 18 removes FBINFO_MISC_FIRMWARE, struct
fb_info.apertures and the fbdev core's aperture code.

Tested with handover combinations of efifb, simpledrm and radeon.

Thomas Zimmermann (18):
  fbcon: Remove trailing whitespaces
  Revert "fbcon: don't lose the console font across generic->chip driver
    switch"
  drm/gma500: Do not set struct fb_info.apertures
  drm/i915: Do not set struct fb_info.apertures
  drm/radeon: Do not set struct fb_info.apertures
  drm/fb-helper: Do not allocate unused apertures structure
  fbdev/clps711x-fb: Do not set struct fb_info.apertures
  fbdev/hyperv-fb: Do not set struct fb_info.apertures
  vfio-mdev/mdpy-fb: Do not set struct fb_info.apertures
  fbdev/efifb: Add struct efifb_par for driver data
  fbdev/efifb: Do not use struct fb_info.apertures
  fbdev/offb: Allocate struct offb_par with framebuffer_alloc()
  fbdev/offb: Do not use struct fb_info.apertures
  fbdev/simplefb: Do not use struct fb_info.apertures
  fbdev/vesafb: Remove trailing whitespaces
  fbdev/vesafb: Do not use struct fb_info.apertures
  fbdev/vga16fb: Do not use struct fb_info.apertures
  drm/fbdev: Remove aperture handling and FBINFO_MISC_FIRMWARE

 drivers/gpu/drm/drm_fb_helper.c            | 20 ++---------
 drivers/gpu/drm/gma500/framebuffer.c       |  5 ---
 drivers/gpu/drm/i915/display/intel_fbdev.c |  7 ----
 drivers/gpu/drm/radeon/radeon_fb.c         |  4 ---
 drivers/video/fbdev/clps711x-fb.c          | 10 +-----
 drivers/video/fbdev/core/fbcon.c           | 41 ++++++++++------------
 drivers/video/fbdev/core/fbmem.c           | 33 -----------------
 drivers/video/fbdev/core/fbsysfs.c         |  1 -
 drivers/video/fbdev/efifb.c                | 35 +++++++++++-------
 drivers/video/fbdev/hyperv_fb.c            | 17 ++++-----
 drivers/video/fbdev/offb.c                 | 33 +++++++++--------
 drivers/video/fbdev/simplefb.c             | 19 +++++-----
 drivers/video/fbdev/vesafb.c               | 37 ++++++++++---------
 drivers/video/fbdev/vga16fb.c              | 15 +++-----
 include/linux/fb.h                         | 22 ------------
 samples/vfio-mdev/mdpy-fb.c                |  8 -----
 16 files changed, 99 insertions(+), 208 deletions(-)


base-commit: d322881f7e33af24901ee8ccaec3beef82f21203
prerequisite-patch-id: c2b2f08f0eccc9f5df0c0da49fa1d36267deb11d
prerequisite-patch-id: c67e5d886a47b7d0266d81100837557fda34cb24
prerequisite-patch-id: 3f204510fcbf9530d6540bd8e6128cce598988b6
-- 
2.39.0


^ permalink raw reply	[flat|nested] 39+ messages in thread

* [PATCH 01/18] fbcon: Remove trailing whitespaces
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
@ 2022-12-19 16:04 ` Thomas Zimmermann
  2022-12-20  9:10   ` Javier Martinez Canillas
  2022-12-19 16:05 ` [PATCH 02/18] Revert "fbcon: don't lose the console font across generic->chip driver switch" Thomas Zimmermann
                   ` (16 subsequent siblings)
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:04 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

Fix coding style. No functional changes.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/video/fbdev/core/fbcon.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index c0143d38df83..500b26d652f6 100644
--- a/drivers/video/fbdev/core/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
@@ -26,7 +26,7 @@
  *
  *  Hardware cursor support added by Emmanuel Marty (core@ggi-project.org)
  *  Smart redraw scrolling, arbitrary font width support, 512char font support
- *  and software scrollback added by 
+ *  and software scrollback added by
  *                         Jakub Jelinek (jj@ultra.linux.cz)
  *
  *  Random hacking by Martin Mares <mj@ucw.cz>
@@ -127,7 +127,7 @@ static int logo_shown = FBCON_LOGO_CANSHOW;
 /* console mappings */
 static unsigned int first_fb_vc;
 static unsigned int last_fb_vc = MAX_NR_CONSOLES - 1;
-static int fbcon_is_default = 1; 
+static int fbcon_is_default = 1;
 static int primary_device = -1;
 static int fbcon_has_console_bind;
 
@@ -415,12 +415,12 @@ static int __init fb_console_setup(char *this_opt)
 			strscpy(fontname, options + 5, sizeof(fontname));
 			continue;
 		}
-		
+
 		if (!strncmp(options, "scrollback:", 11)) {
 			pr_warn("Ignoring scrollback size option\n");
 			continue;
 		}
-		
+
 		if (!strncmp(options, "map:", 4)) {
 			options += 4;
 			if (*options) {
@@ -446,7 +446,7 @@ static int __init fb_console_setup(char *this_opt)
 				last_fb_vc = simple_strtoul(options, &options, 10) - 1;
 			if (last_fb_vc < first_fb_vc || last_fb_vc >= MAX_NR_CONSOLES)
 				last_fb_vc = MAX_NR_CONSOLES - 1;
-			fbcon_is_default = 0; 
+			fbcon_is_default = 0;
 			continue;
 		}
 
@@ -940,7 +940,7 @@ static const char *fbcon_startup(void)
 	info = fbcon_registered_fb[info_idx];
 	if (!info)
 		return NULL;
-	
+
 	if (fbcon_open(info))
 		return NULL;
 
@@ -1999,7 +1999,7 @@ static void updatescrollmode(struct fbcon_display *p,
 #define PITCH(w) (((w) + 7) >> 3)
 #define CALC_FONTSZ(h, p, c) ((h) * (p) * (c)) /* size = height * pitch * charcount */
 
-static int fbcon_resize(struct vc_data *vc, unsigned int width, 
+static int fbcon_resize(struct vc_data *vc, unsigned int width,
 			unsigned int height, unsigned int user)
 {
 	struct fb_info *info = fbcon_info_from_console(vc->vc_num);
@@ -2174,7 +2174,7 @@ static int fbcon_switch(struct vc_data *vc)
 	    ops->update_start(info);
 	}
 
-	fbcon_set_palette(vc, color_table); 	
+	fbcon_set_palette(vc, color_table);
 	fbcon_clear_margins(vc, 0);
 
 	if (logo_shown == FBCON_LOGO_DRAW) {
@@ -2343,7 +2343,7 @@ static void set_vc_hi_font(struct vc_data *vc, bool set)
 			vc->vc_complement_mask >>= 1;
 			vc->vc_s_complement_mask >>= 1;
 		}
-			
+
 		/* ++Edmund: reorder the attribute bits */
 		if (vc->vc_can_do_color) {
 			unsigned short *cp =
@@ -2366,7 +2366,7 @@ static void set_vc_hi_font(struct vc_data *vc, bool set)
 			vc->vc_complement_mask <<= 1;
 			vc->vc_s_complement_mask <<= 1;
 		}
-			
+
 		/* ++Edmund: reorder the attribute bits */
 		{
 			unsigned short *cp =
@@ -2527,7 +2527,7 @@ static int fbcon_set_font(struct vc_data *vc, struct console_font *font,
 	/* Check if the same font is on some other console already */
 	for (i = first_fb_vc; i <= last_fb_vc; i++) {
 		struct vc_data *tmp = vc_cons[i].d;
-		
+
 		if (fb_display[i].userfont &&
 		    fb_display[i].fontdata &&
 		    FNTSUM(fb_display[i].fontdata) == csum &&
@@ -3435,5 +3435,5 @@ void __exit fb_console_exit(void)
 
 	do_unregister_con_driver(&fb_con);
 	console_unlock();
-}	
+}
 #endif
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 02/18] Revert "fbcon: don't lose the console font across generic->chip driver switch"
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
  2022-12-19 16:04 ` [PATCH 01/18] fbcon: Remove trailing whitespaces Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:17   ` Javier Martinez Canillas
  2022-12-19 16:05 ` [PATCH 03/18] drm/gma500: Do not set struct fb_info.apertures Thomas Zimmermann
                   ` (15 subsequent siblings)
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

This reverts commit ae1287865f5361fa138d4d3b1b6277908b54eac9.

Always free the console font when deinitializing the framebuffer
console. Subsequent framebuffer consoles will then use the default
font. Rely on userspace to load any user-configured font for these
consoles.

Commit ae1287865f53 ("fbcon: don't lose the console font across
generic->chip driver switch") was introduced to work around losing
the font during graphics-device handover. [1][2] It kept a dangling
pointer with the font data between loading the two consoles, which is
fairly adventurous hack. It also never covered cases when the other
consoles, such as VGA text mode, where involved.

The problem has meanwhile been solved in userspace. Systemd comes
with a udev rule that re-installs the configured font when a console
comes up. [3] So the kernel workaround can be removed.

This also removes one of the two special cases triggered by setting
FBINFO_MISC_FIRMWARE in an fbdev driver.

Tested during device handover from efifb and simpledrm to radeon. Udev
reloads the configured console font for the new driver's terminal.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://bugzilla.redhat.com/show_bug.cgi?id=892340 # 1
Link: https://bugzilla.redhat.com/show_bug.cgi?id=1074624 # 2
Link: https://cgit.freedesktop.org/systemd/systemd/tree/src/vconsole/90-vconsole.rules.in?h=v222 # 3
---
 drivers/video/fbdev/core/fbcon.c | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index 500b26d652f6..90b36b3adfd0 100644
--- a/drivers/video/fbdev/core/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
@@ -958,7 +958,7 @@ static const char *fbcon_startup(void)
 	set_blitting_type(vc, info);
 
 	/* Setup default font */
-	if (!p->fontdata && !vc->vc_font.data) {
+	if (!p->fontdata) {
 		if (!fontname[0] || !(font = find_font(fontname)))
 			font = get_default_font(info->var.xres,
 						info->var.yres,
@@ -968,8 +968,6 @@ static const char *fbcon_startup(void)
 		vc->vc_font.height = font->height;
 		vc->vc_font.data = (void *)(p->fontdata = font->data);
 		vc->vc_font.charcount = font->charcount;
-	} else {
-		p->fontdata = vc->vc_font.data;
 	}
 
 	cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
@@ -1135,9 +1133,9 @@ static void fbcon_init(struct vc_data *vc, int init)
 	ops->p = &fb_display[fg_console];
 }
 
-static void fbcon_free_font(struct fbcon_display *p, bool freefont)
+static void fbcon_free_font(struct fbcon_display *p)
 {
-	if (freefont && p->userfont && p->fontdata && (--REFCOUNT(p->fontdata) == 0))
+	if (p->userfont && p->fontdata && (--REFCOUNT(p->fontdata) == 0))
 		kfree(p->fontdata - FONT_EXTRA_WORDS * sizeof(int));
 	p->fontdata = NULL;
 	p->userfont = 0;
@@ -1172,8 +1170,8 @@ static void fbcon_deinit(struct vc_data *vc)
 	struct fb_info *info;
 	struct fbcon_ops *ops;
 	int idx;
-	bool free_font = true;
 
+	fbcon_free_font(p);
 	idx = con2fb_map[vc->vc_num];
 
 	if (idx == -1)
@@ -1184,8 +1182,6 @@ static void fbcon_deinit(struct vc_data *vc)
 	if (!info)
 		goto finished;
 
-	if (info->flags & FBINFO_MISC_FIRMWARE)
-		free_font = false;
 	ops = info->fbcon_par;
 
 	if (!ops)
@@ -1197,9 +1193,8 @@ static void fbcon_deinit(struct vc_data *vc)
 	ops->initialized = false;
 finished:
 
-	fbcon_free_font(p, free_font);
-	if (free_font)
-		vc->vc_font.data = NULL;
+	fbcon_free_font(p);
+	vc->vc_font.data = NULL;
 
 	if (vc->vc_hi_font_mask && vc->vc_screenbuf)
 		set_vc_hi_font(vc, false);
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 03/18] drm/gma500: Do not set struct fb_info.apertures
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
  2022-12-19 16:04 ` [PATCH 01/18] fbcon: Remove trailing whitespaces Thomas Zimmermann
  2022-12-19 16:05 ` [PATCH 02/18] Revert "fbcon: don't lose the console font across generic->chip driver switch" Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:18   ` Javier Martinez Canillas
  2022-12-19 16:05 ` [PATCH 04/18] drm/i915: " Thomas Zimmermann
                   ` (14 subsequent siblings)
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

Generic fbdev drivers use the apertures field in struct fb_info to
control ownership of the framebuffer memory and graphics device. Do
not set the values in gma500.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/gma500/framebuffer.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
index 8d5a37b8f110..9e892a82e109 100644
--- a/drivers/gpu/drm/gma500/framebuffer.c
+++ b/drivers/gpu/drm/gma500/framebuffer.c
@@ -297,11 +297,6 @@ static int psbfb_create(struct drm_fb_helper *fb_helper,
 	info->screen_base = dev_priv->vram_addr + backing->offset;
 	info->screen_size = size;
 
-	if (dev_priv->gtt.stolen_size) {
-		info->apertures->ranges[0].base = dev_priv->fb_base;
-		info->apertures->ranges[0].size = dev_priv->gtt.stolen_size;
-	}
-
 	drm_fb_helper_fill_info(info, fb_helper, sizes);
 
 	info->fix.mmio_start = pci_resource_start(pdev, 0);
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 04/18] drm/i915: Do not set struct fb_info.apertures
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
                   ` (2 preceding siblings ...)
  2022-12-19 16:05 ` [PATCH 03/18] drm/gma500: Do not set struct fb_info.apertures Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:19   ` Javier Martinez Canillas
  2022-12-19 16:05 ` [PATCH 05/18] drm/radeon: " Thomas Zimmermann
                   ` (13 subsequent siblings)
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

Generic fbdev drivers use the apertures field in struct fb_info to
control ownership of the framebuffer memory and graphics device. Do
not set the values in i915.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/i915/display/intel_fbdev.c | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c
index 03ed4607a46d..bbdb98d7c96e 100644
--- a/drivers/gpu/drm/i915/display/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
@@ -267,23 +267,16 @@ static int intelfb_create(struct drm_fb_helper *helper,
 
 	info->fbops = &intelfb_ops;
 
-	/* setup aperture base/size for vesafb takeover */
 	obj = intel_fb_obj(&intel_fb->base);
 	if (i915_gem_object_is_lmem(obj)) {
 		struct intel_memory_region *mem = obj->mm.region;
 
-		info->apertures->ranges[0].base = mem->io_start;
-		info->apertures->ranges[0].size = mem->io_size;
-
 		/* Use fbdev's framebuffer from lmem for discrete */
 		info->fix.smem_start =
 			(unsigned long)(mem->io_start +
 					i915_gem_object_get_dma_address(obj, 0));
 		info->fix.smem_len = obj->base.size;
 	} else {
-		info->apertures->ranges[0].base = ggtt->gmadr.start;
-		info->apertures->ranges[0].size = ggtt->mappable_end;
-
 		/* Our framebuffer is the entirety of fbdev's system memory */
 		info->fix.smem_start =
 			(unsigned long)(ggtt->gmadr.start + i915_ggtt_offset(vma));
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 05/18] drm/radeon: Do not set struct fb_info.apertures
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
                   ` (3 preceding siblings ...)
  2022-12-19 16:05 ` [PATCH 04/18] drm/i915: " Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:19   ` Javier Martinez Canillas
  2022-12-19 16:05 ` [PATCH 06/18] drm/fb-helper: Do not allocate unused apertures structure Thomas Zimmermann
                   ` (12 subsequent siblings)
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

Generic fbdev drivers use the apertures field in struct fb_info to
control ownership of the framebuffer memory and graphics device. Do
not set the values in radeon.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/radeon/radeon_fb.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c
index c1710ed1cab8..fe4087bfdb3c 100644
--- a/drivers/gpu/drm/radeon/radeon_fb.c
+++ b/drivers/gpu/drm/radeon/radeon_fb.c
@@ -277,10 +277,6 @@ static int radeonfb_create(struct drm_fb_helper *helper,
 
 	drm_fb_helper_fill_info(info, &rfbdev->helper, sizes);
 
-	/* setup aperture base/size for vesafb takeover */
-	info->apertures->ranges[0].base = rdev->mc.aper_base;
-	info->apertures->ranges[0].size = rdev->mc.aper_size;
-
 	/* Use default scratch pixmap (info->pixmap.flags = FB_PIXMAP_SYSTEM) */
 
 	if (info->screen_base == NULL) {
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 06/18] drm/fb-helper: Do not allocate unused apertures structure
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
                   ` (4 preceding siblings ...)
  2022-12-19 16:05 ` [PATCH 05/18] drm/radeon: " Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:22   ` Javier Martinez Canillas
  2022-12-19 16:05 ` [PATCH 07/18] fbdev/clps711x-fb: Do not set struct fb_info.apertures Thomas Zimmermann
                   ` (11 subsequent siblings)
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

The apertures field in struct fb_info is not used by DRM drivers. Do
not allocate it.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/drm_fb_helper.c | 20 ++------------------
 1 file changed, 2 insertions(+), 18 deletions(-)

diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
index b3a731b9170a..e8a7e8be91d9 100644
--- a/drivers/gpu/drm/drm_fb_helper.c
+++ b/drivers/gpu/drm/drm_fb_helper.c
@@ -473,8 +473,8 @@ EXPORT_SYMBOL(drm_fb_helper_init);
  * drm_fb_helper_alloc_info - allocate fb_info and some of its members
  * @fb_helper: driver-allocated fbdev helper
  *
- * A helper to alloc fb_info and the members cmap and apertures. Called
- * by the driver within the fb_probe fb_helper callback function. Drivers do not
+ * A helper to alloc fb_info and the member cmap. Called by the driver
+ * within the fb_probe fb_helper callback function. Drivers do not
  * need to release the allocated fb_info structure themselves, this is
  * automatically done when calling drm_fb_helper_fini().
  *
@@ -496,27 +496,11 @@ struct fb_info *drm_fb_helper_alloc_info(struct drm_fb_helper *fb_helper)
 	if (ret)
 		goto err_release;
 
-	/*
-	 * TODO: We really should be smarter here and alloc an aperture
-	 * for each IORESOURCE_MEM resource helper->dev->dev has and also
-	 * init the ranges of the appertures based on the resources.
-	 * Note some drivers currently count on there being only 1 empty
-	 * aperture and fill this themselves, these will need to be dealt
-	 * with somehow when fixing this.
-	 */
-	info->apertures = alloc_apertures(1);
-	if (!info->apertures) {
-		ret = -ENOMEM;
-		goto err_free_cmap;
-	}
-
 	fb_helper->info = info;
 	info->skip_vt_switch = true;
 
 	return info;
 
-err_free_cmap:
-	fb_dealloc_cmap(&info->cmap);
 err_release:
 	framebuffer_release(info);
 	return ERR_PTR(ret);
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 07/18] fbdev/clps711x-fb: Do not set struct fb_info.apertures
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
                   ` (5 preceding siblings ...)
  2022-12-19 16:05 ` [PATCH 06/18] drm/fb-helper: Do not allocate unused apertures structure Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:24   ` Javier Martinez Canillas
  2022-12-19 16:05 ` [PATCH 08/18] fbdev/hyperv-fb: " Thomas Zimmermann
                   ` (10 subsequent siblings)
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

Generic fbdev drivers use the apertures field in struct fb_info to
control ownership of the framebuffer memory and graphics device. Do
not set the values in clps711x-fb.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/video/fbdev/clps711x-fb.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/video/fbdev/clps711x-fb.c b/drivers/video/fbdev/clps711x-fb.c
index a1061c2f1640..45c75ff01eca 100644
--- a/drivers/video/fbdev/clps711x-fb.c
+++ b/drivers/video/fbdev/clps711x-fb.c
@@ -251,16 +251,8 @@ static int clps711x_fb_probe(struct platform_device *pdev)
 		goto out_fb_release;
 	}
 
-	info->apertures = alloc_apertures(1);
-	if (!info->apertures) {
-		ret = -ENOMEM;
-		goto out_fb_release;
-	}
-
 	cfb->buffsize = resource_size(res);
 	info->fix.smem_start = res->start;
-	info->apertures->ranges[0].base = info->fix.smem_start;
-	info->apertures->ranges[0].size = cfb->buffsize;
 
 	cfb->clk = devm_clk_get(dev, NULL);
 	if (IS_ERR(cfb->clk)) {
@@ -345,7 +337,7 @@ static int clps711x_fb_probe(struct platform_device *pdev)
 				       &clps711x_lcd_ops);
 	if (!IS_ERR(lcd))
 		return 0;
-	
+
 	ret = PTR_ERR(lcd);
 	unregister_framebuffer(info);
 
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 08/18] fbdev/hyperv-fb: Do not set struct fb_info.apertures
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
                   ` (6 preceding siblings ...)
  2022-12-19 16:05 ` [PATCH 07/18] fbdev/clps711x-fb: Do not set struct fb_info.apertures Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:24   ` Javier Martinez Canillas
  2022-12-29 15:57   ` Michael Kelley (LINUX)
  2022-12-19 16:05 ` [PATCH 09/18] vfio-mdev/mdpy-fb: " Thomas Zimmermann
                   ` (9 subsequent siblings)
  17 siblings, 2 replies; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

Generic fbdev drivers use the apertures field in struct fb_info to
control ownership of the framebuffer memory and graphics device. Do
not set the values in hyperv-fb.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/video/fbdev/hyperv_fb.c | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/drivers/video/fbdev/hyperv_fb.c b/drivers/video/fbdev/hyperv_fb.c
index d8edb5635f77..1c7d6ff5a6c0 100644
--- a/drivers/video/fbdev/hyperv_fb.c
+++ b/drivers/video/fbdev/hyperv_fb.c
@@ -988,13 +988,10 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info)
 	struct pci_dev *pdev  = NULL;
 	void __iomem *fb_virt;
 	int gen2vm = efi_enabled(EFI_BOOT);
+	resource_size_t base, size;
 	phys_addr_t paddr;
 	int ret;
 
-	info->apertures = alloc_apertures(1);
-	if (!info->apertures)
-		return -ENOMEM;
-
 	if (!gen2vm) {
 		pdev = pci_get_device(PCI_VENDOR_ID_MICROSOFT,
 			PCI_DEVICE_ID_HYPERV_VIDEO, NULL);
@@ -1003,8 +1000,8 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info)
 			return -ENODEV;
 		}
 
-		info->apertures->ranges[0].base = pci_resource_start(pdev, 0);
-		info->apertures->ranges[0].size = pci_resource_len(pdev, 0);
+		base = pci_resource_start(pdev, 0);
+		size = pci_resource_len(pdev, 0);
 
 		/*
 		 * For Gen 1 VM, we can directly use the contiguous memory
@@ -1027,8 +1024,8 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info)
 		}
 		pr_info("Unable to allocate enough contiguous physical memory on Gen 1 VM. Using MMIO instead.\n");
 	} else {
-		info->apertures->ranges[0].base = screen_info.lfb_base;
-		info->apertures->ranges[0].size = screen_info.lfb_size;
+		base = screen_info.lfb_base;
+		size = screen_info.lfb_size;
 	}
 
 	/*
@@ -1070,9 +1067,7 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info)
 	info->screen_size = dio_fb_size;
 
 getmem_done:
-	aperture_remove_conflicting_devices(info->apertures->ranges[0].base,
-					    info->apertures->ranges[0].size,
-					    false, KBUILD_MODNAME);
+	aperture_remove_conflicting_devices(base, size, false, KBUILD_MODNAME);
 
 	if (gen2vm) {
 		/* framebuffer is reallocated, clear screen_info to avoid misuse from kexec */
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 09/18] vfio-mdev/mdpy-fb: Do not set struct fb_info.apertures
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
                   ` (7 preceding siblings ...)
  2022-12-19 16:05 ` [PATCH 08/18] fbdev/hyperv-fb: " Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:32   ` Javier Martinez Canillas
  2022-12-19 16:05 ` [PATCH 10/18] fbdev/efifb: Add struct efifb_par for driver data Thomas Zimmermann
                   ` (8 subsequent siblings)
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

Generic fbdev drivers use the apertures field in struct fb_info to
control ownership of the framebuffer memory and graphics device. Do
not set the values in mdpy-fb.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 samples/vfio-mdev/mdpy-fb.c | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/samples/vfio-mdev/mdpy-fb.c b/samples/vfio-mdev/mdpy-fb.c
index 9ec93d90e8a5..1de5801cd2e8 100644
--- a/samples/vfio-mdev/mdpy-fb.c
+++ b/samples/vfio-mdev/mdpy-fb.c
@@ -161,14 +161,6 @@ static int mdpy_fb_probe(struct pci_dev *pdev,
 		goto err_release_fb;
 	}
 
-	info->apertures = alloc_apertures(1);
-	if (!info->apertures) {
-		ret = -ENOMEM;
-		goto err_unmap;
-	}
-	info->apertures->ranges[0].base = info->fix.smem_start;
-	info->apertures->ranges[0].size = info->fix.smem_len;
-
 	info->fbops = &mdpy_fb_ops;
 	info->flags = FBINFO_DEFAULT;
 	info->pseudo_palette = par->palette;
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 10/18] fbdev/efifb: Add struct efifb_par for driver data
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
                   ` (8 preceding siblings ...)
  2022-12-19 16:05 ` [PATCH 09/18] vfio-mdev/mdpy-fb: " Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:33   ` Javier Martinez Canillas
  2022-12-19 16:05 ` [PATCH 11/18] fbdev/efifb: Do not use struct fb_info.apertures Thomas Zimmermann
                   ` (7 subsequent siblings)
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

The efifb_par structure holds the palette for efifb. It will also
be useful for storing the device's aperture range.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/video/fbdev/efifb.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c
index 16c1aaae9afa..694013f62781 100644
--- a/drivers/video/fbdev/efifb.c
+++ b/drivers/video/fbdev/efifb.c
@@ -49,6 +49,10 @@ static u64 mem_flags = EFI_MEMORY_WC | EFI_MEMORY_UC;
 
 static struct pci_dev *efifb_pci_dev;	/* dev with BAR covering the efifb */
 
+struct efifb_par {
+	u32 pseudo_palette[16];
+};
+
 static struct fb_var_screeninfo efifb_defined = {
 	.activate		= FB_ACTIVATE_NOW,
 	.height			= -1,
@@ -351,6 +355,7 @@ static u64 bar_offset;
 static int efifb_probe(struct platform_device *dev)
 {
 	struct fb_info *info;
+	struct efifb_par *par;
 	int err, orientation;
 	unsigned int size_vmode;
 	unsigned int size_remap;
@@ -447,14 +452,14 @@ static int efifb_probe(struct platform_device *dev)
 			efifb_fix.smem_start);
 	}
 
-	info = framebuffer_alloc(sizeof(u32) * 16, &dev->dev);
+	info = framebuffer_alloc(sizeof(*par), &dev->dev);
 	if (!info) {
 		err = -ENOMEM;
 		goto err_release_mem;
 	}
 	platform_set_drvdata(dev, info);
-	info->pseudo_palette = info->par;
-	info->par = NULL;
+	par = info->par;
+	info->pseudo_palette = par->pseudo_palette;
 
 	info->apertures = alloc_apertures(1);
 	if (!info->apertures) {
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 11/18] fbdev/efifb: Do not use struct fb_info.apertures
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
                   ` (9 preceding siblings ...)
  2022-12-19 16:05 ` [PATCH 10/18] fbdev/efifb: Add struct efifb_par for driver data Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:35   ` Javier Martinez Canillas
  2022-12-19 16:05 ` [PATCH 12/18] fbdev/offb: Allocate struct offb_par with framebuffer_alloc() Thomas Zimmermann
                   ` (6 subsequent siblings)
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

Acquire ownership of the firmware scanout buffer by calling Linux'
aperture helpers. Remove the use of struct fb_info.apertures and do
not set FBINFO_MISC_FIRMWARE; both of which previously configured
buffer ownership.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/video/fbdev/efifb.c | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c
index 694013f62781..a5779fb453a2 100644
--- a/drivers/video/fbdev/efifb.c
+++ b/drivers/video/fbdev/efifb.c
@@ -7,6 +7,7 @@
  *
  */
 
+#include <linux/aperture.h>
 #include <linux/kernel.h>
 #include <linux/efi.h>
 #include <linux/efi-bgrt.h>
@@ -51,6 +52,8 @@ static struct pci_dev *efifb_pci_dev;	/* dev with BAR covering the efifb */
 
 struct efifb_par {
 	u32 pseudo_palette[16];
+	resource_size_t base;
+	resource_size_t size;
 };
 
 static struct fb_var_screeninfo efifb_defined = {
@@ -253,6 +256,8 @@ static inline void efifb_show_boot_graphics(struct fb_info *info) {}
  */
 static void efifb_destroy(struct fb_info *info)
 {
+	struct efifb_par *par = info->par;
+
 	if (efifb_pci_dev)
 		pm_runtime_put(&efifb_pci_dev->dev);
 
@@ -264,8 +269,7 @@ static void efifb_destroy(struct fb_info *info)
 	}
 
 	if (request_mem_succeeded)
-		release_mem_region(info->apertures->ranges[0].base,
-				   info->apertures->ranges[0].size);
+		release_mem_region(par->base, par->size);
 	fb_dealloc_cmap(&info->cmap);
 
 	framebuffer_release(info);
@@ -461,13 +465,8 @@ static int efifb_probe(struct platform_device *dev)
 	par = info->par;
 	info->pseudo_palette = par->pseudo_palette;
 
-	info->apertures = alloc_apertures(1);
-	if (!info->apertures) {
-		err = -ENOMEM;
-		goto err_release_fb;
-	}
-	info->apertures->ranges[0].base = efifb_fix.smem_start;
-	info->apertures->ranges[0].size = size_remap;
+	par->base = efifb_fix.smem_start;
+	par->size = size_remap;
 
 	if (efi_enabled(EFI_MEMMAP) &&
 	    !efi_mem_desc_lookup(efifb_fix.smem_start, &md)) {
@@ -556,7 +555,7 @@ static int efifb_probe(struct platform_device *dev)
 	info->fbops = &efifb_ops;
 	info->var = efifb_defined;
 	info->fix = efifb_fix;
-	info->flags = FBINFO_FLAG_DEFAULT | FBINFO_MISC_FIRMWARE;
+	info->flags = FBINFO_FLAG_DEFAULT;
 
 	orientation = drm_get_panel_orientation_quirk(efifb_defined.xres,
 						      efifb_defined.yres);
@@ -589,6 +588,11 @@ static int efifb_probe(struct platform_device *dev)
 	if (efifb_pci_dev)
 		WARN_ON(pm_runtime_get_sync(&efifb_pci_dev->dev) < 0);
 
+	err = devm_aperture_acquire_for_platform_device(dev, par->base, par->size);
+	if (err) {
+		pr_err("efifb: cannot acquire aperture\n");
+		goto err_put_rpm_ref;
+	}
 	err = register_framebuffer(info);
 	if (err < 0) {
 		pr_err("efifb: cannot register framebuffer\n");
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 12/18] fbdev/offb: Allocate struct offb_par with framebuffer_alloc()
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
                   ` (10 preceding siblings ...)
  2022-12-19 16:05 ` [PATCH 11/18] fbdev/efifb: Do not use struct fb_info.apertures Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:37   ` Javier Martinez Canillas
  2022-12-19 16:05 ` [PATCH 13/18] fbdev/offb: Do not use struct fb_info.apertures Thomas Zimmermann
                   ` (5 subsequent siblings)
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

Move the palette array into struct offb_par and allocate both via
framebuffer_alloc(), as intended by fbdev. No functional changes.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/video/fbdev/offb.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/drivers/video/fbdev/offb.c b/drivers/video/fbdev/offb.c
index 91001990e351..a298adcee2d9 100644
--- a/drivers/video/fbdev/offb.c
+++ b/drivers/video/fbdev/offb.c
@@ -53,10 +53,9 @@ struct offb_par {
 	volatile void __iomem *cmap_data;
 	int cmap_type;
 	int blanked;
+	u32 pseudo_palette[16];
 };
 
-struct offb_par default_par;
-
 #ifdef CONFIG_PPC32
 extern boot_infos_t *boot_infos;
 #endif
@@ -393,11 +392,11 @@ static void offb_init_fb(struct platform_device *parent, const char *name,
 			 int foreign_endian, struct device_node *dp)
 {
 	unsigned long res_size = pitch * height;
-	struct offb_par *par = &default_par;
 	unsigned long res_start = address;
 	struct fb_fix_screeninfo *fix;
 	struct fb_var_screeninfo *var;
 	struct fb_info *info;
+	struct offb_par *par;
 
 	if (!request_mem_region(res_start, res_size, "offb"))
 		return;
@@ -411,17 +410,15 @@ static void offb_init_fb(struct platform_device *parent, const char *name,
 		return;
 	}
 
-	info = framebuffer_alloc(sizeof(u32) * 16, &parent->dev);
-
+	info = framebuffer_alloc(sizeof(*par), &parent->dev);
 	if (!info) {
 		release_mem_region(res_start, res_size);
 		return;
 	}
 	platform_set_drvdata(parent, info);
-
+	par = info->par;
 	fix = &info->fix;
 	var = &info->var;
-	info->par = par;
 
 	if (name) {
 		strcpy(fix->id, "OFfb ");
@@ -515,7 +512,7 @@ static void offb_init_fb(struct platform_device *parent, const char *name,
 
 	info->fbops = &offb_ops;
 	info->screen_base = ioremap(address, fix->smem_len);
-	info->pseudo_palette = (void *) (info + 1);
+	info->pseudo_palette = par->pseudo_palette;
 	info->flags = FBINFO_DEFAULT | FBINFO_MISC_FIRMWARE | foreign_endian;
 
 	fb_alloc_cmap(&info->cmap, 256, 0);
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 13/18] fbdev/offb: Do not use struct fb_info.apertures
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
                   ` (11 preceding siblings ...)
  2022-12-19 16:05 ` [PATCH 12/18] fbdev/offb: Allocate struct offb_par with framebuffer_alloc() Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:38   ` Javier Martinez Canillas
  2022-12-19 16:05 ` [PATCH 14/18] fbdev/simplefb: " Thomas Zimmermann
                   ` (4 subsequent siblings)
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

Acquire ownership of the firmware scanout buffer by calling Linux'
aperture helpers. Remove the use of struct fb_info.apertures and do
not set FBINFO_MISC_FIRMWARE; both of which previously configured
buffer ownership.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/video/fbdev/offb.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/video/fbdev/offb.c b/drivers/video/fbdev/offb.c
index a298adcee2d9..f7ad6bc9d02d 100644
--- a/drivers/video/fbdev/offb.c
+++ b/drivers/video/fbdev/offb.c
@@ -12,6 +12,7 @@
  *  more details.
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
@@ -54,6 +55,8 @@ struct offb_par {
 	int cmap_type;
 	int blanked;
 	u32 pseudo_palette[16];
+	resource_size_t base;
+	resource_size_t size;
 };
 
 #ifdef CONFIG_PPC32
@@ -279,9 +282,11 @@ static int offb_set_par(struct fb_info *info)
 
 static void offb_destroy(struct fb_info *info)
 {
+	struct offb_par *par = info->par;
+
 	if (info->screen_base)
 		iounmap(info->screen_base);
-	release_mem_region(info->apertures->ranges[0].base, info->apertures->ranges[0].size);
+	release_mem_region(par->base, par->size);
 	fb_dealloc_cmap(&info->cmap);
 	framebuffer_release(info);
 }
@@ -503,20 +508,18 @@ static void offb_init_fb(struct platform_device *parent, const char *name,
 	var->sync = 0;
 	var->vmode = FB_VMODE_NONINTERLACED;
 
-	/* set offb aperture size for generic probing */
-	info->apertures = alloc_apertures(1);
-	if (!info->apertures)
-		goto out_aper;
-	info->apertures->ranges[0].base = address;
-	info->apertures->ranges[0].size = fix->smem_len;
+	par->base = address;
+	par->size = fix->smem_len;
 
 	info->fbops = &offb_ops;
 	info->screen_base = ioremap(address, fix->smem_len);
 	info->pseudo_palette = par->pseudo_palette;
-	info->flags = FBINFO_DEFAULT | FBINFO_MISC_FIRMWARE | foreign_endian;
+	info->flags = FBINFO_DEFAULT | foreign_endian;
 
 	fb_alloc_cmap(&info->cmap, 256, 0);
 
+	if (devm_aperture_acquire_for_platform_device(parent, par->base, par->size) < 0)
+		goto out_err;
 	if (register_framebuffer(info) < 0)
 		goto out_err;
 
@@ -526,7 +529,6 @@ static void offb_init_fb(struct platform_device *parent, const char *name,
 out_err:
 	fb_dealloc_cmap(&info->cmap);
 	iounmap(info->screen_base);
-out_aper:
 	iounmap(par->cmap_adr);
 	par->cmap_adr = NULL;
 	framebuffer_release(info);
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 14/18] fbdev/simplefb: Do not use struct fb_info.apertures
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
                   ` (12 preceding siblings ...)
  2022-12-19 16:05 ` [PATCH 13/18] fbdev/offb: Do not use struct fb_info.apertures Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:40   ` Javier Martinez Canillas
  2022-12-19 16:05 ` [PATCH 15/18] fbdev/vesafb: Remove trailing whitespaces Thomas Zimmermann
                   ` (3 subsequent siblings)
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

Acquire ownership of the firmware scanout buffer by calling Linux'
aperture helpers. Remove the use of struct fb_info.apertures and do
not set FBINFO_MISC_FIRMWARE; both of which previously configured
buffer ownership.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/video/fbdev/simplefb.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c
index e770b4a356b5..10d71879d340 100644
--- a/drivers/video/fbdev/simplefb.c
+++ b/drivers/video/fbdev/simplefb.c
@@ -12,6 +12,7 @@
  * Copyright (C) 1996 Paul Mackerras
  */
 
+#include <linux/aperture.h>
 #include <linux/errno.h>
 #include <linux/fb.h>
 #include <linux/io.h>
@@ -68,6 +69,8 @@ static int simplefb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
 
 struct simplefb_par {
 	u32 palette[PSEUDO_PALETTE_SIZE];
+	resource_size_t base;
+	resource_size_t size;
 	struct resource *mem;
 #if defined CONFIG_OF && defined CONFIG_COMMON_CLK
 	bool clks_enabled;
@@ -472,16 +475,11 @@ static int simplefb_probe(struct platform_device *pdev)
 	info->var.blue = params.format->blue;
 	info->var.transp = params.format->transp;
 
-	info->apertures = alloc_apertures(1);
-	if (!info->apertures) {
-		ret = -ENOMEM;
-		goto error_fb_release;
-	}
-	info->apertures->ranges[0].base = info->fix.smem_start;
-	info->apertures->ranges[0].size = info->fix.smem_len;
+	par->base = info->fix.smem_start;
+	par->size = info->fix.smem_len;
 
 	info->fbops = &simplefb_ops;
-	info->flags = FBINFO_DEFAULT | FBINFO_MISC_FIRMWARE;
+	info->flags = FBINFO_DEFAULT;
 	info->screen_base = ioremap_wc(info->fix.smem_start,
 				       info->fix.smem_len);
 	if (!info->screen_base) {
@@ -511,6 +509,11 @@ static int simplefb_probe(struct platform_device *pdev)
 	if (mem != res)
 		par->mem = mem; /* release in clean-up handler */
 
+	ret = devm_aperture_acquire_for_platform_device(pdev, par->base, par->size);
+	if (ret) {
+		dev_err(&pdev->dev, "Unable to acquire aperture: %d\n", ret);
+		goto error_regulators;
+	}
 	ret = register_framebuffer(info);
 	if (ret < 0) {
 		dev_err(&pdev->dev, "Unable to register simplefb: %d\n", ret);
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 15/18] fbdev/vesafb: Remove trailing whitespaces
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
                   ` (13 preceding siblings ...)
  2022-12-19 16:05 ` [PATCH 14/18] fbdev/simplefb: " Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:40   ` Javier Martinez Canillas
  2022-12-19 16:05 ` [PATCH 16/18] fbdev/vesafb: Do not use struct fb_info.apertures Thomas Zimmermann
                   ` (2 subsequent siblings)
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

Fix coding style. No functional changes.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/video/fbdev/vesafb.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/video/fbdev/vesafb.c b/drivers/video/fbdev/vesafb.c
index 929d4775cb4b..47ce244e4bb8 100644
--- a/drivers/video/fbdev/vesafb.c
+++ b/drivers/video/fbdev/vesafb.c
@@ -140,7 +140,7 @@ static int vesafb_setcolreg(unsigned regno, unsigned red, unsigned green,
 	 *  (according to the entries in the `var' structure). Return
 	 *  != 0 for invalid regno.
 	 */
-	
+
 	if (regno >= info->cmap.len)
 		return 1;
 
@@ -209,13 +209,13 @@ static struct fb_ops vesafb_ops = {
 static int vesafb_setup(char *options)
 {
 	char *this_opt;
-	
+
 	if (!options || !*options)
 		return 0;
-	
+
 	while ((this_opt = strsep(&options, ",")) != NULL) {
 		if (!*this_opt) continue;
-		
+
 		if (! strcmp(this_opt, "inverse"))
 			inverse=1;
 		else if (! strcmp(this_opt, "redraw"))
@@ -381,7 +381,7 @@ static int vesafb_probe(struct platform_device *dev)
 	vesafb_defined.pixclock     = 10000000 / vesafb_defined.xres * 1000 / vesafb_defined.yres;
 	vesafb_defined.left_margin  = (vesafb_defined.xres / 8) & 0xf8;
 	vesafb_defined.hsync_len    = (vesafb_defined.xres / 8) & 0xf8;
-	
+
 	vesafb_defined.red.offset    = screen_info.red_pos;
 	vesafb_defined.red.length    = screen_info.red_size;
 	vesafb_defined.green.offset  = screen_info.green_pos;
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 16/18] fbdev/vesafb: Do not use struct fb_info.apertures
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
                   ` (14 preceding siblings ...)
  2022-12-19 16:05 ` [PATCH 15/18] fbdev/vesafb: Remove trailing whitespaces Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:43   ` Javier Martinez Canillas
  2022-12-19 16:05 ` [PATCH 17/18] fbdev/vga16fb: " Thomas Zimmermann
  2022-12-19 16:05 ` [PATCH 18/18] drm/fbdev: Remove aperture handling and FBINFO_MISC_FIRMWARE Thomas Zimmermann
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

Acquire ownership of the firmware scanout buffer by calling Linux'
aperture helpers. Remove the use of struct fb_info.apertures and do
not set FBINFO_MISC_FIRMWARE; both of which previously configured
buffer ownership.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/video/fbdev/vesafb.c | 27 +++++++++++++--------------
 1 file changed, 13 insertions(+), 14 deletions(-)

diff --git a/drivers/video/fbdev/vesafb.c b/drivers/video/fbdev/vesafb.c
index 47ce244e4bb8..3f8bdfcf51f0 100644
--- a/drivers/video/fbdev/vesafb.c
+++ b/drivers/video/fbdev/vesafb.c
@@ -9,6 +9,7 @@
  *
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
@@ -31,6 +32,8 @@
 
 struct vesafb_par {
 	u32 pseudo_palette[256];
+	resource_size_t base;
+	resource_size_t size;
 	int wc_cookie;
 	struct resource *region;
 };
@@ -191,7 +194,7 @@ static void vesafb_destroy(struct fb_info *info)
 	arch_phys_wc_del(par->wc_cookie);
 	if (info->screen_base)
 		iounmap(info->screen_base);
-	release_mem_region(info->apertures->ranges[0].base, info->apertures->ranges[0].size);
+	release_mem_region(par->base, par->size);
 
 	framebuffer_release(info);
 }
@@ -316,14 +319,8 @@ static int vesafb_probe(struct platform_device *dev)
 	par = info->par;
 	info->pseudo_palette = par->pseudo_palette;
 
-	/* set vesafb aperture size for generic probing */
-	info->apertures = alloc_apertures(1);
-	if (!info->apertures) {
-		err = -ENOMEM;
-		goto err;
-	}
-	info->apertures->ranges[0].base = screen_info.lfb_base;
-	info->apertures->ranges[0].size = size_total;
+	par->base = screen_info.lfb_base;
+	par->size = size_total;
 
 	printk(KERN_INFO "vesafb: mode is %dx%dx%d, linelength=%d, pages=%d\n",
 	       vesafb_defined.xres, vesafb_defined.yres, vesafb_defined.bits_per_pixel, vesafb_fix.line_length, screen_info.pages);
@@ -460,27 +457,29 @@ static int vesafb_probe(struct platform_device *dev)
 	info->fbops = &vesafb_ops;
 	info->var = vesafb_defined;
 	info->fix = vesafb_fix;
-	info->flags = FBINFO_FLAG_DEFAULT | FBINFO_MISC_FIRMWARE |
-		(ypan ? FBINFO_HWACCEL_YPAN : 0);
+	info->flags = FBINFO_FLAG_DEFAULT | (ypan ? FBINFO_HWACCEL_YPAN : 0);
 
 	if (fb_alloc_cmap(&info->cmap, 256, 0) < 0) {
 		err = -ENOMEM;
 		goto err_release_region;
 	}
+	err = devm_aperture_acquire_for_platform_device(dev, par->base, par->size);
+	if (err)
+		goto err_fb_dealloc_cmap;
 	if (register_framebuffer(info)<0) {
 		err = -EINVAL;
-		fb_dealloc_cmap(&info->cmap);
-		goto err_release_region;
+		goto err_fb_dealloc_cmap;
 	}
 	fb_info(info, "%s frame buffer device\n", info->fix.id);
 	return 0;
+err_fb_dealloc_cmap:
+	fb_dealloc_cmap(&info->cmap);
 err_release_region:
 	arch_phys_wc_del(par->wc_cookie);
 	if (info->screen_base)
 		iounmap(info->screen_base);
 	if (par->region)
 		release_region(0x3c0, 32);
-err:
 	framebuffer_release(info);
 	release_mem_region(vesafb_fix.smem_start, size_total);
 	return err;
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 17/18] fbdev/vga16fb: Do not use struct fb_info.apertures
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
                   ` (15 preceding siblings ...)
  2022-12-19 16:05 ` [PATCH 16/18] fbdev/vesafb: Do not use struct fb_info.apertures Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:44   ` Javier Martinez Canillas
  2022-12-19 16:05 ` [PATCH 18/18] drm/fbdev: Remove aperture handling and FBINFO_MISC_FIRMWARE Thomas Zimmermann
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

Acquire ownership of the firmware scanout buffer by calling Linux'
aperture helpers. Remove the use of struct fb_info.apertures and do
not set FBINFO_MISC_FIRMWARE; both of which previously configured
buffer ownership.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/video/fbdev/vga16fb.c | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/drivers/video/fbdev/vga16fb.c b/drivers/video/fbdev/vga16fb.c
index af47f8217095..1a8ffdb2be26 100644
--- a/drivers/video/fbdev/vga16fb.c
+++ b/drivers/video/fbdev/vga16fb.c
@@ -10,6 +10,7 @@
  * archive for more details.
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
@@ -1324,11 +1325,6 @@ static int vga16fb_probe(struct platform_device *dev)
 		ret = -ENOMEM;
 		goto err_fb_alloc;
 	}
-	info->apertures = alloc_apertures(1);
-	if (!info->apertures) {
-		ret = -ENOMEM;
-		goto err_ioremap;
-	}
 
 	/* XXX share VGA_FB_PHYS_BASE and I/O region with vgacon and others */
 	info->screen_base = (void __iomem *)VGA_MAP_MEM(VGA_FB_PHYS_BASE, 0);
@@ -1363,8 +1359,7 @@ static int vga16fb_probe(struct platform_device *dev)
 	info->fix = vga16fb_fix;
 	/* supports rectangles with widths of multiples of 8 */
 	info->pixmap.blit_x = 1 << 7 | 1 << 15 | 1 << 23 | 1 << 31;
-	info->flags = FBINFO_FLAG_DEFAULT | FBINFO_MISC_FIRMWARE |
-		FBINFO_HWACCEL_YPAN;
+	info->flags = FBINFO_FLAG_DEFAULT | FBINFO_HWACCEL_YPAN;
 
 	i = (info->var.bits_per_pixel == 8) ? 256 : 16;
 	ret = fb_alloc_cmap(&info->cmap, i, 0);
@@ -1382,9 +1377,9 @@ static int vga16fb_probe(struct platform_device *dev)
 
 	vga16fb_update_fix(info);
 
-	info->apertures->ranges[0].base = VGA_FB_PHYS_BASE;
-	info->apertures->ranges[0].size = VGA_FB_PHYS_SIZE;
-
+	ret = devm_aperture_acquire_for_platform_device(dev, VGA_FB_PHYS_BASE, VGA_FB_PHYS_SIZE);
+	if (ret)
+		goto err_check_var;
 	if (register_framebuffer(info) < 0) {
 		printk(KERN_ERR "vga16fb: unable to register framebuffer\n");
 		ret = -EINVAL;
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [PATCH 18/18] drm/fbdev: Remove aperture handling and FBINFO_MISC_FIRMWARE
  2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
                   ` (16 preceding siblings ...)
  2022-12-19 16:05 ` [PATCH 17/18] fbdev/vga16fb: " Thomas Zimmermann
@ 2022-12-19 16:05 ` Thomas Zimmermann
  2022-12-20  9:46   ` Javier Martinez Canillas
  17 siblings, 1 reply; 39+ messages in thread
From: Thomas Zimmermann @ 2022-12-19 16:05 UTC (permalink / raw)
  To: daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Thomas Zimmermann

There are no users left of struct fb_info.apertures and the flag
FBINFO_MISC_FIRMWARE. Remove both and the aperture-ownership code
in the fbdev core. All code for aperture ownership is now located
in the fbdev drivers.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/video/fbdev/core/fbmem.c   | 33 ------------------------------
 drivers/video/fbdev/core/fbsysfs.c |  1 -
 include/linux/fb.h                 | 22 --------------------
 3 files changed, 56 deletions(-)

diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
index 3a6c8458eb8d..02217c33d152 100644
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
@@ -13,7 +13,6 @@
 
 #include <linux/module.h>
 
-#include <linux/aperture.h>
 #include <linux/compat.h>
 #include <linux/types.h>
 #include <linux/errno.h>
@@ -1653,32 +1652,6 @@ static void do_unregister_framebuffer(struct fb_info *fb_info)
 	put_fb_info(fb_info);
 }
 
-static int fb_aperture_acquire_for_platform_device(struct fb_info *fb_info)
-{
-	struct apertures_struct *ap = fb_info->apertures;
-	struct device *dev = fb_info->device;
-	struct platform_device *pdev;
-	unsigned int i;
-	int ret;
-
-	if (!ap)
-		return 0;
-
-	if (!dev_is_platform(dev))
-		return 0;
-
-	pdev = to_platform_device(dev);
-
-	for (ret = 0, i = 0; i < ap->count; ++i) {
-		ret = devm_aperture_acquire_for_platform_device(pdev, ap->ranges[i].base,
-								ap->ranges[i].size);
-		if (ret)
-			break;
-	}
-
-	return ret;
-}
-
 /**
  *	register_framebuffer - registers a frame buffer device
  *	@fb_info: frame buffer info structure
@@ -1693,12 +1666,6 @@ register_framebuffer(struct fb_info *fb_info)
 {
 	int ret;
 
-	if (fb_info->flags & FBINFO_MISC_FIRMWARE) {
-		ret = fb_aperture_acquire_for_platform_device(fb_info);
-		if (ret)
-			return ret;
-	}
-
 	mutex_lock(&registration_lock);
 	ret = do_register_framebuffer(fb_info);
 	mutex_unlock(&registration_lock);
diff --git a/drivers/video/fbdev/core/fbsysfs.c b/drivers/video/fbdev/core/fbsysfs.c
index 4d7f63892dcc..0c33c4adcd79 100644
--- a/drivers/video/fbdev/core/fbsysfs.c
+++ b/drivers/video/fbdev/core/fbsysfs.c
@@ -88,7 +88,6 @@ void framebuffer_release(struct fb_info *info)
 	mutex_destroy(&info->bl_curve_mutex);
 #endif
 
-	kfree(info->apertures);
 	kfree(info);
 }
 EXPORT_SYMBOL(framebuffer_release);
diff --git a/include/linux/fb.h b/include/linux/fb.h
index 96b96323e9cb..30183fd259ae 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -423,8 +423,6 @@ struct fb_tile_ops {
  */
 #define FBINFO_MISC_ALWAYS_SETPAR   0x40000
 
-/* where the fb is a firmware driver, and can be replaced with a proper one */
-#define FBINFO_MISC_FIRMWARE        0x80000
 /*
  * Host and GPU endianness differ.
  */
@@ -499,30 +497,10 @@ struct fb_info {
 	void *fbcon_par;                /* fbcon use-only private area */
 	/* From here on everything is device dependent */
 	void *par;
-	/* we need the PCI or similar aperture base/size not
-	   smem_start/size as smem_start may just be an object
-	   allocated inside the aperture so may not actually overlap */
-	struct apertures_struct {
-		unsigned int count;
-		struct aperture {
-			resource_size_t base;
-			resource_size_t size;
-		} ranges[0];
-	} *apertures;
 
 	bool skip_vt_switch; /* no VT switch on suspend/resume required */
 };
 
-static inline struct apertures_struct *alloc_apertures(unsigned int max_num) {
-	struct apertures_struct *a;
-
-	a = kzalloc(struct_size(a, ranges, max_num), GFP_KERNEL);
-	if (!a)
-		return NULL;
-	a->count = max_num;
-	return a;
-}
-
 #define FBINFO_FLAG_DEFAULT	FBINFO_DEFAULT
 
 /* This will go away
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* Re: [PATCH 01/18] fbcon: Remove trailing whitespaces
  2022-12-19 16:04 ` [PATCH 01/18] fbcon: Remove trailing whitespaces Thomas Zimmermann
@ 2022-12-20  9:10   ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:10 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:04, Thomas Zimmermann wrote:
> Fix coding style. No functional changes.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 02/18] Revert "fbcon: don't lose the console font across generic->chip driver switch"
  2022-12-19 16:05 ` [PATCH 02/18] Revert "fbcon: don't lose the console font across generic->chip driver switch" Thomas Zimmermann
@ 2022-12-20  9:17   ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:17 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:05, Thomas Zimmermann wrote:
> This reverts commit ae1287865f5361fa138d4d3b1b6277908b54eac9.
> 
> Always free the console font when deinitializing the framebuffer
> console. Subsequent framebuffer consoles will then use the default
> font. Rely on userspace to load any user-configured font for these
> consoles.
> 
> Commit ae1287865f53 ("fbcon: don't lose the console font across
> generic->chip driver switch") was introduced to work around losing
> the font during graphics-device handover. [1][2] It kept a dangling
> pointer with the font data between loading the two consoles, which is
> fairly adventurous hack. It also never covered cases when the other
> consoles, such as VGA text mode, where involved.
> 
> The problem has meanwhile been solved in userspace. Systemd comes
> with a udev rule that re-installs the configured font when a console
> comes up. [3] So the kernel workaround can be removed.
>
> This also removes one of the two special cases triggered by setting
> FBINFO_MISC_FIRMWARE in an fbdev driver.
> 
> Tested during device handover from efifb and simpledrm to radeon. Udev
> reloads the configured console font for the new driver's terminal.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Link: https://bugzilla.redhat.com/show_bug.cgi?id=892340 # 1
> Link: https://bugzilla.redhat.com/show_bug.cgi?id=1074624 # 2
> Link: https://cgit.freedesktop.org/systemd/systemd/tree/src/vconsole/90-vconsole.rules.in?h=v222 # 3
> ---

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 03/18] drm/gma500: Do not set struct fb_info.apertures
  2022-12-19 16:05 ` [PATCH 03/18] drm/gma500: Do not set struct fb_info.apertures Thomas Zimmermann
@ 2022-12-20  9:18   ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:18 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:05, Thomas Zimmermann wrote:
> Generic fbdev drivers use the apertures field in struct fb_info to
> control ownership of the framebuffer memory and graphics device. Do
> not set the values in gma500.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 04/18] drm/i915: Do not set struct fb_info.apertures
  2022-12-19 16:05 ` [PATCH 04/18] drm/i915: " Thomas Zimmermann
@ 2022-12-20  9:19   ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:19 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:05, Thomas Zimmermann wrote:
> Generic fbdev drivers use the apertures field in struct fb_info to
> control ownership of the framebuffer memory and graphics device. Do
> not set the values in i915.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 05/18] drm/radeon: Do not set struct fb_info.apertures
  2022-12-19 16:05 ` [PATCH 05/18] drm/radeon: " Thomas Zimmermann
@ 2022-12-20  9:19   ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:19 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:05, Thomas Zimmermann wrote:
> Generic fbdev drivers use the apertures field in struct fb_info to
> control ownership of the framebuffer memory and graphics device. Do
> not set the values in radeon.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 06/18] drm/fb-helper: Do not allocate unused apertures structure
  2022-12-19 16:05 ` [PATCH 06/18] drm/fb-helper: Do not allocate unused apertures structure Thomas Zimmermann
@ 2022-12-20  9:22   ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:22 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:05, Thomas Zimmermann wrote:
> The apertures field in struct fb_info is not used by DRM drivers. Do
> not allocate it.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 07/18] fbdev/clps711x-fb: Do not set struct fb_info.apertures
  2022-12-19 16:05 ` [PATCH 07/18] fbdev/clps711x-fb: Do not set struct fb_info.apertures Thomas Zimmermann
@ 2022-12-20  9:24   ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:24 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:05, Thomas Zimmermann wrote:
> Generic fbdev drivers use the apertures field in struct fb_info to
> control ownership of the framebuffer memory and graphics device. Do
> not set the values in clps711x-fb.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 08/18] fbdev/hyperv-fb: Do not set struct fb_info.apertures
  2022-12-19 16:05 ` [PATCH 08/18] fbdev/hyperv-fb: " Thomas Zimmermann
@ 2022-12-20  9:24   ` Javier Martinez Canillas
  2022-12-29 15:57   ` Michael Kelley (LINUX)
  1 sibling, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:24 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:05, Thomas Zimmermann wrote:
> Generic fbdev drivers use the apertures field in struct fb_info to
> control ownership of the framebuffer memory and graphics device. Do
> not set the values in hyperv-fb.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 09/18] vfio-mdev/mdpy-fb: Do not set struct fb_info.apertures
  2022-12-19 16:05 ` [PATCH 09/18] vfio-mdev/mdpy-fb: " Thomas Zimmermann
@ 2022-12-20  9:32   ` Javier Martinez Canillas
  2023-01-03 13:54     ` Thomas Zimmermann
  0 siblings, 1 reply; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:32 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv, Kirti Wankhede, kvm

[adding Kirti Wankhede and kvm@vger.kernel.org to Cc list]

On 12/19/22 17:05, Thomas Zimmermann wrote:
> Generic fbdev drivers use the apertures field in struct fb_info to
> control ownership of the framebuffer memory and graphics device. Do
> not set the values in mdpy-fb.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>  samples/vfio-mdev/mdpy-fb.c | 8 --------
>  1 file changed, 8 deletions(-)
> 
> diff --git a/samples/vfio-mdev/mdpy-fb.c b/samples/vfio-mdev/mdpy-fb.c
> index 9ec93d90e8a5..1de5801cd2e8 100644
> --- a/samples/vfio-mdev/mdpy-fb.c
> +++ b/samples/vfio-mdev/mdpy-fb.c
> @@ -161,14 +161,6 @@ static int mdpy_fb_probe(struct pci_dev *pdev,
>  		goto err_release_fb;
>  	}
>  
> -	info->apertures = alloc_apertures(1);
> -	if (!info->apertures) {
> -		ret = -ENOMEM;
> -		goto err_unmap;
> -	}
> -	info->apertures->ranges[0].base = info->fix.smem_start;
> -	info->apertures->ranges[0].size = info->fix.smem_len;
> -
>  	info->fbops = &mdpy_fb_ops;
>  	info->flags = FBINFO_DEFAULT;
>  	info->pseudo_palette = par->palette;
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

But I think an ack from Kirti Wankhede or other virt folk is needed if you
want to merge this through drm-misc-next.

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 10/18] fbdev/efifb: Add struct efifb_par for driver data
  2022-12-19 16:05 ` [PATCH 10/18] fbdev/efifb: Add struct efifb_par for driver data Thomas Zimmermann
@ 2022-12-20  9:33   ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:33 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:05, Thomas Zimmermann wrote:
> The efifb_par structure holds the palette for efifb. It will also
> be useful for storing the device's aperture range.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 11/18] fbdev/efifb: Do not use struct fb_info.apertures
  2022-12-19 16:05 ` [PATCH 11/18] fbdev/efifb: Do not use struct fb_info.apertures Thomas Zimmermann
@ 2022-12-20  9:35   ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:35 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:05, Thomas Zimmermann wrote:
> Acquire ownership of the firmware scanout buffer by calling Linux'
> aperture helpers. Remove the use of struct fb_info.apertures and do
> not set FBINFO_MISC_FIRMWARE; both of which previously configured
> buffer ownership.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 12/18] fbdev/offb: Allocate struct offb_par with framebuffer_alloc()
  2022-12-19 16:05 ` [PATCH 12/18] fbdev/offb: Allocate struct offb_par with framebuffer_alloc() Thomas Zimmermann
@ 2022-12-20  9:37   ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:37 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:05, Thomas Zimmermann wrote:
> Move the palette array into struct offb_par and allocate both via
> framebuffer_alloc(), as intended by fbdev. No functional changes.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 13/18] fbdev/offb: Do not use struct fb_info.apertures
  2022-12-19 16:05 ` [PATCH 13/18] fbdev/offb: Do not use struct fb_info.apertures Thomas Zimmermann
@ 2022-12-20  9:38   ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:38 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:05, Thomas Zimmermann wrote:
> Acquire ownership of the firmware scanout buffer by calling Linux'
> aperture helpers. Remove the use of struct fb_info.apertures and do
> not set FBINFO_MISC_FIRMWARE; both of which previously configured
> buffer ownership.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 14/18] fbdev/simplefb: Do not use struct fb_info.apertures
  2022-12-19 16:05 ` [PATCH 14/18] fbdev/simplefb: " Thomas Zimmermann
@ 2022-12-20  9:40   ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:40 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:05, Thomas Zimmermann wrote:
> Acquire ownership of the firmware scanout buffer by calling Linux'
> aperture helpers. Remove the use of struct fb_info.apertures and do
> not set FBINFO_MISC_FIRMWARE; both of which previously configured
> buffer ownership.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 15/18] fbdev/vesafb: Remove trailing whitespaces
  2022-12-19 16:05 ` [PATCH 15/18] fbdev/vesafb: Remove trailing whitespaces Thomas Zimmermann
@ 2022-12-20  9:40   ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:40 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:05, Thomas Zimmermann wrote:
> Fix coding style. No functional changes.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 16/18] fbdev/vesafb: Do not use struct fb_info.apertures
  2022-12-19 16:05 ` [PATCH 16/18] fbdev/vesafb: Do not use struct fb_info.apertures Thomas Zimmermann
@ 2022-12-20  9:43   ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:43 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:05, Thomas Zimmermann wrote:
> Acquire ownership of the firmware scanout buffer by calling Linux'
> aperture helpers. Remove the use of struct fb_info.apertures and do
> not set FBINFO_MISC_FIRMWARE; both of which previously configured
> buffer ownership.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 17/18] fbdev/vga16fb: Do not use struct fb_info.apertures
  2022-12-19 16:05 ` [PATCH 17/18] fbdev/vga16fb: " Thomas Zimmermann
@ 2022-12-20  9:44   ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:44 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:05, Thomas Zimmermann wrote:
> Acquire ownership of the firmware scanout buffer by calling Linux'
> aperture helpers. Remove the use of struct fb_info.apertures and do
> not set FBINFO_MISC_FIRMWARE; both of which previously configured
> buffer ownership.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 18/18] drm/fbdev: Remove aperture handling and FBINFO_MISC_FIRMWARE
  2022-12-19 16:05 ` [PATCH 18/18] drm/fbdev: Remove aperture handling and FBINFO_MISC_FIRMWARE Thomas Zimmermann
@ 2022-12-20  9:46   ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2022-12-20  9:46 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

On 12/19/22 17:05, Thomas Zimmermann wrote:
> There are no users left of struct fb_info.apertures and the flag
> FBINFO_MISC_FIRMWARE. Remove both and the aperture-ownership code
> in the fbdev core. All code for aperture ownership is now located
> in the fbdev drivers.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>  drivers/video/fbdev/core/fbmem.c   | 33 ------------------------------
>  drivers/video/fbdev/core/fbsysfs.c |  1 -
>  include/linux/fb.h                 | 22 --------------------
>  3 files changed, 56 deletions(-)

Nice patch!

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 39+ messages in thread

* RE: [PATCH 08/18] fbdev/hyperv-fb: Do not set struct fb_info.apertures
  2022-12-19 16:05 ` [PATCH 08/18] fbdev/hyperv-fb: " Thomas Zimmermann
  2022-12-20  9:24   ` Javier Martinez Canillas
@ 2022-12-29 15:57   ` Michael Kelley (LINUX)
  1 sibling, 0 replies; 39+ messages in thread
From: Michael Kelley (LINUX) @ 2022-12-29 15:57 UTC (permalink / raw)
  To: Thomas Zimmermann, daniel, airlied, deller, javierm
  Cc: dri-devel, linux-fbdev, intel-gfx, amd-gfx, linux-arm-kernel,
	linux-hyperv

From: Thomas Zimmermann <tzimmermann@suse.de> Sent: Monday, December 19, 2022 8:05 AM
> 
> Generic fbdev drivers use the apertures field in struct fb_info to
> control ownership of the framebuffer memory and graphics device. Do
> not set the values in hyperv-fb.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>  drivers/video/fbdev/hyperv_fb.c | 17 ++++++-----------
>  1 file changed, 6 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/video/fbdev/hyperv_fb.c b/drivers/video/fbdev/hyperv_fb.c
> index d8edb5635f77..1c7d6ff5a6c0 100644
> --- a/drivers/video/fbdev/hyperv_fb.c
> +++ b/drivers/video/fbdev/hyperv_fb.c
> @@ -988,13 +988,10 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info)
>  	struct pci_dev *pdev  = NULL;
>  	void __iomem *fb_virt;
>  	int gen2vm = efi_enabled(EFI_BOOT);
> +	resource_size_t base, size;
>  	phys_addr_t paddr;
>  	int ret;
> 
> -	info->apertures = alloc_apertures(1);
> -	if (!info->apertures)
> -		return -ENOMEM;
> -
>  	if (!gen2vm) {
>  		pdev = pci_get_device(PCI_VENDOR_ID_MICROSOFT,
>  			PCI_DEVICE_ID_HYPERV_VIDEO, NULL);
> @@ -1003,8 +1000,8 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info)
>  			return -ENODEV;
>  		}
> 
> -		info->apertures->ranges[0].base = pci_resource_start(pdev, 0);
> -		info->apertures->ranges[0].size = pci_resource_len(pdev, 0);
> +		base = pci_resource_start(pdev, 0);
> +		size = pci_resource_len(pdev, 0);
> 
>  		/*
>  		 * For Gen 1 VM, we can directly use the contiguous memory
> @@ -1027,8 +1024,8 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info)
>  		}
>  		pr_info("Unable to allocate enough contiguous physical memory on Gen 1 VM. Using MMIO instead.\n");
>  	} else {
> -		info->apertures->ranges[0].base = screen_info.lfb_base;
> -		info->apertures->ranges[0].size = screen_info.lfb_size;
> +		base = screen_info.lfb_base;
> +		size = screen_info.lfb_size;
>  	}
> 
>  	/*
> @@ -1070,9 +1067,7 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info)
>  	info->screen_size = dio_fb_size;
> 
>  getmem_done:
> -	aperture_remove_conflicting_devices(info->apertures->ranges[0].base,
> -					    info->apertures->ranges[0].size,
> -					    false, KBUILD_MODNAME);
> +	aperture_remove_conflicting_devices(base, size, false, KBUILD_MODNAME);
> 
>  	if (gen2vm) {
>  		/* framebuffer is reallocated, clear screen_info to avoid misuse from kexec */
> --
> 2.39.0

Reviewed-by: Michael Kelley <mikelley@microsoft.com>


^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: [PATCH 09/18] vfio-mdev/mdpy-fb: Do not set struct fb_info.apertures
  2022-12-20  9:32   ` Javier Martinez Canillas
@ 2023-01-03 13:54     ` Thomas Zimmermann
  0 siblings, 0 replies; 39+ messages in thread
From: Thomas Zimmermann @ 2023-01-03 13:54 UTC (permalink / raw)
  To: Javier Martinez Canillas, daniel, airlied, deller
  Cc: linux-fbdev, kvm, intel-gfx, linux-hyperv, amd-gfx,
	Kirti Wankhede, dri-devel, linux-arm-kernel


[-- Attachment #1.1: Type: text/plain, Size: 1660 bytes --]



Am 20.12.22 um 10:32 schrieb Javier Martinez Canillas:
> [adding Kirti Wankhede and kvm@vger.kernel.org to Cc list]
> 
> On 12/19/22 17:05, Thomas Zimmermann wrote:
>> Generic fbdev drivers use the apertures field in struct fb_info to
>> control ownership of the framebuffer memory and graphics device. Do
>> not set the values in mdpy-fb.
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>> ---
>>   samples/vfio-mdev/mdpy-fb.c | 8 --------
>>   1 file changed, 8 deletions(-)
>>
>> diff --git a/samples/vfio-mdev/mdpy-fb.c b/samples/vfio-mdev/mdpy-fb.c
>> index 9ec93d90e8a5..1de5801cd2e8 100644
>> --- a/samples/vfio-mdev/mdpy-fb.c
>> +++ b/samples/vfio-mdev/mdpy-fb.c
>> @@ -161,14 +161,6 @@ static int mdpy_fb_probe(struct pci_dev *pdev,
>>   		goto err_release_fb;
>>   	}
>>   
>> -	info->apertures = alloc_apertures(1);
>> -	if (!info->apertures) {
>> -		ret = -ENOMEM;
>> -		goto err_unmap;
>> -	}
>> -	info->apertures->ranges[0].base = info->fix.smem_start;
>> -	info->apertures->ranges[0].size = info->fix.smem_len;
>> -
>>   	info->fbops = &mdpy_fb_ops;
>>   	info->flags = FBINFO_DEFAULT;
>>   	info->pseudo_palette = par->palette;
> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
> 
> But I think an ack from Kirti Wankhede or other virt folk is needed if you
> want to merge this through drm-misc-next.

ping. Could I have a review from the vfio devs, please.

Best regards
Thomas

> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

^ permalink raw reply	[flat|nested] 39+ messages in thread

end of thread, other threads:[~2023-01-03 13:54 UTC | newest]

Thread overview: 39+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-19 16:04 [PATCH 00/18] drm,fbdev: Remove apertures structure and FBINFO_MISC_FIRMWARE Thomas Zimmermann
2022-12-19 16:04 ` [PATCH 01/18] fbcon: Remove trailing whitespaces Thomas Zimmermann
2022-12-20  9:10   ` Javier Martinez Canillas
2022-12-19 16:05 ` [PATCH 02/18] Revert "fbcon: don't lose the console font across generic->chip driver switch" Thomas Zimmermann
2022-12-20  9:17   ` Javier Martinez Canillas
2022-12-19 16:05 ` [PATCH 03/18] drm/gma500: Do not set struct fb_info.apertures Thomas Zimmermann
2022-12-20  9:18   ` Javier Martinez Canillas
2022-12-19 16:05 ` [PATCH 04/18] drm/i915: " Thomas Zimmermann
2022-12-20  9:19   ` Javier Martinez Canillas
2022-12-19 16:05 ` [PATCH 05/18] drm/radeon: " Thomas Zimmermann
2022-12-20  9:19   ` Javier Martinez Canillas
2022-12-19 16:05 ` [PATCH 06/18] drm/fb-helper: Do not allocate unused apertures structure Thomas Zimmermann
2022-12-20  9:22   ` Javier Martinez Canillas
2022-12-19 16:05 ` [PATCH 07/18] fbdev/clps711x-fb: Do not set struct fb_info.apertures Thomas Zimmermann
2022-12-20  9:24   ` Javier Martinez Canillas
2022-12-19 16:05 ` [PATCH 08/18] fbdev/hyperv-fb: " Thomas Zimmermann
2022-12-20  9:24   ` Javier Martinez Canillas
2022-12-29 15:57   ` Michael Kelley (LINUX)
2022-12-19 16:05 ` [PATCH 09/18] vfio-mdev/mdpy-fb: " Thomas Zimmermann
2022-12-20  9:32   ` Javier Martinez Canillas
2023-01-03 13:54     ` Thomas Zimmermann
2022-12-19 16:05 ` [PATCH 10/18] fbdev/efifb: Add struct efifb_par for driver data Thomas Zimmermann
2022-12-20  9:33   ` Javier Martinez Canillas
2022-12-19 16:05 ` [PATCH 11/18] fbdev/efifb: Do not use struct fb_info.apertures Thomas Zimmermann
2022-12-20  9:35   ` Javier Martinez Canillas
2022-12-19 16:05 ` [PATCH 12/18] fbdev/offb: Allocate struct offb_par with framebuffer_alloc() Thomas Zimmermann
2022-12-20  9:37   ` Javier Martinez Canillas
2022-12-19 16:05 ` [PATCH 13/18] fbdev/offb: Do not use struct fb_info.apertures Thomas Zimmermann
2022-12-20  9:38   ` Javier Martinez Canillas
2022-12-19 16:05 ` [PATCH 14/18] fbdev/simplefb: " Thomas Zimmermann
2022-12-20  9:40   ` Javier Martinez Canillas
2022-12-19 16:05 ` [PATCH 15/18] fbdev/vesafb: Remove trailing whitespaces Thomas Zimmermann
2022-12-20  9:40   ` Javier Martinez Canillas
2022-12-19 16:05 ` [PATCH 16/18] fbdev/vesafb: Do not use struct fb_info.apertures Thomas Zimmermann
2022-12-20  9:43   ` Javier Martinez Canillas
2022-12-19 16:05 ` [PATCH 17/18] fbdev/vga16fb: " Thomas Zimmermann
2022-12-20  9:44   ` Javier Martinez Canillas
2022-12-19 16:05 ` [PATCH 18/18] drm/fbdev: Remove aperture handling and FBINFO_MISC_FIRMWARE Thomas Zimmermann
2022-12-20  9:46   ` Javier Martinez Canillas

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).