Linux-fbdev Archive mirror
 help / color / mirror / Atom feed
From: Thomas Zimmermann <tzimmermann@suse.de>
To: javierm@redhat.com, deller@gmx.de, airlied@gmail.com, daniel@ffwll.ch
Cc: dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org,
	Thomas Zimmermann <tzimmermann@suse.de>
Subject: [PATCH v2 06/43] fbdev/deferred-io: Always call get_page() for framebuffer pages
Date: Wed, 10 Apr 2024 15:02:02 +0200	[thread overview]
Message-ID: <20240410130557.31572-7-tzimmermann@suse.de> (raw)
In-Reply-To: <20240410130557.31572-1-tzimmermann@suse.de>

Unconditionally call get_page() after looking up a page from the
framebuffer memory. Guarantees that we always hold a reference.

This change also refactors the code such that it can support a
driver-supplied get_page helper. This will be useful for DRM's
fbdev emulation.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
---
 drivers/video/fbdev/core/fb_defio.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/video/fbdev/core/fb_defio.c b/drivers/video/fbdev/core/fb_defio.c
index fe84218ded457..6e0bbcfdb01b5 100644
--- a/drivers/video/fbdev/core/fb_defio.c
+++ b/drivers/video/fbdev/core/fb_defio.c
@@ -23,7 +23,7 @@
 #include <linux/rmap.h>
 #include <linux/pagemap.h>
 
