1. 09 10月, 2021 1 次提交
    • A
      drm/amdkfd: rm BO resv on validation to avoid deadlock · ec6abe83
      Alex Sierra 提交于
      This fix the deadlock with the BO reservations during SVM_BO evictions
      while allocations in VRAM are concurrently performed. More specific,
      while the ttm waits for the fence to be signaled (ttm_bo_wait), it
      already has the BO reserved. In parallel, the restore worker might be
      running, prefetching memory to VRAM. This also requires to reserve the
      BO, but blocks the mmap semaphore first. The deadlock happens when the
      SVM_BO eviction worker kicks in and waits for the mmap semaphore held
      in restore worker. Preventing signal the fence back, causing the
      deadlock until the ttm times out.
      
      We don't need to hold the BO reservation anymore during validation
      and mapping. Now the physical addresses are taken from hmm_range_fault.
      We also take migrate_mutex to prevent range migration while
      validate_and_map update GPU page table.
      Signed-off-by: NAlex Sierra <alex.sierra@amd.com>
      Signed-off-by: NFelix Kuehling <Felix.Kuehling@amd.com>
      Reviewed-by: NPhilip Yang <philip.yang@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      ec6abe83
  2. 06 10月, 2021 1 次提交
  3. 05 10月, 2021 3 次提交
  4. 30 9月, 2021 1 次提交
  5. 24 9月, 2021 4 次提交
  6. 16 9月, 2021 2 次提交
  7. 15 9月, 2021 2 次提交
  8. 02 9月, 2021 1 次提交
  9. 27 8月, 2021 1 次提交
    • S
      drm/amdkfd: Account for SH/SE count when setting up cu masks. · 1ec06c2d
      Sean Keely 提交于
      On systems with multiple SH per SE compute_static_thread_mgmt_se#
      is split into independent masks, one for each SH, in the upper and
      lower 16 bits.  We need to detect this and apply cu masking to each
      SH.  The cu mask bits are assigned first to each SE, then to
      alternate SHs, then finally to higher CU id.  This ensures that
      the maximum number of SPIs are engaged as early as possible while
      balancing CU assignment to each SH.
      
      v2: Use max SH/SE rather than max SH in cu_per_sh.
      
      v3: Fix comment blocks, ensure se_mask is initially zero filled,
          and correctly assign se.sh.cu positions to unset bits in cu_mask.
      Signed-off-by: NSean Keely <Sean.Keely@amd.com>
      Reviewed-by: NFelix Kuehling <Felix.Kuehling@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      1ec06c2d
  10. 25 8月, 2021 2 次提交
  11. 17 8月, 2021 2 次提交
    • Y
      drm/amdkfd: fix random KFDSVMRangeTest.SetGetAttributesTest test failure · f924f3a1
      Yifan Zhang 提交于
      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: NYifan Zhang <yifan1.zhang@amd.com>
      Reviewed-by: NFelix Kuehling <Felix.Kuehling@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      f924f3a1
    • Y
      drm/amdkfd: fix random KFDSVMRangeTest.SetGetAttributesTest test failure · 2bbab7ce
      Yifan Zhang 提交于
      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: NYifan Zhang <yifan1.zhang@amd.com>
      Reviewed-by: NFelix Kuehling <Felix.Kuehling@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      2bbab7ce
  12. 12 8月, 2021 2 次提交
  13. 07 8月, 2021 1 次提交
  14. 06 8月, 2021 1 次提交
  15. 03 8月, 2021 4 次提交
  16. 29 7月, 2021 3 次提交
  17. 23 7月, 2021 7 次提交
  18. 13 7月, 2021 2 次提交