fbdev: Use pageref offset for deferred-I/O writeback
authorThomas Zimmermann <tzimmermann@suse.de>
Fri, 29 Apr 2022 10:08:34 +0000 (12:08 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Tue, 3 May 2022 14:04:22 +0000 (16:04 +0200)
commite2d8b4289c937447ab710052f15a18f686db73dc
tree684900065bd4de0fc0048fad99effe21ec0dd7a6
parente80eec1b871a2acb8f5c92db4c237e9ae6dd322b
fbdev: Use pageref offset for deferred-I/O writeback

Use pageref->offset instead of page->index for deferred-I/O writeback
where appropriate. Distinguishes between file-mapping offset and video-
memory offset. While at it, also remove unnecessary references to
struct page.

Fbdev's deferred-I/O code uses the two related page->index and
pageref->offset. The former is the page offset in the mapped file,
the latter is the byte offset in the video memory (or fbdev screen
buffer). It's the same value for fbdev drivers, but for DRM the values
can be different. Because GEM buffer objects are mapped at an offset
in the DRM device file, page->index has this offset added to it as well.
We currently don't hit this case in DRM, because all affected mappings
of GEM memory are performed with an internal, intermediate shadow buffer.

The value of page->index is required by page_mkclean(), which we
call to reset the mappings during the writeback phase of the deferred
I/O. The value of pageref->offset is for conveniently getting an offset
into video memory in fb helpers.

v4:
* fix commit message (Javier)

Suggested-by: Javier Martinez Canillas <javierm@redhat.com>
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220429100834.18898-6-tzimmermann@suse.de
drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
drivers/staging/fbtft/fbtft-core.c
drivers/video/fbdev/broadsheetfb.c
drivers/video/fbdev/hyperv_fb.c
drivers/video/fbdev/metronomefb.c
drivers/video/fbdev/sh_mobile_lcdcfb.c
drivers/video/fbdev/smscufx.c
drivers/video/fbdev/udlfb.c
drivers/video/fbdev/xen-fbfront.c