Re: [PATCH v5 0/7] drm/mgag200: Implement VBLANK support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

Am 10.10.24 um 20:12 schrieb Luck, Tony:
Apologies. The trace below isn't the first place where things went wrong. I dug up the full serial log
and found some earlier mgag errors. Actual first one is:

I have to apologize, as the patch I sent was incorrect. The if condition was inverted. Here's a fixed patch for you to test.

Best regards
Thomas


[  OK  ] Reached target Basic System.
[   32.366479] fbcon: mgag200drmfb (fb0) is primary device
[   32.405678] mpt2sas_cm0: sense pool(0x00000000dfa0f36f) - dma(0xf500000): depth(2939), element_size(96), pool_size (275 kB)
[   32.405790] mpt2sas_cm0: reply pool(0x000000004919fe15) - dma(0xf580000): depth(3264), frame_size(128), pool_size(408 kB)
[   32.405804] mpt2sas_cm0: config page(0x00000000ac9398d5) - dma(0xf2e4000): size(512)
[   32.405806] mpt2sas_cm0: Allocated physical memory: size(7012 kB)
[   32.405808] mpt2sas_cm0: Current Controller Queue Depth(2936),Max Controller Queue Depth(3072)
[   32.405810] mpt2sas_cm0: Scatter Gather Elements per IO(128)
[   32.436831] ixgbe 0000:03:00.0: 16.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x4 link at 0000:00:03.2 (capable of 32.000 Gb/s with 5.0 GT/s PCIe x8 link)
[   32.454205] mpt2sas_cm0: LSISAS2308: FWVersion(17.00.01.00), ChipRevision(0x05)
[   32.454218] mpt2sas_cm0: Intel(R) Controller: Subsystem ID: 0x3050
[   32.454222] mpt2sas_cm0: Protocol=(Initiator), Capabilities=(Raid,TLR,EEDP,Snapshot Buffer,Diag Trace Buffer,Task Set Full,NCQ)
[   32.454513] scsi host6: Fusion MPT SAS Host
[   32.461960] mpt2sas_cm0: sending port enable !!
[   32.520483] ------------[ cut here ]------------
[   32.520517] [CRTC:34:crtc-0] vblank wait timed out
[   32.520582] WARNING: CPU: 114 PID: 1783 at drivers/gpu/drm/drm_atomic_helper.c:1682 drm_atomic_helper_wait_for_vblanks.part.0+0x24f/0x260 [drm_kms_helper]
[   32.520603] Modules linked in: crct10dif_pclmul crc32_pclmul mgag200(+) crc32c_intel i2c_algo_bit ghash_clmulni_intel drm_shmem_helper sha512_ssse3 drm_kms_helper sha256_ssse3 mpt3sas sha1_ssse3 ixgbe(+) raid_class mdio drm scsi_transport_sas dca fuse
[   32.520631] CPU: 114 UID: 0 PID: 1783 Comm: systemd-udevd Not tainted 6.12.0-rc2+ #171
[   32.520634] Hardware name: Intel Corporation BRICKLAND/BRICKLAND, BIOS BRBDXSD1.86B.0338.V01.1603162127 03/16/2016
[   32.520637] RIP: 0010:drm_atomic_helper_wait_for_vblanks.part.0+0x24f/0x260 [drm_kms_helper]
[   32.520648] Code: 00 48 8d 7b 08 e8 41 b7 38 d1 45 85 ff 0f 85 d3 fe ff ff 49 8b 56 20 41 8b b6 d8 00 00 00 48 c7 c7 b0 40 df c0 e8 21 61 30 d1 <0f> 0b e9 b5 fe ff ff 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90
[   32.520651] RSP: 0018:ffffbb9f23fc3680 EFLAGS: 00010282
[   32.520655] RAX: 0000000000000026 RBX: ffff9de18562e028 RCX: 0000000000000000
[   32.520657] RDX: 0000000000000002 RSI: ffffffff93a00e78 RDI: 00000000ffffffff
[   32.520659] RBP: ffff9de18540eb40 R08: 0000000000000001 R09: 0000000000000000
[   32.520662] R10: 0000000000000001 R11: 0000000000000001 R12: 0000000000000000
[   32.520664] R13: 0000000000000000 R14: ffff9de0ada653f0 R15: 0000000000000000
[   32.520667] FS:  00007f64988d9b40(0000) GS:ffff9de187900000(0000) knlGS:0000000000000000
[   32.520669] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   32.520671] CR2: 000055daa91a4b40 CR3: 000000000c13c003 CR4: 00000000003706f0
[   32.520674] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[   32.520675] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[   32.520677] Call Trace:
[   32.520680]  <TASK>
[   32.520682]  ? __warn+0x90/0x1a0
[   32.520693]  ? drm_atomic_helper_wait_for_vblanks.part.0+0x24f/0x260 [drm_kms_helper]
[   32.520703]  ? report_bug+0x1c3/0x1d0
[   32.520716]  ? handle_bug+0x5b/0xa0
[   32.520724]  ? exc_invalid_op+0x14/0x70
[   32.520727]  ? asm_exc_invalid_op+0x16/0x20
[   32.520741]  ? drm_atomic_helper_wait_for_vblanks.part.0+0x24f/0x260 [drm_kms_helper]
[   32.520753]  ? __pfx_autoremove_wake_function+0x10/0x10
[   32.520766]  drm_atomic_helper_commit_tail+0x71/0x80 [drm_kms_helper]
[   32.520776]  mgag200_mode_config_helper_atomic_commit_tail+0x28/0x40 [mgag200]
[   32.520784]  commit_tail+0x94/0x130 [drm_kms_helper]
[   32.520796]  drm_atomic_helper_commit+0x13e/0x170 [drm_kms_helper]
[   32.520807]  drm_atomic_commit+0x97/0xb0 [drm]
[   32.520850]  ? __pfx___drm_printfn_info+0x10/0x10 [drm]
[   32.520881]  drm_client_modeset_commit_atomic+0x207/0x250 [drm]
[   32.520918]  drm_client_modeset_commit_locked+0x5b/0x190 [drm]
[   32.520945]  drm_client_modeset_commit+0x24/0x50 [drm]
[   32.520970]  __drm_fb_helper_restore_fbdev_mode_unlocked+0x95/0xd0 [drm_kms_helper]
[   32.520982]  drm_fb_helper_set_par+0x2e/0x40 [drm_kms_helper]
[   32.520992]  fbcon_init+0x2a8/0x560
[   32.521005]  visual_init+0xc4/0x120
[   32.521013]  do_bind_con_driver.isra.0+0x1a1/0x3d0
[   32.521020]  do_take_over_console+0x10b/0x1a0
[   32.521026]  do_fbcon_takeover+0x5c/0xc0
[   32.521028]  fbcon_fb_registered+0x49/0x70
[   32.521032]  do_register_framebuffer+0x184/0x230
[   32.521041]  register_framebuffer+0x20/0x40
[   32.521044]  __drm_fb_helper_initial_config_and_unlock+0x33e/0x590 [drm_kms_helper]
[   32.521054]  ? drm_client_register+0x33/0xc0 [drm]
[   32.521084]  drm_fbdev_shmem_client_hotplug+0x6c/0xc0 [drm_shmem_helper]
[   32.521090]  drm_client_register+0x7b/0xc0 [drm]
[   32.521116]  mgag200_pci_probe+0x90/0x180 [mgag200]
[   32.521124]  local_pci_probe+0x46/0xa0
[   32.521131]  pci_device_probe+0xb5/0x220
[   32.521138]  really_probe+0xd9/0x380
[   32.521146]  __driver_probe_device+0x78/0x150
[   32.521151]  driver_probe_device+0x1e/0x90
[   32.521155]  __driver_attach+0xd6/0x1d0
[   32.521159]  ? __pfx___driver_attach+0x10/0x10
[   32.521162]  bus_for_each_dev+0x66/0xa0
[   32.521167]  bus_add_driver+0x111/0x240
[   32.521173]  driver_register+0x5c/0x120
[   32.521176]  ? __pfx_mgag200_pci_driver_init+0x10/0x10 [mgag200]
[   32.521182]  do_one_initcall+0x62/0x3a0
[   32.521189]  ? __kmalloc_cache_noprof+0x240/0x300
[   32.521202]  do_init_module+0x64/0x240
[   32.521213]  init_module_from_file+0x7a/0xa0
[   32.521226]  idempotent_init_module+0x15f/0x260
[   32.521240]  __x64_sys_finit_module+0x5a/0xb0
[   32.521245]  do_syscall_64+0x73/0x190
[   32.521260]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
[   32.521265] RIP: 0033:0x7f649951ee0d
[   32.521271] Code: c8 0c 00 0f 05 eb a9 66 0f 1f 44 00 00 f3 0f 1e fa 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 3b 80 0c 00 f7 d8 64 89 01 48
[   32.521273] RSP: 002b:00007ffc84905b08 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
[   32.521278] RAX: ffffffffffffffda RBX: 000055daa9188020 RCX: 00007f649951ee0d
[   32.521280] RDX: 0000000000000000 RSI: 00007f649967832c RDI: 0000000000000010
[   32.521282] RBP: 0000000000020000 R08: 0000000000000000 R09: 0000000000000000
[   32.521284] R10: 0000000000000010 R11: 0000000000000246 R12: 00007f649967832c
[   32.521286] R13: 000055daa9189330 R14: 0000000000000007 R15: 000055daa91adb10
[   32.521298]  </TASK>
[   32.521300] irq event stamp: 52913
[   32.521301] hardirqs last  enabled at (52919): [<ffffffff92187784>] vprintk_emit+0x3d4/0x3e0
[   32.521313] hardirqs last disabled at (52924): [<ffffffff92187737>] vprintk_emit+0x387/0x3e0
[   32.521317] softirqs last  enabled at (52274): [<ffffffff920dac91>] __irq_exit_rcu+0xa1/0x110
[   32.521326] softirqs last disabled at (52267): [<ffffffff920dac91>] __irq_exit_rcu+0xa1/0x110
[   32.521329] ---[ end trace 0000000000000000 ]---

