Skip to content

Commit 03802ac

Browse files
hoshinolinajannau
authored andcommitted
drm/asahi: mmu: Fix 2x step_remap case
Signed-off-by: Asahi Lina <lina@asahilina.net>
1 parent 6cd0b59 commit 03802ac

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

drivers/gpu/drm/asahi/mmu.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,8 +344,6 @@ impl gpuvm::DriverGpuVm for VmInner {
344344
vm_bo: &gpuvm::GpuVmBo<Self>,
345345
ctx: &mut Self::StepContext,
346346
) -> Result {
347-
let prev_gpuva = ctx.prev_va.take().expect("Multiple step_remap calls");
348-
let next_gpuva = ctx.next_va.take().expect("Multiple step_remap calls");
349347
let va = op.unmap().va().expect("No previous VA");
350348
let orig_addr = va.addr();
351349
let orig_range = va.range();
@@ -393,13 +391,21 @@ impl gpuvm::DriverGpuVm for VmInner {
393391
}
394392

395393
if let Some(prev_op) = op.prev_map() {
394+
let prev_gpuva = ctx
395+
.prev_va
396+
.take()
397+
.expect("Multiple step_remap calls with prev_op");
396398
if prev_op.map_and_link_va(self, prev_gpuva, vm_bo).is_err() {
397399
dev_err!(self.dev.as_ref(), "step_remap: could not relink prev gpuva");
398400
return Err(EINVAL);
399401
}
400402
}
401403

402404
if let Some(next_op) = op.next_map() {
405+
let next_gpuva = ctx
406+
.next_va
407+
.take()
408+
.expect("Multiple step_remap calls with next_op");
403409
if next_op.map_and_link_va(self, next_gpuva, vm_bo).is_err() {
404410
dev_err!(self.dev.as_ref(), "step_remap: could not relink next gpuva");
405411
return Err(EINVAL);

0 commit comments

Comments
 (0)