-static struct page *fb_deferred_io_page(struct fb_info *info, unsigned long offs)
+static struct page *fb_deferred_io_get_page(struct fb_info *info, unsigned long offs)
 {
 	const void *screen_buffer = info->screen_buffer;
 	struct page *page = NULL;
@@ -33,6 +33,9 @@ static struct page *fb_deferred_io_page(struct fb_info *info, unsigned long offs
 	else if (info->fix.smem_start)
 		page = pfn_to_page((info->fix.smem_start + offs) >> PAGE_SHIFT);
 
+	if (page)
+		get_page(page);
+
 	return page;
 }
 
@@ -129,12 +132,10 @@ static vm_fault_t fb_deferred_io_fault(struct vm_fault *vmf)
 	if (offset >= info->fix.smem_len)
 		return VM_FAULT_SIGBUS;
 
-	page = fb_deferred_io_page(info, offset);
+	page = fb_deferred_io_get_page(info, offset);
 	if (!page)
 		return VM_FAULT_SIGBUS;
 
-	get_page(page);
-
 	if (vmf->vma->vm_file)
 		page->mapping = vmf->vma->vm_file->f_mapping;
 	else
-- 
2.44.0


  parent reply	other threads:[~2024-04-10 13:06 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-10 13:01 [PATCH v2 00/43] drm: Provide fbdev emulation per memory manager Thomas Zimmermann
2024-04-10 13:01 ` [PATCH v2 01/43] drm/fbdev-generic: Do not set physical framebuffer address Thomas Zimmermann
2024-04-15  6:43   ` Maxime Ripard
2024-04-10 13:01 ` [PATCH v2 02/43] fbdev/deferred-io: Move pageref setup into separate helper Thomas Zimmermann
2024-04-10 13:01 ` [PATCH v2 03/43] fbdev/deferred-io: Clean up pageref on lastclose Thomas Zimmermann
2024-04-10 13:02 ` [PATCH v2 04/43] fbdev/deferred-io: Test screen_buffer for vmalloc'ed memory Thomas Zimmermann
2024-04-10 13:02 ` [PATCH v2 05/43] fbdev/deferred-io: Test smem_start for I/O memory Thomas Zimmermann
2024-04-10 13:02 ` Thomas Zimmermann [this message]
2024-04-10 13:02 ` [PATCH v2 07/43] fbdev/deferred-io: Provide get_page hook in struct fb_deferred_io Thomas Zimmermann
2024-04-10 13:02 ` [PATCH v2 08/43] drm/fbdev: Add fbdev-shmem Thomas Zimmermann
2024-04-16 11:25   ` Javier Martinez Canillas
2024-04-16 12:07     ` Thomas Zimmermann
2024-04-16 12:23       ` Javier Martinez Canillas
2024-04-17  7:30       ` Geert Uytterhoeven
2024-04-10 13:02 ` [PATCH v2 09/43] drm/ast: Use fbdev-shmem Thomas Zimmermann
2024-04-10 13:02 ` [PATCH v2 10/43] drm/gud: " Thomas Zimmermann
2024-04-10 13:02 ` [PATCH v2 11/43] drm/hyperv: " Thomas Zimmermann
2024-04-10 13:02 ` [PATCH v2 12/43] drm/mgag200: " Thomas Zimmermann
2024-04-10 13:02 ` [PATCH v2 13/43] drm/solomon: " Thomas Zimmermann
2024-04-16 11:35   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 14/43] drm/tiny/cirrus: " Thomas Zimmermann
2024-04-16 11:36   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 15/43] drm/tiny/gm12u320: " Thomas Zimmermann
2024-04-10 13:20   ` Hans de Goede
2024-04-10 13:02 ` [PATCH v2 16/43] drm/tiny/ofdrm: " Thomas Zimmermann
2024-04-16 11:43   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 17/43] drm/tiny/simpledrm: " Thomas Zimmermann
2024-04-16 11:43   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 18/43] drm/udl: " Thomas Zimmermann
2024-04-16 11:44   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 19/43] drm/virtio: " Thomas Zimmermann
2024-04-19  7:03   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 20/43] drm/vkms: " Thomas Zimmermann
2024-04-16 11:44   ` Javier Martinez Canillas
2024-04-16 16:03   ` Maíra Canal
2024-04-10 13:02 ` [PATCH v2 21/43] drm/fbdev-dma: Implement damage handling and deferred I/O Thomas Zimmermann
2024-04-16 12:18   ` Javier Martinez Canillas
2024-04-16 12:44     ` Thomas Zimmermann
2024-04-16 12:52       ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 22/43] drm/arm/komeda: Use fbdev-dma Thomas Zimmermann
2024-04-10 13:02 ` [PATCH v2 23/43] drm/hisilicon/kirin: " Thomas Zimmermann
2024-04-16 12:33   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 24/43] drm/imx/lcdc: " Thomas Zimmermann
2024-04-16 12:33   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 25/43] drm/ingenic: " Thomas Zimmermann
2024-04-10 15:00   ` Paul Cercueil
2024-04-10 13:02 ` [PATCH v2 26/43] drm/mediatek: " Thomas Zimmermann
2024-04-16 12:35   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 27/43] drm/panel/panel-ilitek-9341: " Thomas Zimmermann
2024-04-16 12:36   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 28/43] drm/renesas/rcar-du: " Thomas Zimmermann
2024-04-12 18:57   ` Laurent Pinchart
2024-04-12 19:03     ` Laurent Pinchart
2024-04-15  6:59     ` Thomas Zimmermann
2024-04-10 13:02 ` [PATCH v2 29/43] drm/renesas/rz-du: " Thomas Zimmermann
2024-04-19  7:04   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 30/43] drm/renesas/shmobile: " Thomas Zimmermann
2024-04-12 19:03   ` Laurent Pinchart
2024-04-10 13:02 ` [PATCH v2 31/43] drm/rockchip: " Thomas Zimmermann
2024-04-16 12:36   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 32/43] drm/tiny/hx8357d: " Thomas Zimmermann
2024-04-16 12:37   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 33/43] drm/tiny/ili9163: " Thomas Zimmermann
2024-04-16 12:37   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 34/43] drm/tiny/ili9225: " Thomas Zimmermann
2024-04-10 13:02 ` [PATCH v2 35/43] drm/tiny/ili9341: " Thomas Zimmermann
2024-04-16 12:38   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 36/43] drm/tiny/ili9486: " Thomas Zimmermann
2024-04-16 12:38   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 37/43] drm/tiny/mi0283qt: " Thomas Zimmermann
2024-04-10 13:02 ` [PATCH v2 38/43] drm/tiny/panel-mipi-dbi: " Thomas Zimmermann
2024-04-10 13:02 ` [PATCH v2 39/43] drm/tiny/repaper: " Thomas Zimmermann
2024-04-10 13:02 ` [PATCH v2 40/43] drm/tiny/st7586: " Thomas Zimmermann
2024-04-10 13:02 ` [PATCH v2 41/43] drm/tiny/st7735r: " Thomas Zimmermann
2024-04-10 13:02 ` [PATCH v2 42/43] drm/fbdev-generic: Convert to fbdev-ttm Thomas Zimmermann
2024-04-16 12:41   ` Javier Martinez Canillas
2024-04-10 13:02 ` [PATCH v2 43/43] drm/fbdev: Clean up fbdev documentation Thomas Zimmermann
2024-04-16 12:42   ` Javier Martinez Canillas

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=20240410130557.31572-7-tzimmermann@suse.de \
    --to=tzimmermann@suse.de \
    --cc=airlied@gmail.com \
    --cc=daniel@ffwll.ch \
    --cc=deller@gmx.de \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=javierm@redhat.com \
    --cc=linux-fbdev@vger.kernel.org \
    /path/to/YOUR_REPLY

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

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is 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 read-only IMAP folder(s) and NNTP newsgroup(s).