|
@@ -1740,6 +1740,15 @@ void dc_update_planes_and_stream(struct dc *dc,
|
|
|
}
|
|
|
|
|
|
if (core_dc->current_context != context) {
|
|
|
+
|
|
|
+ /* Since memory free requires elevated IRQL, an interrupt
|
|
|
+ * request is generated by mem free. If this happens
|
|
|
+ * between freeing and reassigning the context, our vsync
|
|
|
+ * interrupt will call into dc and cause a memory
|
|
|
+ * corruption BSOD. Hence, we first reassign the context,
|
|
|
+ * then free the old context.
|
|
|
+ */
|
|
|
+
|
|
|
struct validate_context *old = core_dc->current_context;
|
|
|
|
|
|
core_dc->current_context = context;
|