[PATCH] drm/fbdev-dma: Only set smem_start is enable per module option
Geert Uytterhoeven
geert at linux-m68k.org
Mon Jun 17 17:42:21 UTC 2024
Hi Thomas,
On Mon, 17 Jun 2024, Thomas Zimmermann wrote:
> Only export struct fb_info.fix.smem_start if that is required by the
> user and the memory does not come from vmalloc().
>
> Setting struct fb_info.fix.smem_start breaks systems where DMA
> memory is backed by vmalloc address space. An example error is
> shown below.
>
> [ 3.536043] ------------[ cut here ]------------
> [ 3.540716] virt_to_phys used for non-linear address: 000000007fc4f540 (0xffff800086001000)
> [ 3.552628] WARNING: CPU: 4 PID: 61 at arch/arm64/mm/physaddr.c:12 __virt_to_phys+0x68/0x98
> [ 3.565455] Modules linked in:
> [ 3.568525] CPU: 4 PID: 61 Comm: kworker/u12:5 Not tainted 6.6.23-06226-g4986cc3e1b75-dirty #250
> [ 3.577310] Hardware name: NXP i.MX95 19X19 board (DT)
> [ 3.582452] Workqueue: events_unbound deferred_probe_work_func
> [ 3.588291] pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
> [ 3.595233] pc : __virt_to_phys+0x68/0x98
> [ 3.599246] lr : __virt_to_phys+0x68/0x98
> [ 3.603276] sp : ffff800083603990
> [ 3.677939] Call trace:
> [ 3.680393] __virt_to_phys+0x68/0x98
> [ 3.684067] drm_fbdev_dma_helper_fb_probe+0x138/0x238
> [ 3.689214] __drm_fb_helper_initial_config_and_unlock+0x2b0/0x4c0
> [ 3.695385] drm_fb_helper_initial_config+0x4c/0x68
> [ 3.700264] drm_fbdev_dma_client_hotplug+0x8c/0xe0
> [ 3.705161] drm_client_register+0x60/0xb0
> [ 3.709269] drm_fbdev_dma_setup+0x94/0x148
>
> Additionally, DMA memory is assumed to by contiguous in physical
> address space, which is not guaranteed by vmalloc().
>
> Resolve this by checking the module flag drm_leak_fbdev_smem when
> DRM allocated the instance of struct fb_info. Fbdev-dma then only
> sets smem_start only if required (via FBINFO_HIDE_SMEM_START). Also
> guarantee that the framebuffer is not located in vmalloc address
> space.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
> Reported-by: Peng Fan (OSS) <peng.fan at oss.nxp.com>
> Closes: https://lore.kernel.org/dri-devel/20240604080328.4024838-1-peng.fan@oss.nxp.com/
> Fixes: b79fe9abd58b ("drm/fbdev-dma: Implement fbdev emulation for GEM DMA helpers")
Thanks, this fixes the issue I was seeing on R-Car Gen3/Gen4 with rcar-du.
No regressions on R-Car Gen2 (rcar-du) and R-Mobile A1 (shmobile)
which didn't shown the warning in the first place.
Tested-by: Geert Uytterhoeven <geert+renesas at glider.be>
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
More information about the dri-devel
mailing list