-----Original Message----- From: Lin, Shuicheng <shuicheng.lin@xxxxxxxxx> Sent: Friday, March 7, 2025 3:26 PM To: Cavitt, Jonathan <jonathan.cavitt@xxxxxxxxx>; intel-xe@xxxxxxxxxxxxxxxxxxxxx Cc: Gupta, saurabhg <saurabhg.gupta@xxxxxxxxx>; Zuo, Alex <alex.zuo@xxxxxxxxx>; joonas.lahtinen@xxxxxxxxxxxxxxx; Brost, Matthew <matthew.brost@xxxxxxxxx>; Zhang, Jianxun <jianxun.zhang@xxxxxxxxx>; dri-devel@xxxxxxxxxxxxxxxxxxxxx Subject: RE: [PATCH v6 0/6] drm/xe/xe_vm: Implement xe_vm_get_faults_ioctl > > One generic question, do we have test case to verify whether the function is working correctly? Thanks. > I think we could have IGT test case to trigger the fault, then have another IGT test case to query it with this new uapi. > And make sure we could get the expected data with the new uapi. That's the plan for the future, but this series has been so in-the-air for a while now that making an IGT series for testing it didn't make sense, since the uapi itself could change at a moment's notice and render any IGT tests immediately obsolete. I'll create IGT tests verifying this series in the next two to three days, now that the uapi has more-or-less been accepted with very few blocking notes. -Jonathan Cavitt > > Shuicheng > > On Fri, Mar 7, 2025 2:41 PM Cavitt, Jonathan wrote > > Add additional information to each VM so they can report up to the first > > 50 seen pagefaults. Only failed pagefaults are saved this way, as successful > > pagefaults should recover and not need to be reported to userspace. > > > > Additionally, add a new ioctl - xe_vm_get_faults_ioctl - that allows the user to > > query these pagefaults > > > > v2: (Matt Brost) > > - Break full ban list request into a separate property. > > - Reformat drm_xe_vm_get_property struct. > > - Remove need for drm_xe_faults helper struct. > > - Separate data pointer and scalar return value in ioctl. > > - Get address type on pagefault report and save it to the pagefault. > > - Correctly reject writes to read-only VMAs. > > - Miscellaneous formatting fixes. > > > > v3: (Matt Brost) > > - Only allow querying of failed pagefaults > > > > v4: > > - Remove unnecessary size parameter from helper function, as it > > is a property of the arguments. (jcavitt) > > - Remove unnecessary copy_from_user (Jainxun) > > - Set address_precision to 1 (Jainxun) > > - Report max size instead of dynamic size for memory allocation > > purposes. Total memory usage is reported separately. > > > > v5: > > - Return int from xe_vm_get_property_size (Shuicheng) > > - Fix memory leak (Shuicheng) > > - Remove unnecessary size variable (jcavitt) > > > > v6: > > - Free vm after use (Shuicheng) > > - Compress pf copy logic (Shuicheng) > > - Update fault_unsuccessful before storing (Shuicheng) > > - Fix old struct name in comments (Shuicheng) > > - Keep first 50 pagefaults instead of last 50 (Jianxun) > > - Rename ioctl to xe_vm_get_faults_ioctl (jcavitt) > > > > Signed-off-by: Jonathan Cavitt <joanthan.cavitt@xxxxxxxxx> > > Suggested-by: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > > Suggested-by: Matthew Brost <matthew.brost@xxxxxxxxx> > > CC: Zhang Jianxun <jianxun.zhang@xxxxxxxxx> > > CC: Shuicheng Lin <shuicheng.lin@xxxxxxxxx> > > > > Jonathan Cavitt (6): > > drm/xe/xe_gt_pagefault: Disallow writes to read-only VMAs > > drm/xe/xe_gt_pagefault: Migrate pagefault struct to header > > drm/xe/xe_vm: Add per VM pagefault info > > drm/xe/uapi: Define drm_xe_vm_get_faults > > drm/xe/xe_gt_pagefault: Add address_type field to pagefaults > > drm/xe/xe_vm: Implement xe_vm_get_faults_ioctl > > > > drivers/gpu/drm/xe/xe_device.c | 3 + > > drivers/gpu/drm/xe/xe_gt_pagefault.c | 64 +++++++------- > > drivers/gpu/drm/xe/xe_gt_pagefault.h | 29 +++++++ > > drivers/gpu/drm/xe/xe_vm.c | 120 +++++++++++++++++++++++++++ > > drivers/gpu/drm/xe/xe_vm.h | 8 ++ > > drivers/gpu/drm/xe/xe_vm_types.h | 20 +++++ > > include/uapi/drm/xe_drm.h | 49 +++++++++++ > > 7 files changed, 260 insertions(+), 33 deletions(-) > > > > -- > > 2.43.0 > >