Skip to content

Commit 1d060f8

Browse files
alyssarosenzweigmarcan
authored andcommitted
iommu/dart: Assert !locked when reconfiguring
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
1 parent 6ff858c commit 1d060f8

1 file changed

Lines changed: 5 additions & 0 deletions

File tree

drivers/iommu/apple-dart.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@ apple_dart_hw_enable_translation(struct apple_dart_stream_map *stream_map)
310310
struct apple_dart *dart = stream_map->dart;
311311
int sid;
312312

313+
WARN_ON(stream_map->dart->locked);
313314
for_each_set_bit(sid, stream_map->sidmap, dart->num_streams)
314315
writel(dart->hw->tcr_enabled, dart->regs + DART_TCR(dart, sid));
315316
}
@@ -319,6 +320,7 @@ static void apple_dart_hw_disable_dma(struct apple_dart_stream_map *stream_map)
319320
struct apple_dart *dart = stream_map->dart;
320321
int sid;
321322

323+
WARN_ON(stream_map->dart->locked);
322324
for_each_set_bit(sid, stream_map->sidmap, dart->num_streams)
323325
writel(dart->hw->tcr_disabled, dart->regs + DART_TCR(dart, sid));
324326
}
@@ -329,6 +331,7 @@ apple_dart_hw_enable_bypass(struct apple_dart_stream_map *stream_map)
329331
struct apple_dart *dart = stream_map->dart;
330332
int sid;
331333

334+
WARN_ON(stream_map->dart->locked);
332335
WARN_ON(!stream_map->dart->supports_bypass);
333336
for_each_set_bit(sid, stream_map->sidmap, dart->num_streams)
334337
writel(dart->hw->tcr_bypass,
@@ -341,6 +344,7 @@ static void apple_dart_hw_set_ttbr(struct apple_dart_stream_map *stream_map,
341344
struct apple_dart *dart = stream_map->dart;
342345
int sid;
343346

347+
WARN_ON(stream_map->dart->locked);
344348
WARN_ON(paddr & ((1 << dart->hw->ttbr_shift) - 1));
345349
for_each_set_bit(sid, stream_map->sidmap, dart->num_streams)
346350
writel(dart->hw->ttbr_valid |
@@ -354,6 +358,7 @@ static void apple_dart_hw_clear_ttbr(struct apple_dart_stream_map *stream_map,
354358
struct apple_dart *dart = stream_map->dart;
355359
int sid;
356360

361+
WARN_ON(stream_map->dart->locked);
357362
for_each_set_bit(sid, stream_map->sidmap, dart->num_streams)
358363
writel(0, dart->regs + DART_TTBR(dart, sid, idx));
359364
}

0 commit comments

Comments
 (0)