rsx: Fix deadlock in vm::_page_unmap
This commit is contained in:
@@ -2949,14 +2949,14 @@ namespace rsx
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pause RSX thread momentarily to handle unmapping
|
||||||
|
eng_lock elock(this);
|
||||||
|
|
||||||
// Queue up memory invalidation
|
// Queue up memory invalidation
|
||||||
std::lock_guard lock(m_mtx_task);
|
std::lock_guard lock(m_mtx_task);
|
||||||
const bool existing_range_valid = m_invalidated_memory_range.valid();
|
const bool existing_range_valid = m_invalidated_memory_range.valid();
|
||||||
const auto unmap_range = address_range::start_length(address, size);
|
const auto unmap_range = address_range::start_length(address, size);
|
||||||
|
|
||||||
// Pause RSX thread momentarily to handle unmapping
|
|
||||||
eng_lock elock(this);
|
|
||||||
|
|
||||||
if (existing_range_valid && m_invalidated_memory_range.touches(unmap_range))
|
if (existing_range_valid && m_invalidated_memory_range.touches(unmap_range))
|
||||||
{
|
{
|
||||||
// Merge range-to-invalidate in case of consecutive unmaps
|
// Merge range-to-invalidate in case of consecutive unmaps
|
||||||
|
|||||||
Reference in New Issue
Block a user