-----Original Message-----
From: Luck, Tony
Sent: Thursday, October 10, 2024 9:07 AM
To: Thomas Zimmermann <tzimmermann@xxxxxxx>
Cc: jfalempe@xxxxxxxxxx; airlied@xxxxxxxxxx; sam@xxxxxxxxxxxx; emil.l.velikov@xxxxxxxxx; maarten.lankhorst@xxxxxxxxxxxxxxx; mripard@xxxxxxxxxx; airlied@xxxxxxxxx; daniel@xxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx
Subject: RE: [PATCH v5 0/7] drm/mgag200: Implement VBLANK support

Thanks for testing. Here's another patch to try Ville's suggestion. It
should disable HW vblank IRQs on your system. Could you please test it
and report on the results?
Thomas,

Thanks for keeping working on this. Output is different, but still dies with vblank problems.

[  OK  ] Started GNOME Display Manager.
[  329.575813] mgag200 0000:08:00.0: [drm] *ERROR* flip_done timed out
[  329.582889] mgag200 0000:08:00.0: [drm] *ERROR* [PLANE:32:plane-0] commit wait timed out
[  329.719779] ------------[ cut here ]------------
[  329.725174] [CRTC:34:crtc-0] vblank wait timed out
[  329.730724] WARNING: CPU: 150 PID: 1402 at drivers/gpu/drm/drm_atomic_helper.c:1682 drm_atomic_helper_wait_for_vblanks.part.0+0x24f/0x260 [drm_kms_helper]
[  329.746264] Modules linked in: xt_CHECKSUM xt_MASQUERADE xt_conntrack ipt_REJECT nf_nat_tftp nf_conntrack_tftp bridge stp llc nf_conntrack_netbios_ns nf_conntrack_broadcast nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nft_chain_nat ip6table_nat ip6table_mangle ip6table_raw ip6table_security iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 iptable_mangle iptable_raw iptable_security ip_set rfkill nf_tables nfnetlink ip6table_filter ip6_tables iptable_filter sunrpc vfat fat intel_rapl_msr intel_rapl_common intel_uncore_frequency intel_uncore_frequency_common sb_edac iTCO_wdt intel_pmc_bxt iTCO_vendor_support x86_pkg_temp_thermal intel_powerclamp ipmi_ssif coretemp rapl intel_cstate joydev intel_uncore acpi_ipmi pcspkr mei_me i2c_i801 i2c_smbus ipmi_si lpc_ich mei ioatdma wmi ipmi_devintf ipmi_msghandler acpi_pad zram ip_tables crct10dif_pclmul crc32_pclmul mgag200 crc32c_intel i2c_algo_bit ghash_clmulni_intel drm_shmem_helper sha512_ssse3
[  329.746604]  drm_kms_helper sha256_ssse3 mpt3sas sha1_ssse3 ixgbe raid_class mdio drm scsi_transport_sas dca fuse
[  329.858506] CPU: 150 UID: 0 PID: 1402 Comm: kworker/150:1 Tainted: G        W          6.12.0-rc2+ #171
[  329.869030] Tainted: [W]=WARN
[  329.872357] Hardware name: Intel Corporation BRICKLAND/BRICKLAND, BIOS BRBDXSD1.86B.0338.V01.1603162127 03/16/2016
[  329.883941] Workqueue: events drm_fb_helper_damage_work [drm_kms_helper]
[  329.891472] RIP: 0010:drm_atomic_helper_wait_for_vblanks.part.0+0x24f/0x260 [drm_kms_helper]
[  329.900937] Code: 00 48 8d 7b 08 e8 41 b7 38 d1 45 85 ff 0f 85 d3 fe ff ff 49 8b 56 20 41 8b b6 d8 00 00 00 48 c7 c7 b0 40 df c0 e8 21 61 30 d1 <0f> 0b e9 b5 fe ff ff 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90
[  329.921932] RSP: 0018:ffffbb9f23277c00 EFLAGS: 00010286
[  329.927797] RAX: 0000000000000026 RBX: ffff9de18562e028 RCX: 0000000000000000
[  329.935793] RDX: 0000000000000002 RSI: ffffffff93a00e78 RDI: 00000000ffffffff
[  329.943786] RBP: ffff9e13d910dc80 R08: 0000000000000000 R09: ffffbb9f23277ac0
[  329.951778] R10: ffffbb9f23277ab8 R11: ffff9e33811fffe8 R12: 0000000000000000
[  329.959784] R13: 0000000000000000 R14: ffff9de0ada653f0 R15: 0000000000000000
[  329.967777] FS:  0000000000000000(0000) GS:ffff9e2032100000(0000) knlGS:0000000000000000
[  329.976838] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  329.983280] CR2: 0000555ce9d0d030 CR3: 0000003eccc3a004 CR4: 00000000003706f0
[  329.991273] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[  329.999268] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[  330.007262] Call Trace:
[  330.010011]  <TASK>
[  330.012383]  ? __warn+0x90/0x1a0
[  330.016022]  ? drm_atomic_helper_wait_for_vblanks.part.0+0x24f/0x260 [drm_kms_helper]
[  330.024803]  ? report_bug+0x1c3/0x1d0
[  330.028924]  ? __irq_work_queue_local+0x48/0x130
[  330.034116]  ? handle_bug+0x5b/0xa0
[  330.038043]  ? exc_invalid_op+0x14/0x70
[  330.042353]  ? asm_exc_invalid_op+0x16/0x20
[  330.047064]  ? drm_atomic_helper_wait_for_vblanks.part.0+0x24f/0x260 [drm_kms_helper]
[  330.055851]  ? __pfx_autoremove_wake_function+0x10/0x10
[  330.061723]  drm_atomic_helper_commit_tail+0x71/0x80 [drm_kms_helper]
[  330.068954]  mgag200_mode_config_helper_atomic_commit_tail+0x28/0x40 [mgag200]
[  330.077057]  commit_tail+0x94/0x130 [drm_kms_helper]
[  330.082642]  drm_atomic_helper_commit+0x13e/0x170 [drm_kms_helper]
[  330.089597]  drm_atomic_commit+0x97/0xb0 [drm]
[  330.094706]  ? __pfx___drm_printfn_info+0x10/0x10 [drm]
[  330.100624]  drm_atomic_helper_dirtyfb+0x185/0x250 [drm_kms_helper]
[  330.107672]  drm_fbdev_shmem_helper_fb_dirty+0x4c/0xb0 [drm_shmem_helper]
[  330.115282]  drm_fb_helper_damage_work+0x83/0x150 [drm_kms_helper]
[  330.122221]  process_one_work+0x214/0x600
[  330.126727]  worker_thread+0x17f/0x320
[  330.130932]  ? __pfx_worker_thread+0x10/0x10
[  330.135714]  kthread+0xe0/0x110
[  330.139245]  ? __pfx_kthread+0x10/0x10
[  330.143455]  ret_from_fork+0x30/0x50
[  330.147473]  ? __pfx_kthread+0x10/0x10
[  330.151683]  ret_from_fork_asm+0x1a/0x30
[  330.156104]  </TASK>
[  330.158553] irq event stamp: 68963
[  330.162368] hardirqs last  enabled at (68975): [<ffffffff92183fae>] __up_console_sem+0x5e/0x70
[  330.172011] hardirqs last disabled at (68986): [<ffffffff92183f93>] __up_console_sem+0x43/0x70
[  330.181647] softirqs last  enabled at (68850): [<ffffffff920dac91>] __irq_exit_rcu+0xa1/0x110
[  330.191195] softirqs last disabled at (69007): [<ffffffff920dac91>] __irq_exit_rcu+0xa1/0x110
[  330.200734] ---[ end trace 0000000000000000 ]---
[  340.327342] mgag200 0000:08:00.0: [drm] *ERROR* flip_done timed out
[  340.334379] mgag200 0000:08:00.0: [drm] *ERROR* [CRTC:34:crtc-0] commit wait timed out
[  350.566891] mgag200 0000:08:00.0: [drm] *ERROR* flip_done timed out
[  350.573925] mgag200 0000:08:00.0: [drm] *ERROR* [PLANE:32:plane-0] commit wait timed out
[  350.710886] ------------[ cut here ]------------

