Anonymous committed 1e98380

drm/nouveau: use different register to wait for secret scrubber

Fixes long delay when waiting for scrubber on some secret engines.
The exit interrupt seems to not always be generated, so use secret
scrubber active register instead.

Later fuc engines also no longer generate an interrupt, so don't wait

Signed-off-by: Maarten Lankhorst <>
Signed-off-by: Ben Skeggs <>

  • Participants
  • Parent commits 43f7897

Comments (0)

Files changed (1)

File drivers/gpu/drm/nouveau/core/core/falcon.c

 	nv_debug(falcon, "data limit: %d\n", falcon->data.limit);
 	/* wait for 'uc halted' to be signalled before continuing */
-	if (falcon->secret) {
-		nv_wait(falcon, 0x008, 0x00000010, 0x00000010);
+	if (falcon->secret && falcon->version < 4) {
+		if (!falcon->version)
+			nv_wait(falcon, 0x008, 0x00000010, 0x00000010);
+		else
+			nv_wait(falcon, 0x180, 0x80000000, 0);
 		nv_wo32(falcon, 0x004, 0x00000010);