All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Stein <alexander.stein@ew.tq-group.com>
To: Thomas Zimmermann <tzimmermann@suse.de>, 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,
	Linus Walleij <linus.walleij@linaro.org>
Subject: Re: [PATCH v3 21/43] drm/fbdev-dma: Implement damage handling and deferred I/O
Date: Wed, 04 Sep 2024 08:09:25 +0200	[thread overview]
Message-ID: <12510239.O9o76ZdvQC@steina-w> (raw)
In-Reply-To: <CACRpkdb+hb9AGavbWpY-=uQQ0apY9en_tWJioPKf_fAbXMP4Hg@mail.gmail.com>

Hi Linus,

Am Mittwoch, 4. September 2024, 00:53:42 CEST 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):

This commit also breaks i.MX6 on actual hardware, see [1].

[1] https://lore.kernel.org/all/23636953.6Emhk5qWAg@steina-w/

> 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>;

Can you please check in which memory zone this VRAM is located. In my case
it's important CMA is located in Normal zone to trigger this problem.

Best regards,
Alexander

>                         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/



  reply	other threads:[~2024-09-04  6:09 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 [this message]
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
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=12510239.O9o76ZdvQC@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.