[PATCH] drm/radeon: Disable outputs when releasing fbdev client
Alex Deucher
alexdeucher at gmail.com
Fri Jun 9 19:09:46 UTC 2023
Applied. Thanks!
Alex
On Fri, Jun 9, 2023 at 1:40 PM Borislav Petkov <bp at alien8.de> wrote:
>
> On Fri, Jun 09, 2023 at 04:03:56PM +0200, Thomas Zimmermann wrote:
> > Disable the modesetting pipeline before release the radeon's fbdev
> > client. Fixes the following error:
> >
> > [ 17.217408] WARNING: CPU: 5 PID: 1464 at drivers/gpu/drm/ttm/ttm_bo.c:326 ttm_bo_release+0x27e/0x2d0 [ttm]
> > [ 17.217418] Modules linked in: edac_mce_amd radeon(+) drm_ttm_helper ttm video drm_suballoc_helper drm_display_helper kvm irqbypass drm_kms_helper syscopyarea crc32_pclmul sysfillrect sha512_ssse3 sysimgblt sha512_generic cfbfillrect cfbimgblt wmi_bmof aesni_intel cfbcopyarea crypto_simd cryptd k10temp acpi_cpufreq wmi dm_mod
> > [ 17.217432] CPU: 5 PID: 1464 Comm: systemd-udevd Not tainted 6.4.0-rc4+ #1
> > [ 17.217436] Hardware name: Micro-Star International Co., Ltd. MS-7A38/B450M PRO-VDH MAX (MS-7A38), BIOS B.G0 07/26/2022
> > [ 17.217438] RIP: 0010:ttm_bo_release+0x27e/0x2d0 [ttm]
> > [ 17.217444] Code: 48 89 43 38 48 89 43 40 48 8b 5c 24 30 48 8b b5 40 08 00 00 48 8b 6c 24 38 48 83 c4 58 e9 7a 49 f7 e0 48 89 ef e9 6c fe ff ff <0f> 0b 48 83 7b 20 00 0f 84 b7 fd ff ff 0f 0b 0f 1f 00 e9 ad fd ff
> > [ 17.217448] RSP: 0018:ffffc9000095fbb0 EFLAGS: 00010202
> > [ 17.217451] RAX: 0000000000000001 RBX: ffff8881052c8de0 RCX: 0000000000000000
> > [ 17.217453] RDX: 0000000000000001 RSI: 0000000000000000 RDI: ffff8881052c8de0
> > [ 17.217455] RBP: ffff888104a66e00 R08: ffff8881052c8de0 R09: ffff888104a7cf08
> > [ 17.217457] R10: ffffc9000095fbe0 R11: ffffc9000095fbe8 R12: ffff8881052c8c78
> > [ 17.217458] R13: ffff8881052c8c78 R14: dead000000000100 R15: ffff88810528b108
> > [ 17.217460] FS: 00007f319fcbb8c0(0000) GS:ffff88881a540000(0000) knlGS:0000000000000000
> > [ 17.217463] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > [ 17.217464] CR2: 000055dc8b0224a0 CR3: 000000010373d000 CR4: 0000000000750ee0
> > [ 17.217466] PKRU: 55555554
> > [ 17.217468] Call Trace:
> > [ 17.217470] <TASK>
> > [ 17.217472] ? __warn+0x97/0x160
> > [ 17.217476] ? ttm_bo_release+0x27e/0x2d0 [ttm]
> > [ 17.217481] ? report_bug+0x1ec/0x200
> > [ 17.217487] ? handle_bug+0x3c/0x70
> > [ 17.217490] ? exc_invalid_op+0x1f/0x90
> > [ 17.217493] ? preempt_count_sub+0xb5/0x100
> > [ 17.217496] ? asm_exc_invalid_op+0x16/0x20
> > [ 17.217500] ? ttm_bo_release+0x27e/0x2d0 [ttm]
> > [ 17.217505] ? ttm_resource_move_to_lru_tail+0x1ab/0x1d0 [ttm]
> > [ 17.217511] radeon_bo_unref+0x1a/0x30 [radeon]
> > [ 17.217547] radeon_gem_object_free+0x20/0x30 [radeon]
> > [ 17.217579] radeon_fbdev_fb_destroy+0x57/0x90 [radeon]
> > [ 17.217616] unregister_framebuffer+0x72/0x110
> > [ 17.217620] drm_client_dev_unregister+0x6d/0xe0
> > [ 17.217623] drm_dev_unregister+0x2e/0x90
> > [ 17.217626] drm_put_dev+0x26/0x90
> > [ 17.217628] pci_device_remove+0x44/0xc0
> > [ 17.217631] really_probe+0x257/0x340
> > [ 17.217635] __driver_probe_device+0x73/0x120
> > [ 17.217638] driver_probe_device+0x2c/0xb0
> > [ 17.217641] __driver_attach+0xa0/0x150
> > [ 17.217643] ? __pfx___driver_attach+0x10/0x10
> > [ 17.217646] bus_for_each_dev+0x67/0xa0
> > [ 17.217649] bus_add_driver+0x10e/0x210
> > [ 17.217651] driver_register+0x5c/0x120
> > [ 17.217653] ? __pfx_radeon_module_init+0x10/0x10 [radeon]
> > [ 17.217681] do_one_initcall+0x44/0x220
> > [ 17.217684] ? kmalloc_trace+0x37/0xc0
> > [ 17.217688] do_init_module+0x64/0x240
> > [ 17.217691] __do_sys_finit_module+0xb2/0x100
> > [ 17.217694] do_syscall_64+0x3b/0x90
> > [ 17.217697] entry_SYSCALL_64_after_hwframe+0x72/0xdc
> > [ 17.217700] RIP: 0033:0x7f319feaa5a9
> > [ 17.217702] Code: 08 89 e8 5b 5d c3 66 2e 0f 1f 84 00 00 00 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 27 08 0d 00 f7 d8 64 89 01 48
> > [ 17.217706] RSP: 002b:00007ffc6bf3e7f8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
> > [ 17.217709] RAX: ffffffffffffffda RBX: 00005607204f3170 RCX: 00007f319feaa5a9
> > [ 17.217710] RDX: 0000000000000000 RSI: 00007f31a002eefd RDI: 0000000000000018
> > [ 17.217712] RBP: 00007f31a002eefd R08: 0000000000000000 R09: 00005607204f1860
> > [ 17.217714] R10: 0000000000000018 R11: 0000000000000246 R12: 0000000000020000
> > [ 17.217716] R13: 0000000000000000 R14: 0000560720522450 R15: 0000560720255899
> > [ 17.217718] </TASK>
> > [ 17.217719] ---[ end trace 0000000000000000 ]---
> >
> > The buffer object backing the fbdev emulation got pinned twice: by the
> > fb_probe helper radeon_fbdev_create_pinned_object() and the modesetting
> > code when the framebuffer got displayed. It only got unpinned once by
> > the fbdev helper radeon_fbdev_destroy_pinned_object(). Hence TTM's BO-
> > release function complains about the pin counter. Forcing the outputs
> > off also undoes the modesettings pin increment.
> >
> > Reported-by: Borislav Petkov <bp at alien8.de>
> > Closes: https://lore.kernel.org/dri-devel/20230603174814.GCZHt83pN+wNjf63sC@fat_crate.local/
> > Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
> > Fixes: e317a69fe891 ("drm/radeon: Implement client-based fbdev emulation")
> > Cc: Alex Deucher <alexander.deucher at amd.com>
> > Cc: Thomas Zimmermann <tzimmermann at suse.de>
> > Cc: "Christian König" <christian.koenig at amd.com>
> > Cc: "Pan, Xinhui" <Xinhui.Pan at amd.com>
> > Cc: amd-gfx at lists.freedesktop.org
> > ---
> > drivers/gpu/drm/radeon/radeon_fbdev.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/gpu/drm/radeon/radeon_fbdev.c b/drivers/gpu/drm/radeon/radeon_fbdev.c
> > index 28212c2d6c98..ab9c1abbac97 100644
> > --- a/drivers/gpu/drm/radeon/radeon_fbdev.c
> > +++ b/drivers/gpu/drm/radeon/radeon_fbdev.c
> > @@ -304,6 +304,7 @@ static void radeon_fbdev_client_unregister(struct drm_client_dev *client)
> >
> > if (fb_helper->info) {
> > vga_switcheroo_client_fb_set(rdev->pdev, NULL);
> > + drm_helper_force_disable_all(dev);
> > drm_fb_helper_unregister_info(fb_helper);
> > } else {
> > drm_client_release(&fb_helper->client);
> > --
>
> Thanks, that takes care of it.
>
> Btw, I'd trim that splat in the commit message above so that it is more
> readable. But that's for the committer to decide.
>
> Tested-by: Borislav Petkov (AMD) <bp at alien8.de>
>
> --
> Regards/Gruss,
> Boris.
>
> https://people.kernel.org/tglx/notes-about-netiquette
More information about the dri-devel
mailing list