Commit 3bf777bf authored by Marcin Kościelnicki's avatar Marcin Kościelnicki Committed by Ben Skeggs

drm/nv50: Make ctxprog wait until interrupt handler is done.

This will fix races between generated ctxprogs and interrupt handler.
Signed-off-by: default avatarMarcin Kościelnicki <koriakin@0x04.net>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent c82b88d5
...@@ -64,6 +64,9 @@ ...@@ -64,6 +64,9 @@
#define CP_FLAG_ALWAYS ((2 * 32) + 13) #define CP_FLAG_ALWAYS ((2 * 32) + 13)
#define CP_FLAG_ALWAYS_FALSE 0 #define CP_FLAG_ALWAYS_FALSE 0
#define CP_FLAG_ALWAYS_TRUE 1 #define CP_FLAG_ALWAYS_TRUE 1
#define CP_FLAG_INTR ((2 * 32) + 15)
#define CP_FLAG_INTR_NOT_PENDING 0
#define CP_FLAG_INTR_PENDING 1
#define CP_CTX 0x00100000 #define CP_CTX 0x00100000
#define CP_CTX_COUNT 0x000f0000 #define CP_CTX_COUNT 0x000f0000
...@@ -214,6 +217,8 @@ nv50_grctx_init(struct nouveau_grctx *ctx) ...@@ -214,6 +217,8 @@ nv50_grctx_init(struct nouveau_grctx *ctx)
cp_name(ctx, cp_setup_save); cp_name(ctx, cp_setup_save);
cp_set (ctx, UNK1D, SET); cp_set (ctx, UNK1D, SET);
cp_wait(ctx, STATUS, BUSY); cp_wait(ctx, STATUS, BUSY);
cp_wait(ctx, INTR, PENDING);
cp_bra (ctx, STATUS, BUSY, cp_setup_save);
cp_set (ctx, UNK01, SET); cp_set (ctx, UNK01, SET);
cp_set (ctx, SWAP_DIRECTION, SAVE); cp_set (ctx, SWAP_DIRECTION, SAVE);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment