[Intel-xe] [PATCH] drm/xe/vm: Use the correct vma destroy sequence on userptr failure
Thomas Hellström
thomas.hellstrom at linux.intel.com
Fri Mar 10 14:43:35 UTC 2023
On Wed, 2023-03-08 at 23:22 -0800, Niranjana Vishwanathapura wrote:
> On Wed, Mar 08, 2023 at 08:10:13PM +0100, Thomas Hellström wrote:
> > Fix the below warning by using the correct vma destroy sequence:
> >
> > [ 92.204921] ------------[ cut here ]------------
> > [ 92.204954] WARNING: CPU: 3 PID: 2449 at
> > drivers/gpu/drm/xe/xe_vm.c:933 xe_vma_destroy+0x280/0x290 [xe]
>
> Unrelated to this patch...not sure why this warning is only there for
> userptr BOs whereas prep_vma_destroy() is required for all BOs.
Thanks for reviewing, Niranjana. IIRC I added that warning while doing
a big userptr overhaul without looking as to whether it was needed for
bos as well.
Thanks,
Thomas
>
> This patch looks good to me.
> Reviewed-by: Niranjana Vishwanathapura
> <niranjana.vishwanathapura at intel.com>
>
> > [ 92.205002] Modules linked in: ccm nft_objref cmac
> > 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 nf_tables nfnetlink
> > ip6table_filter iptable_filter bnep sunrpc vfat fat iwlmvm mac80211
> > intel_rapl_msr ee1004 ppdev intel_rapl_common snd_hda_codec_realtek
> > libarc4 iTCO_wdt snd_hda_codec_generic intel_pmc_bxt
> > x86_pkg_temp_thermal iTCO_vendor_support intel_powerclamp coretemp
> > intel_cstate iwlwifi btusb btrtl btbcm snd_hda_intel btintel
> > snd_intel_dspcfg eeepc_wmi snd_hda_codec asus_wmi bluetooth
> > snd_hwdep snd_seq ledtrig_audio snd_hda_core snd_seq_device
> > sparse_keymap cfg80211 snd_pcm intel_uncore joydev platform_profile
> > mei_me wmi_bmof intel_wmi_thunderbolt snd_timer pcspkr ecdh_generic
> > i2c_i801 snd
> > [ 92.205060] ecc mei rfkill soundcore idma64 i2c_smbus
> > parport_pc parport acpi_pad acpi_tad xe drm_ttm_helper ttm
> > i2c_algo_bit drm_suballoc_helper kunit drm_buddy gpu_sched
> > drm_display_helper drm_kms_helper drm crct10dif_pclmul crc32_pclmul
> > crc32c_intel nvme nvme_core e1000e ghash_clmulni_intel
> > drm_panel_orientation_quirks video wmi pinctrl_tigerlake
> > usb_storage ip6_tables ip_tables fuse
> > [ 92.205242] CPU: 3 PID: 2449 Comm: xe_vm Tainted: G
> > U 6.1.0+ #120
> > [ 92.205254] Hardware name: ASUS System Product Name/PRIME B560M-
> > A AC, BIOS 0403 01/26/2021
> > [ 92.205266] RIP: 0010:xe_vma_destroy+0x280/0x290 [xe]
> > [ 92.205299] Code: 74 15 48 8b 93 a0 01 00 00 48 8b 83 a8 01 00
> > 00 48 89 42 08 48 89 10 4c 89 ab a0 01 00 00 4c 89 ab a8 01 00 00
> > e9 1b fe ff ff <0f> 0b e9 a3 fe ff ff 0f 0b e9 82 fe ff ff 66 90 0f
> > 1f 44 00 00 48
> > [ 92.205322] RSP: 0018:ffffaadd465c3a58 EFLAGS: 00010246
> > [ 92.205331] RAX: 0000000000000000 RBX: ffff9706d53ed400 RCX:
> > 0000000000000001
> > [ 92.205341] RDX: ffff9706d53ed480 RSI: ffffffffa756dc2b RDI:
> > ffffffffa760a05e
> > [ 92.205351] RBP: 0000000000000000 R08: 0000000000000000 R09:
> > 000000002c5370a2
> > [ 92.205361] R10: ffff9706ca520000 R11: 0000000022c5370a R12:
> > ffff9706cad03800
> > [ 92.205370] R13: 000000000004ffff R14: fffffffffffffff2 R15:
> > 0000000000000000
> > [ 92.205380] FS: 00007fe98203a940(0000)
> > GS:ffff970dffac0000(0000) knlGS:0000000000000000
> > [ 92.205392] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > [ 92.205400] CR2: 00007fe982ccb000 CR3: 000000010d6e6003 CR4:
> > 0000000000770ee0
> > [ 92.205410] PKRU: 55555554
> > [ 92.205415] Call Trace:
> > [ 92.205419] <TASK>
> > [ 92.205426] vm_bind_ioctl_lookup_vma+0x9bb/0xbf0 [xe]
> > [ 92.205461] ? lock_is_held_type+0xe3/0x140
> > [ 92.205472] ? xe_vm_find_overlapping_vma+0x77/0x90 [xe]
> > [ 92.205503] ? __vm_bind_ioctl_lookup_vma.constprop.0+0x9e/0xe0
> > [xe]
> > [ 92.205533] ? __lock_acquire+0x3a3/0x1fb0
> > [ 92.205543] ? register_lock_class+0x38/0x480
> > [ 92.205550] ? __lock_acquire+0x3a3/0x1fb0
> > [ 92.205558] ? __lock_acquire+0x3a3/0x1fb0
> > [ 92.205567] ? __lock_acquire+0x3a3/0x1fb0
> > [ 92.205579] ? lock_acquire+0xbf/0x2b0
> > [ 92.205586] ? lock_acquire+0xcf/0x2b0
> > [ 92.205597] xe_vm_bind_ioctl+0x977/0x1c30 [xe]
> > [ 92.205630] ? find_held_lock+0x2b/0x80
> > [ 92.205640] ? lock_release+0x131/0x2c0
> > [ 92.205648] ? xe_vm_ttm_bo+0x40/0x40 [xe]
> > [ 92.205677] drm_ioctl_kernel+0xa1/0x150 [drm]
> > [ 92.205706] drm_ioctl+0x221/0x420 [drm]
> > [ 92.205727] ? xe_vm_ttm_bo+0x40/0x40 [xe]
> > [ 92.205764] __x64_sys_ioctl+0x8d/0xd0
> > [ 92.205774] do_syscall_64+0x37/0x90
> > [ 92.205781] entry_SYSCALL_64_after_hwframe+0x63/0xcd
> > [ 92.205790] RIP: 0033:0x7fe982be8d6f
> > [ 92.205797] Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04
> > 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10
> > 00 00 00 0f 05 <89> c2 3d 00 f0 ff ff 77 18 48 8b 44 24 18 64 48 2b
> > 04 25 28 00 00
> > [ 92.205821] RSP: 002b:00007ffde9f9c560 EFLAGS: 00000246
> > ORIG_RAX: 0000000000000010
> > [ 92.205832] RAX: ffffffffffffffda RBX: 00007fadeadbe000 RCX:
> > 00007fe982be8d6f
> > [ 92.205842] RDX: 00007ffde9f9c5f0 RSI: 0000000040786445 RDI:
> > 0000000000000003
> > [ 92.205851] RBP: 00007ffde9f9c5f0 R08: 00007fadeadbe000 R09:
> > 0000000000040000
> > [ 92.205861] R10: 0000000000000003 R11: 0000000000000246 R12:
> > 0000000040786445
> > [ 92.205871] R13: 0000000000000003 R14: 0000000000000003 R15:
> > 00007fe982e02000
> > [ 92.205888] </TASK>
> > [ 92.205892] irq event stamp: 82723
> > [ 92.205897] hardirqs last enabled at (82731):
> > [<ffffffffa617660e>] __up_console_sem+0x5e/0x70
> > [ 92.205910] hardirqs last disabled at (82738):
> > [<ffffffffa61765f3>] __up_console_sem+0x43/0x70
> > [ 92.205922] softirqs last enabled at (82182):
> > [<ffffffffa60f026d>] __irq_exit_rcu+0xed/0x160
> > [ 92.205935] softirqs last disabled at (82163):
> > [<ffffffffa60f026d>] __irq_exit_rcu+0xed/0x160
> > [ 92.205947] ---[ end trace 0000000000000000 ]---
> >
> > Reported-by: Francois Dugast <francois.dugast at intel.com>
> > Signed-off-by: Thomas Hellström <thomas.hellstrom at linux.intel.com>
> > ---
> > drivers/gpu/drm/xe/xe_vm.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/xe/xe_vm.c
> > b/drivers/gpu/drm/xe/xe_vm.c
> > index 6cf7172e84cc..e8e178922082 100644
> > --- a/drivers/gpu/drm/xe/xe_vm.c
> > +++ b/drivers/gpu/drm/xe/xe_vm.c
> > @@ -2811,7 +2811,8 @@ static struct xe_vma
> > *vm_bind_ioctl_lookup_vma(struct xe_vm *vm,
> >
> > err = xe_vma_userptr_pin_pages(vma);
> > if (err) {
> > - xe_vma_destroy(vma, NULL);
> > + prep_vma_destroy(vm, vma);
> > + xe_vma_destroy_unlocked(vma);
> >
> > return ERR_PTR(err);
> > } else {
> > --
> > 2.39.2
> >
More information about the Intel-xe
mailing list