--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)

From d76dae9a08af85d21f6726c7aa4cdbd4c811f813 Mon Sep 17 00:00:00 2001
From: Thomas Zimmermann <tzimmermann@xxxxxxx>
Date: Thu, 10 Oct 2024 11:15:49 +0200
Subject: [PATCH] mgag200: disable vblank on buggy hardware

---
 drivers/gpu/drm/mgag200/mgag200_g200se.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/mgag200/mgag200_g200se.c b/drivers/gpu/drm/mgag200/mgag200_g200se.c
index 9dcbe8304271..be209852bbf8 100644
--- a/drivers/gpu/drm/mgag200/mgag200_g200se.c
+++ b/drivers/gpu/drm/mgag200/mgag200_g200se.c
@@ -517,9 +517,11 @@ struct mga_device *mgag200_g200se_device_create(struct pci_dev *pdev, const stru
 	drm_mode_config_reset(dev);
 	drm_kms_helper_poll_init(dev);
 
-	ret = drm_vblank_init(dev, 1);
-	if (ret)
-		return ERR_PTR(ret);
+	if (!info->bug_no_startadd) {
+		ret = drm_vblank_init(dev, 1);
+		if (ret)
+			return ERR_PTR(ret);
+	}
 
 	return mdev;
 }
-- 
2.46.0


[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux