From: Alexander Stein <alexander.stein@ew.tq-group.com>
To: Linus Walleij <linus.walleij@linaro.org>,
dri-devel@lists.freedesktop.org
Cc: javierm@redhat.com, deller@gmx.de, airlied@gmail.com,
daniel@ffwll.ch, dri-devel@lists.freedesktop.org,
linux-fbdev@vger.kernel.org,
Thomas Zimmermann <tzimmermann@suse.de>
Subject: Re: [PATCH v3 21/43] drm/fbdev-dma: Implement damage handling and deferred I/O
Date: Wed, 04 Sep 2024 10:29:43 +0200 [thread overview]
Message-ID: <3312559.aeNJFYEL58@steina-w> (raw)
In-Reply-To: <2846e207-43d5-4164-8a2e-5ce9d2aaab38@suse.de>
Hi Thomas,
Am Mittwoch, 4. September 2024, 09:41:12 CEST schrieb Thomas Zimmermann:
> Hi Linus, Alexander,
>
> Attached is a patch to mitigate the problem and go back to the old
> behavior for pl111. Can you please test it on affected and unaffected
> systems and report the results?
Thank you for the patch. This indeed fixes the mmap problem on my i.MX6
platform which only has Normal memory:
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000010000000-0x000000002fffffff]
[ 0.000000] HighMem empty
But please note this is not pl111 based but IPUv3 (drivers/gpu/ipu-v3).
You might want to adjust the commit message.
Tested-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Best regards,
Alexander
> Am 04.09.24 um 00:53 schrieb Linus Walleij:
> > On Fri, Apr 19, 2024 at 10:35 AM Thomas Zimmermann <tzimmermann@suse.de> wrote:
> >
> >> Add support for damage handling and deferred I/O to fbdev-dma. This
> >> enables fbdev-dma to support all DMA-memory-based DRM drivers, even
> >> such with a dirty callback in their framebuffers.
> >>
> >> The patch adds the code for deferred I/O and also sets a dedicated
> >> helper for struct fb_ops.fb_mmap that support coherent mappings.
> >>
> >> v3:
> >> - init fb_ops with FB_GEN_DEFAULT_DEFERRED_DMAMEM_OPS() (Javier)
> >>
> >> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> >> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
> > For some reason this makes the Versatile Express crash in QEMU
> > (I can retest on real hardware if necessary):
> >
> > 8<--- cut here ---
> > Unable to handle kernel paging request at virtual address 18095000 when write
> > [18095000] *pgd=00000000
> > Internal error: Oops: 805 [#1] SMP ARM
> > CPU: 0 PID: 75 Comm: S08_ledflash Not tainted 6.9.0-rc6+ #44
> > Hardware name: ARM-Versatile Express
> > PC is at mmioset+0x34/0xac
> > LR is at 0x0
> > pc : [<809c2a54>] lr : [<00000000>] psr: 20000013
> > sp : f8dddc38 ip : 18095000 fp : 00000000
> > r10: 81109a18 r9 : 81238b04 r8 : 00000000
> > r7 : 00440dc0 r6 : ed4f32a0 r5 : ed4f32a0 r4 : 00000001
> > r3 : 00000000 r2 : 00000fc0 r1 : 00000000 r0 : 18095000
> > Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none
> > Control: 10c5387d Table: 81d6406a DAC: 00000051
> > Register r0 information: non-paged memory
> > Register r1 information: NULL pointer
> > Register r2 information: non-paged memory
> > Register r3 information: NULL pointer
> > Register r4 information: non-paged memory
> > Register r5 information: non-slab/vmalloc memory
> > Register r6 information: non-slab/vmalloc memory
> > Register r7 information: non-paged memory
> > Register r8 information: NULL pointer
> > Register r9 information: non-slab/vmalloc memory
> > Register r10 information: non-slab/vmalloc memory
> > Register r11 information: NULL pointer
> > Register r12 information: non-paged memory
> > Process S08_ledflash (pid: 75, stack limit = 0x(ptrval))
> > Stack: (0xf8dddc38 to 0xf8dde000)
> > dc20: 00000801 802af888
> > dc40: 80a0fb80 00440dc0 00000801 811fad80 00000000 f8dddd28 ed4f32a0 811fa680
> > dc60: 00000000 802b0c30 ee1d2140 ee1d215c 95ff4385 00000001 00000001 00000001
> > dc80: 00000000 00000000 ffffffff 8196a70b 000000b0 00000064 0000006c 00000000
> > dca0: 00000001 00000002 00000001 811fa798 00000801 811fa940 80a0fb80 00000cc0
> > dcc0: 00000001 00000001 00000000 f8dddd28 811fa93c 811fa680 00000002 802b0c30
> > dce0: ee1d2140 00440dc0 00000000 00000000 00000001 00000000 811fad80 00440dc0
> > dd00: 00000001 00000000 00000000 83201100 00440dc0 00000000 00000000 802afa18
> > dd20: 00000bdc 00000bd8 811fad80 00000000 811fad80 00000000 00000000 00000000
> > dd40: adf00ec5 816d5fa8 816d5fa8 821c3c00 00000000 7ebc2000 7ebe3000 00000000
> > dd60: f8ddde44 8028cfa0 816d5fa8 8288df50 8169cf00 821c3c00 7ebc2000 7ebe3000
> > dd80: f8ddde44 8028e1e8 00000001 80bbe932 f8ddde44 f8dddde8 f8ddde44 8288df50
> > dda0: 83201100 809cf474 f8ddde44 8169cf00 00000020 8169cf94 821c3c94 7ebe3000
> > ddc0: 7ebe2fff fffffff4 00000000 816d5fa8 821c3c00 8169cf00 81d65fa8 809cdbb0
> > dde0: 8288df50 81ffa910 7ebe3000 82890b00 00000000 00000000 00000000 00000000
> > de00: 00000000 00000000 adf00ec5 00000000 00000000 8169cf00 8288df50 83201100
> > de20: 821c3c00 81ffa910 f8ddde44 8011f6e4 00000000 00000000 821c3c7c 8169cf7c
> > de40: 83200880 821c3c40 7ebc2000 7ebe2fff 82890b0c 76ea4000 ffffffff 00000000
> > de60: 00000000 0f000a01 f8ddde68 f8ddde68 adf00ec5 00000000 00000000 00000000
> > de80: 00000000 01200000 83201100 00000000 00000000 8011e2ac 00000000 83200d7c
> > dea0: 83201020 83200e70 83200e80 00000000 f8dddf30 83200880 00000000 00000000
> > dec0: 00000000 00000000 00000000 82182f38 adf00ec5 00000000 01200000 f8dddf30
> > dee0: 00000000 00000000 00000000 00000078 000cb21c 8011fe24 00000020 00000000
> > df00: 828a5d80 80a10140 adf00ec5 01200011 00000000 00000000 00000000 f8dddf30
> > df20: 00000000 00000078 000cb21c 801203d4 01200000 00000000 00000000 76f46468
> > df40: 00000000 00000000 00000011 00000000 00000000 00000000 00000000 00000000
> > df60: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
> > df80: 00000003 adf00ec5 76f46468 00000000 76f468c0 00000078 80100290 83201100
> > dfa0: 000cb21c 80100060 76f46468 00000000 01200011 00000000 00000000 00000000
> > dfc0: 76f46468 00000000 76f468c0 00000078 00000000 76e81000 76f46400 000cb21c
> > dfe0: 00000078 7ebe2938 76e0854d 76dae7e6 20000030 01200011 00000000 00000000
> > Call trace:
> > mmioset from prep_new_page+0x160/0x194
> > prep_new_page from get_page_from_freelist+0x10f4/0x110c
> > get_page_from_freelist from __alloc_pages+0x15c/0x280
> > __alloc_pages from __pte_alloc+0x28/0x1bc
> > __pte_alloc from copy_page_range+0xc10/0xd28
> > copy_page_range from copy_mm+0x5cc/0x850
> > copy_mm from copy_process+0x508/0xd8c
> > copy_process from kernel_clone+0x94/0x338
> > kernel_clone from sys_clone+0x94/0xb0
> > sys_clone from ret_fast_syscall+0x0/0x1c
> > Exception stack(0xf8dddfa8 to 0xf8dddff0)
> > dfa0: 76f46468 00000000 01200011 00000000 00000000 00000000
> > dfc0: 76f46468 00000000 76f468c0 00000078 00000000 76e81000 76f46400 000cb21c
> > dfe0: 00000078 7ebe2938 76e0854d 76dae7e6
> > Code: e92d4100 e1a08001 e1a0e003 e2522040 (a8ac410a)
> > ---[ end trace 0000000000000000 ]---
> >
> > I bisected down to this commit and reverting the commit solves the issue.
> >
> > What is special about the Versatile Express graphics is that it uses a special
> > dedicated video RAM, looks like this in the device tree
> >
> >
> > reserved-memory {
> > #address-cells = <1>;
> > #size-cells = <1>;
> > ranges;
> >
> > /* Chipselect 3 is physically at 0x4c000000 */
> > vram: vram@4c000000 {
> > /* 8 MB of designated video RAM */
> > compatible = "shared-dma-pool";
> > reg = <0x4c000000 0x00800000>;
> > no-map;
> > };
> > };
> > (...)
> > clcd@1f000 {
> > compatible = "arm,pl111", "arm,primecell";
> > (...)
> > memory-region = <&vram>;
> >
> > This gets picked up in the driver
> > drivers/gpu/drm/pl111/pl111_drv.c
> > like this:
> >
> > ret = of_reserved_mem_device_init(dev);
> > if (!ret) {
> > dev_info(dev, "using device-specific reserved memory\n");
> > priv->use_device_memory = true;
> > }
> >
> > Yours,
> > Linus Walleij
>
>
--
TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany
Amtsgericht München, HRB 105018
Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider
http://www.tq-group.com/
next prev parent reply other threads:[~2024-09-04 8:29 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-19 8:28 [PATCH v3 00/43] drm: Provide fbdev emulation per memory manager Thomas Zimmermann
2024-04-19 8:28 ` [PATCH v3 01/43] drm/fbdev-generic: Do not set physical framebuffer address Thomas Zimmermann
2024-04-19 8:28 ` [PATCH v3 02/43] fbdev/deferred-io: Move pageref setup into separate helper Thomas Zimmermann
2024-04-19 8:28 ` [PATCH v3 03/43] fbdev/deferred-io: Clean up pageref on lastclose Thomas Zimmermann
2024-04-19 8:28 ` [PATCH v3 04/43] fbdev/deferred-io: Test screen_buffer for vmalloc'ed memory Thomas Zimmermann
2024-04-19 8:28 ` [PATCH v3 05/43] fbdev/deferred-io: Test smem_start for I/O memory Thomas Zimmermann
2024-04-19 8:28 ` [PATCH v3 06/43] fbdev/deferred-io: Always call get_page() for framebuffer pages Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 07/43] fbdev/deferred-io: Provide get_page hook in struct fb_deferred_io Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 08/43] drm/fbdev: Add fbdev-shmem Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 09/43] drm/ast: Use fbdev-shmem Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 10/43] drm/gud: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 11/43] drm/hyperv: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 12/43] drm/mgag200: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 13/43] drm/solomon: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 14/43] drm/tiny/cirrus: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 15/43] drm/tiny/gm12u320: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 16/43] drm/tiny/ofdrm: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 17/43] drm/tiny/simpledrm: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 18/43] drm/udl: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 19/43] drm/virtio: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 20/43] drm/vkms: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 21/43] drm/fbdev-dma: Implement damage handling and deferred I/O Thomas Zimmermann
2024-09-03 22:53 ` Linus Walleij
2024-09-04 6:09 ` Alexander Stein
2024-09-04 6:36 ` Linus Walleij
2024-09-04 6:43 ` Alexander Stein
2024-09-04 7:08 ` Thomas Zimmermann
2024-09-04 7:04 ` Thomas Zimmermann
2024-09-04 7:41 ` Thomas Zimmermann
2024-09-04 8:29 ` Alexander Stein [this message]
2024-04-19 8:29 ` [PATCH v3 22/43] drm/arm/komeda: Use fbdev-dma Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 23/43] drm/hisilicon/kirin: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 24/43] drm/imx/lcdc: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 25/43] drm/ingenic: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 26/43] drm/mediatek: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 27/43] drm/panel/panel-ilitek-9341: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 28/43] drm/renesas/rcar-du: " Thomas Zimmermann
2024-04-19 9:48 ` Kieran Bingham
2024-06-17 17:33 ` Geert Uytterhoeven
2024-04-19 8:29 ` [PATCH v3 29/43] drm/renesas/rz-du: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 30/43] drm/renesas/shmobile: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 31/43] drm/rockchip: " Thomas Zimmermann
2024-04-19 11:10 ` Heiko Stuebner
2024-04-19 8:29 ` [PATCH v3 32/43] drm/tiny/hx8357d: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 33/43] drm/tiny/ili9163: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 34/43] drm/tiny/ili9225: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 35/43] drm/tiny/ili9341: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 36/43] drm/tiny/ili9486: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 37/43] drm/tiny/mi0283qt: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 38/43] drm/tiny/panel-mipi-dbi: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 39/43] drm/tiny/repaper: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 40/43] drm/tiny/st7586: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 41/43] drm/tiny/st7735r: " Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 42/43] drm/fbdev-generic: Convert to fbdev-ttm Thomas Zimmermann
2024-04-19 8:29 ` [PATCH v3 43/43] drm/fbdev: Clean up fbdev documentation Thomas Zimmermann
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=3312559.aeNJFYEL58@steina-w \
--to=alexander.stein@ew.tq-group.com \
--cc=airlied@gmail.com \
--cc=daniel@ffwll.ch \
--cc=deller@gmx.de \
--cc=dri-devel@lists.freedesktop.org \
--cc=javierm@redhat.com \
--cc=linus.walleij@linaro.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=tzimmermann@suse.de \
/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 NNTP newsgroup(s).