linux-xiaomi-chiron/drivers/gpu/drm/amd/amdkfd
Yifan Zhang f924f3a1f0 drm/amdkfd: fix random KFDSVMRangeTest.SetGetAttributesTest test failure
KFDSVMRangeTest.SetGetAttributesTest randomly fails in stress test.

Note: Google Test filter = KFDSVMRangeTest.*
[==========] Running 18 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 18 tests from KFDSVMRangeTest
[ RUN      ] KFDSVMRangeTest.BasicSystemMemTest
[       OK ] KFDSVMRangeTest.BasicSystemMemTest (30 ms)
[ RUN      ] KFDSVMRangeTest.SetGetAttributesTest
[          ] Get default atrributes
/home/yifan/brahma/libhsakmt/tests/kfdtest/src/KFDSVMRangeTest.cpp:154: Failure
Value of: expectedDefaultResults[i]
  Actual: 4294967295
Expected: outputAttributes[i].value
Which is: 0
/home/yifan/brahma/libhsakmt/tests/kfdtest/src/KFDSVMRangeTest.cpp:154: Failure
Value of: expectedDefaultResults[i]
  Actual: 4294967295
Expected: outputAttributes[i].value
Which is: 0
/home/yifan/brahma/libhsakmt/tests/kfdtest/src/KFDSVMRangeTest.cpp:152: Failure
Value of: expectedDefaultResults[i]
  Actual: 4
Expected: outputAttributes[i].type
Which is: 2
[          ] Setting/Getting atrributes
[  FAILED  ]

the root cause is that svm work queue has not finished when svm_range_get_attr is called, thus
some garbage svm interval tree data make svm_range_get_attr get wrong result. Flush work queue before
iterate svm interval tree.

Signed-off-by: Yifan Zhang <yifan1.zhang@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:59:41 -04:00
..
cik_event_interrupt.c
cik_int.h
cik_regs.h
cwsr_trap_handler.h
cwsr_trap_handler_gfx8.asm
cwsr_trap_handler_gfx9.asm
cwsr_trap_handler_gfx10.asm
Kconfig
kfd_chardev.c
kfd_crat.c
kfd_crat.h
kfd_dbgdev.c
kfd_dbgdev.h
kfd_dbgmgr.c
kfd_dbgmgr.h
kfd_debugfs.c
kfd_device.c
kfd_device_queue_manager.c
kfd_device_queue_manager.h
kfd_device_queue_manager_cik.c
kfd_device_queue_manager_v9.c
kfd_device_queue_manager_v10.c
kfd_device_queue_manager_vi.c
kfd_doorbell.c
kfd_events.c
kfd_events.h
kfd_flat_memory.c
kfd_int_process_v9.c
kfd_interrupt.c
kfd_iommu.c
kfd_iommu.h
kfd_kernel_queue.c
kfd_kernel_queue.h
kfd_migrate.c
kfd_migrate.h
kfd_module.c
kfd_mqd_manager.c
kfd_mqd_manager.h
kfd_mqd_manager_cik.c
kfd_mqd_manager_v9.c
kfd_mqd_manager_v10.c
kfd_mqd_manager_vi.c
kfd_packet_manager.c
kfd_packet_manager_v9.c
kfd_packet_manager_vi.c
kfd_pasid.c
kfd_pm4_headers.h
kfd_pm4_headers_ai.h
kfd_pm4_headers_aldebaran.h
kfd_pm4_headers_diq.h
kfd_pm4_headers_vi.h
kfd_pm4_opcodes.h
kfd_priv.h
kfd_process.c
kfd_process_queue_manager.c
kfd_queue.c
kfd_smi_events.c
kfd_smi_events.h
kfd_svm.c
kfd_svm.h
kfd_topology.c
kfd_topology.h
Makefile
soc15_int.h