Skip to content

Commit 071ca5c

Browse files
alyssarosenzweigjannau
authored andcommitted
iommu/dart: Assert !locked when reconfiguring
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
1 parent 838ff80 commit 071ca5c

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
@@ -309,6 +309,7 @@ apple_dart_hw_enable_translation(struct apple_dart_stream_map *stream_map)
309309
struct apple_dart *dart = stream_map->dart;
310310
int sid;
311311

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

322+
WARN_ON(stream_map->dart->locked);
321323
for_each_set_bit(sid, stream_map->sidmap, dart->num_streams)
322324
writel(dart->hw->tcr_disabled, dart->regs + DART_TCR(dart, sid));
323325
}
@@ -328,6 +330,7 @@ apple_dart_hw_enable_bypass(struct apple_dart_stream_map *stream_map)
328330
struct apple_dart *dart = stream_map->dart;
329331
int sid;
330332

333+
WARN_ON(stream_map->dart->locked);
331334
WARN_ON(!stream_map->dart->supports_bypass);
332335
for_each_set_bit(sid, stream_map->sidmap, dart->num_streams)
333336
writel(dart->hw->tcr_bypass,
@@ -340,6 +343,7 @@ static void apple_dart_hw_set_ttbr(struct apple_dart_stream_map *stream_map,
340343
struct apple_dart *dart = stream_map->dart;
341344
int sid;
342345

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

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

0 commit comments

Comments
 (0)