diff --git a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hub.fuc b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hub.fuc
index 5b5b285eaab12fa83b9461026d69c0bcdc440e4a..c02f23ca28c6d07b694898f3d826ba180afd7fa4 100644
--- a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hub.fuc
+++ b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hub.fuc
@@ -134,6 +134,13 @@ init:
 	// context size calculation, reserve first 256 bytes for use by fuc
 	mov $r1 256
 
+	//
+	mov $r15 2
+	call(ctx_4170s)
+	call(ctx_4170w)
+	mov $r15 0x10
+	call(ctx_86c)
+
 	// calculate size of mmio context data
 	ld b32 $r14 D[$r0 + #hub_mmio_list_head]
 	ld b32 $r15 D[$r0 + #hub_mmio_list_tail]
@@ -196,6 +203,12 @@ init:
 		sub b32 $r3 1
 		bra ne #init_gpc
 
+	//
+	mov $r15 0
+	call(ctx_86c)
+	mov $r15 0
+	call(ctx_4170s)
+
 	// save context size, and tell host we're ready
 	nv_iowr(NV_PGRAPH_FECS_CC_SCRATCH_VAL(1), 0, $r1)
 	clear b32 $r1
@@ -414,9 +427,9 @@ ctx_redswitch:
 // In: $r15 value to set to (0x00/0x10 are used)
 //
 ctx_86c:
-	nv_iowr(0x40986c, 0, $r15)
+	nv_iowr(NV_PGRAPH_FECS_UNK86C, 0, $r15)
 	nv_wr32(0x408a14, $r15)
-	nv_wr32(0x41a86c, $r15)
+	nv_wr32(NV_PGRAPH_GPCX_GPCCS_UNK86C, $r15)
 	ret
 
 // In: $r15 NV_PGRAPH_FECS_MEM_CMD_*
diff --git a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnv108.fuc5.h b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnv108.fuc5.h
index 1896bc21cb4a0eb7741fabe13730686265e42987..d8c911e9f24a7c01fb943a2cd3197459f1a33a89 100644
--- a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnv108.fuc5.h
+++ b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnv108.fuc5.h
@@ -433,415 +433,479 @@ uint32_t nv108_grhub_code[] = {
 	0x04bd000f,
 /* 0x030e: init */
 	0x04bd00f8,
-	0xfe0004fe,
-	0x02020007,
-	0xf6120040,
-	0x04bd0002,
-	0xfe05a041,
-	0x24bd0010,
-	0xf6070040,
-	0x04bd0002,
-	0x80200342,
-	0xf6010100,
-	0x04bd0002,
-	0x80200442,
-	0xf6010104,
-	0x04bd0002,
-	0x80200b42,
-	0xf6010108,
-	0x04bd0002,
-	0x80200c42,
-	0xf601011c,
-	0x04bd0002,
-	0x80010392,
-	0xf6030900,
-	0x04bd0003,
-	0x40870442,
-	0x02f60400,
-	0x0204bd00,
-	0x03004004,
+	0x410007fe,
+	0x11cf4200,
+	0x0911e700,
+	0x0814b601,
+	0x020014fe,
+	0x12004002,
+	0xbd0002f6,
+	0x05c94104,
+	0xbd0010fe,
+	0x07004024,
+	0xbd0002f6,
+	0x20034204,
+	0x01010080,
+	0xbd0002f6,
+	0x20044204,
+	0x01010480,
+	0xbd0002f6,
+	0x200b4204,
+	0x01010880,
 	0xbd0002f6,
-	0x1031f404,
-	0x4096048e,
-	0x0000657e,
-	0xf1c7feb2,
-	0x0301b590,
-	0xb51ff4f0,
-	0x0101020f,
-	0xb6041fbb,
-	0x00800112,
-	0x01f60103,
-	0x8004bd00,
-	0xf6010400,
+	0x200c4204,
+	0x01011c80,
+	0xbd0002f6,
+	0x01039204,
+	0x03090080,
+	0xbd0003f6,
+	0x87044204,
+	0xf6040040,
+	0x04bd0002,
+	0x00400402,
+	0x0002f603,
+	0x31f404bd,
+	0x96048e10,
+	0x00657e40,
+	0xc7feb200,
+	0x01b590f1,
+	0x1ff4f003,
+	0x01020fb5,
+	0x041fbb01,
+	0x800112b6,
+	0xf6010300,
 	0x04bd0001,
-	0x98010041,
-	0x0f98000e,
-	0x01207e01,
-	0x08149500,
-	0x01c00080,
-	0xbd0004f6,
-	0xc1008004,
+	0x01040080,
+	0xbd0001f6,
+	0x01004104,
+	0x4e7e020f,
+	0x5d7e0006,
+	0x100f0006,
+	0x00069f7e,
+	0x98000e98,
+	0x207e010f,
+	0x14950001,
+	0xc0008008,
 	0x0004f601,
-	0x30b704bd,
-	0x1fbb1300,
-	0x02f5b600,
-	0x01d30080,
-	0xbd000ff6,
-	0x0815b604,
-	0xb60110b6,
-	0x1fb20814,
-	0x0002687e,
-	0x98001fbb,
-	0x00840203,
-/* 0x0402: init_gpc */
-	0x4eb85020,
-	0xb2000804,
-	0x008f7e1f,
-	0x0c4eb800,
-	0xf4bd0001,
-	0x00008f7e,
-	0x01044eb8,
-	0x008f7e00,
+	0x008004bd,
+	0x04f601c1,
+	0xb704bd00,
+	0xbb130030,
+	0xf5b6001f,
+	0xd3008002,
+	0x000ff601,
+	0x15b604bd,
+	0x0110b608,
+	0xb20814b6,
+	0x02687e1f,
+	0x001fbb00,
+	0x84020398,
+/* 0x041f: init_gpc */
+	0xb8502000,
+	0x0008044e,
+	0x8f7e1fb2,
+	0x4eb80000,
+	0xbd00010c,
+	0x008f7ef4,
+	0x044eb800,
+	0x8f7e0001,
+	0x4eb80000,
+	0x0f000100,
+	0x008f7e02,
 	0x004eb800,
-	0x020f0001,
-	0x00008f7e,
-	0x08004eb8,
-/* 0x0431: init_gpc_wait */
+/* 0x044e: init_gpc_wait */
+	0x657e0008,
+	0xffc80000,
+	0xf90bf41f,
+	0x08044eb8,
 	0x00657e00,
-	0x1fffc800,
-	0xb8f90bf4,
-	0x0008044e,
-	0x0000657e,
-	0xb7001fbb,
-	0xb6800040,
-	0x1bf40132,
-	0x010080b4,
-	0x0001f602,
-	0x14bd04bd,
-	0x801f19f0,
-	0xf6023000,
-	0x04bd0001,
-/* 0x0468: main */
-	0xf40031f4,
-	0x100d0028,
-	0x0000377e,
-	0xb1f401f4,
-	0xf54001e4,
-	0xbd00c71b,
-	0x0499f094,
-	0x02370080,
-	0xbd0009f6,
-	0xc0008104,
-	0x0011cf02,
-	0x02c10082,
-	0xc80022cf,
-	0x0bf41f13,
-	0x1f23c877,
-	0xf9550bf4,
-	0xbd12b220,
-	0x0799f094,
-	0x02370080,
-	0xbd0009f6,
-	0x0132f404,
-	0x7e0231f4,
-	0xbd0007ff,
-	0x0799f094,
-	0x02170080,
-	0xbd0009f6,
-	0xbd20fc04,
-	0x0699f094,
-	0x02370080,
-	0xbd0009f6,
-	0x0131f404,
-	0x0007ff7e,
+	0x001fbb00,
+	0x800040b7,
+	0xf40132b6,
+	0x000fb41b,
+	0x00069f7e,
+	0x4e7e000f,
+	0x00800006,
+	0x01f60201,
+	0xbd04bd00,
+	0x1f19f014,
+	0x02300080,
+	0xbd0001f6,
+/* 0x0491: main */
+	0x0031f404,
+	0x0d0028f4,
+	0x00377e10,
+	0xf401f400,
+	0x4001e4b1,
+	0x00c71bf5,
 	0x99f094bd,
-	0x17008006,
+	0x37008004,
 	0x0009f602,
-	0x0ef404bd,
-/* 0x04f9: chsw_prev_no_next */
-	0xb220f92f,
-	0x0132f412,
-	0x7e0232f4,
-	0xfc0007ff,
-	0xc0008020,
-	0x0002f602,
-	0x0ef404bd,
-/* 0x0515: chsw_no_prev */
-	0x1f23c813,
-	0xf40d0bf4,
-	0x32f40131,
-	0x07ff7e02,
-/* 0x0525: chsw_done */
-	0x80010200,
-	0xf602c300,
-	0x04bd0002,
+	0x008104bd,
+	0x11cf02c0,
+	0xc1008200,
+	0x0022cf02,
+	0xf41f13c8,
+	0x23c8770b,
+	0x550bf41f,
+	0x12b220f9,
 	0x99f094bd,
-	0x17008004,
+	0x37008007,
 	0x0009f602,
-	0x0ef504bd,
-/* 0x0542: main_not_ctx_switch */
-	0xe4b0ff2a,
-	0x0c1bf401,
-	0x997ef2b2,
-	0x0ef40007,
-/* 0x0551: main_not_ctx_chan */
-	0x02e4b040,
-	0xbd2c1bf4,
-	0x0799f094,
-	0x02370080,
-	0xbd0009f6,
-	0x0132f404,
-	0x7e0232f4,
-	0xbd0007ff,
-	0x0799f094,
-	0x02170080,
-	0xbd0009f6,
-	0x110ef404,
-/* 0x0580: main_not_ctx_save */
-	0xf010ef94,
-	0xf87e01f5,
-	0x0ef50002,
-/* 0x058e: main_done */
-	0x24bdfede,
-	0x801f29f0,
-	0xf6023000,
-	0x04bd0002,
-	0xfecc0ef5,
-/* 0x05a0: ih */
-	0x88fe80f9,
-	0xf980f901,
-	0xf9a0f990,
-	0xf9d0f9b0,
-	0xbdf0f9e0,
-	0x02004a04,
-	0xc400aacf,
-	0x0bf404ab,
-	0x4e100d23,
-	0xeecf1a00,
-	0x19004f00,
-	0x7e00ffcf,
-	0xb7000004,
-	0x0e0400b0,
-	0x1d004001,
-	0xbd000ef6,
-/* 0x05e1: ih_no_fifo */
-	0x00abe404,
-	0x0c0bf401,
-	0x014e100d,
-	0x00047e40,
-/* 0x05f1: ih_no_ctxsw */
-	0x01044b00,
-	0xabffb0bd,
-	0x0c0bf4b4,
-	0x03070080,
-	0xbd000bf6,
-/* 0x0605: ih_no_other */
-	0x01004004,
-	0xbd000af6,
-	0xfcf0fc04,
-	0xfcd0fce0,
-	0xfca0fcb0,
-	0xfe80fc90,
-	0x80fc0088,
-	0xf80032f4,
-/* 0x0625: ctx_4170s */
-	0x10f5f001,
-	0x708effb2,
-	0x8f7e4041,
-	0x00f80000,
-/* 0x0634: ctx_4170w */
-	0x4041708e,
-	0x0000657e,
-	0xf4f0ffb2,
-	0xf31bf410,
-/* 0x0646: ctx_redswitch */
-	0x004e00f8,
-	0x40e5f002,
-	0xf020e5f0,
-	0x008010e5,
-	0x0ef60185,
-	0x0f04bd00,
-/* 0x065d: ctx_redswitch_delay */
-	0x01f2b608,
-	0xf1fd1bf4,
-	0xf10400e5,
-	0x800100e5,
+	0x32f404bd,
+	0x0231f401,
+	0x0008227e,
+	0x99f094bd,
+	0x17008007,
+	0x0009f602,
+	0x20fc04bd,
+	0x99f094bd,
+	0x37008006,
+	0x0009f602,
+	0x31f404bd,
+	0x08227e01,
+	0xf094bd00,
+	0x00800699,
+	0x09f60217,
+	0xf404bd00,
+/* 0x0522: chsw_prev_no_next */
+	0x20f92f0e,
+	0x32f412b2,
+	0x0232f401,
+	0x0008227e,
+	0x008020fc,
+	0x02f602c0,
+	0xf404bd00,
+/* 0x053e: chsw_no_prev */
+	0x23c8130e,
+	0x0d0bf41f,
+	0xf40131f4,
+	0x227e0232,
+/* 0x054e: chsw_done */
+	0x01020008,
+	0x02c30080,
+	0xbd0002f6,
+	0xf094bd04,
+	0x00800499,
+	0x09f60217,
+	0xf504bd00,
+/* 0x056b: main_not_ctx_switch */
+	0xb0ff2a0e,
+	0x1bf401e4,
+	0x7ef2b20c,
+	0xf40007c2,
+/* 0x057a: main_not_ctx_chan */
+	0xe4b0400e,
+	0x2c1bf402,
+	0x99f094bd,
+	0x37008007,
+	0x0009f602,
+	0x32f404bd,
+	0x0232f401,
+	0x0008227e,
+	0x99f094bd,
+	0x17008007,
+	0x0009f602,
+	0x0ef404bd,
+/* 0x05a9: main_not_ctx_save */
+	0x10ef9411,
+	0x7e01f5f0,
+	0xf50002f8,
+/* 0x05b7: main_done */
+	0xbdfede0e,
+	0x1f29f024,
+	0x02300080,
+	0xbd0002f6,
+	0xcc0ef504,
+/* 0x05c9: ih */
+	0xfe80f9fe,
+	0x80f90188,
+	0xa0f990f9,
+	0xd0f9b0f9,
+	0xf0f9e0f9,
+	0x004a04bd,
+	0x00aacf02,
+	0xf404abc4,
+	0x100d230b,
+	0xcf1a004e,
+	0x004f00ee,
+	0x00ffcf19,
+	0x0000047e,
+	0x0400b0b7,
+	0x0040010e,
+	0x000ef61d,
+/* 0x060a: ih_no_fifo */
+	0xabe404bd,
+	0x0bf40100,
+	0x4e100d0c,
+	0x047e4001,
+/* 0x061a: ih_no_ctxsw */
+	0x044b0000,
+	0xffb0bd01,
+	0x0bf4b4ab,
+	0x0700800c,
+	0x000bf603,
+/* 0x062e: ih_no_other */
+	0x004004bd,
+	0x000af601,
+	0xf0fc04bd,
+	0xd0fce0fc,
+	0xa0fcb0fc,
+	0x80fc90fc,
+	0xfc0088fe,
+	0x0032f480,
+/* 0x064e: ctx_4170s */
+	0xf5f001f8,
+	0x8effb210,
+	0x7e404170,
+	0xf800008f,
+/* 0x065d: ctx_4170w */
+	0x41708e00,
+	0x00657e40,
+	0xf0ffb200,
+	0x1bf410f4,
+/* 0x066f: ctx_redswitch */
+	0x4e00f8f3,
+	0xe5f00200,
+	0x20e5f040,
+	0x8010e5f0,
 	0xf6018500,
 	0x04bd000e,
-/* 0x0676: ctx_86c */
-	0x008000f8,
-	0x0ff6021b,
-	0xb204bd00,
-	0x8a148eff,
-	0x008f7e40,
-	0x8effb200,
-	0x7e41a86c,
-	0xf800008f,
-/* 0x0695: ctx_mem */
-	0x84008000,
-	0x000ff602,
-/* 0x069e: ctx_mem_wait */
-	0x008f04bd,
-	0xffcf0284,
-	0x05fffd00,
-	0xf8f61bf4,
-/* 0x06ad: ctx_load */
-	0xf094bd00,
-	0x00800599,
-	0x09f60237,
-	0x0a04bd00,
-	0x00b87e0c,
-	0x80f4bd00,
-	0xf6028900,
+/* 0x0686: ctx_redswitch_delay */
+	0xf2b6080f,
+	0xfd1bf401,
+	0x0400e5f1,
+	0x0100e5f1,
+	0x01850080,
+	0xbd000ef6,
+/* 0x069f: ctx_86c */
+	0x8000f804,
+	0xf6022300,
 	0x04bd000f,
-	0x02c10080,
-	0xbd0002f6,
-	0x83008004,
+	0x148effb2,
+	0x8f7e408a,
+	0xffb20000,
+	0x41a88c8e,
+	0x00008f7e,
+/* 0x06be: ctx_mem */
+	0x008000f8,
+	0x0ff60284,
+/* 0x06c7: ctx_mem_wait */
+	0x8f04bd00,
+	0xcf028400,
+	0xfffd00ff,
+	0xf61bf405,
+/* 0x06d6: ctx_load */
+	0x94bd00f8,
+	0x800599f0,
+	0xf6023700,
+	0x04bd0009,
+	0xb87e0c0a,
+	0xf4bd0000,
+	0x02890080,
+	0xbd000ff6,
+	0xc1008004,
 	0x0002f602,
-	0x070f04bd,
-	0x0006957e,
-	0x02c00080,
-	0xbd0002f6,
-	0x000bfe04,
-	0xb61f2af0,
-	0x20b60424,
-	0xf094bd02,
-	0x00800899,
-	0x09f60237,
-	0x8004bd00,
-	0xf6028100,
-	0x04bd0002,
-	0x000000d2,
-	0x0225f080,
-	0x02880080,
-	0xbd0002f6,
-	0x42100104,
-	0x23f00200,
-	0x0512fa02,
-	0x94bd03f8,
+	0x008004bd,
+	0x02f60283,
+	0x0f04bd00,
+	0x06be7e07,
+	0xc0008000,
+	0x0002f602,
+	0x0bfe04bd,
+	0x1f2af000,
+	0xb60424b6,
+	0x94bd0220,
 	0x800899f0,
-	0xf6021700,
-	0x04bd0009,
-	0xb6810198,
-	0x02981814,
-	0x0825b680,
-	0xb50512fd,
-	0x94bd1601,
-	0x800999f0,
 	0xf6023700,
 	0x04bd0009,
 	0x02810080,
-	0xbd0001f6,
-	0x80010204,
-	0xf6028800,
-	0x04bd0002,
-	0xf0010041,
-	0x01fa0613,
+	0xbd0002f6,
+	0x0000d204,
+	0x25f08000,
+	0x88008002,
+	0x0002f602,
+	0x100104bd,
+	0xf0020042,
+	0x12fa0223,
 	0xbd03f805,
-	0x0999f094,
+	0x0899f094,
 	0x02170080,
 	0xbd0009f6,
-	0xf094bd04,
-	0x00800599,
-	0x09f60217,
-	0xf804bd00,
-/* 0x0799: ctx_chan */
-	0x06ad7e00,
-	0x7e0c0a00,
-	0x410000b8,
-	0x14b60a10,
-	0x7e050f06,
-	0xf8000695,
-/* 0x07b1: ctx_mmio_exec */
-	0x41039800,
-	0x02810080,
-	0xbd0003f6,
-/* 0x07bf: ctx_mmio_loop */
-	0xc434bd04,
-	0x1bf4ff34,
-	0x0200450e,
-	0xfa0653f0,
-	0x03f80535,
-/* 0x07d0: ctx_mmio_pull */
-	0x98804e98,
-	0x8f7e814f,
-	0x30b60000,
-	0x0112b608,
-/* 0x07e3: ctx_mmio_done */
-	0x98df1bf4,
-	0x00801603,
-	0x03f60281,
-	0xb504bd00,
-	0x00414000,
-	0x0613f001,
-	0xf80601fa,
-/* 0x07ff: ctx_xfer */
-	0x0e00f803,
-	0x02008004,
-	0x000ef603,
-/* 0x080a: ctx_xfer_idle */
-	0x008e04bd,
-	0xeecf0300,
-	0x00e4f100,
-	0xf51bf420,
-	0xf40611f4,
-/* 0x081e: ctx_xfer_pre */
-	0x100f0c02,
-	0x0006767e,
-/* 0x0827: ctx_xfer_pre_load */
-	0x0f1b11f4,
-	0x06257e02,
-	0x06347e00,
-	0x06467e00,
-	0x7ef4bd00,
-	0x7e000625,
-/* 0x083f: ctx_xfer_exec */
-	0x980006ad,
-	0x24bd1601,
-	0x01050080,
+	0x81019804,
+	0x981814b6,
+	0x25b68002,
+	0x0512fd08,
+	0xbd1601b5,
+	0x0999f094,
+	0x02370080,
+	0xbd0009f6,
+	0x81008004,
+	0x0001f602,
+	0x010204bd,
+	0x02880080,
 	0xbd0002f6,
-	0x8e1fb204,
-	0x7e41a500,
-	0xf000008f,
-	0x2cf001fc,
-	0x0124b602,
-	0xb205f2fd,
-	0xa5048eff,
-	0x008f7e41,
-	0x02167e00,
-	0x8024bd00,
-	0xf60247fc,
+	0x01004104,
+	0xfa0613f0,
+	0x03f80501,
+	0x99f094bd,
+	0x17008009,
+	0x0009f602,
+	0x94bd04bd,
+	0x800599f0,
+	0xf6021700,
+	0x04bd0009,
+/* 0x07c2: ctx_chan */
+	0xd67e00f8,
+	0x0c0a0006,
+	0x0000b87e,
+	0xbe7e050f,
+	0x00f80006,
+/* 0x07d4: ctx_mmio_exec */
+	0x80410398,
+	0xf6028100,
+	0x04bd0003,
+/* 0x07e2: ctx_mmio_loop */
+	0x34c434bd,
+	0x0e1bf4ff,
+	0xf0020045,
+	0x35fa0653,
+/* 0x07f3: ctx_mmio_pull */
+	0x9803f805,
+	0x4f98804e,
+	0x008f7e81,
+	0x0830b600,
+	0xf40112b6,
+/* 0x0806: ctx_mmio_done */
+	0x0398df1b,
+	0x81008016,
+	0x0003f602,
+	0x00b504bd,
+	0x01004140,
+	0xfa0613f0,
+	0x03f80601,
+/* 0x0822: ctx_xfer */
+	0x040e00f8,
+	0x03020080,
+	0xbd000ef6,
+/* 0x082d: ctx_xfer_idle */
+	0x00008e04,
+	0x00eecf03,
+	0x2000e4f1,
+	0xf4f51bf4,
+	0x02f40611,
+/* 0x0841: ctx_xfer_pre */
+	0x7e100f0c,
+	0xf400069f,
+/* 0x084a: ctx_xfer_pre_load */
+	0x020f1b11,
+	0x00064e7e,
+	0x00065d7e,
+	0x00066f7e,
+	0x4e7ef4bd,
+	0xd67e0006,
+/* 0x0862: ctx_xfer_exec */
+	0x01980006,
+	0x8024bd16,
+	0xf6010500,
 	0x04bd0002,
-	0xb6012cf0,
-	0xfc800320,
-	0x02f6024a,
+	0x008e1fb2,
+	0x8f7e41a5,
+	0xfcf00000,
+	0x022cf001,
+	0xfd0124b6,
+	0xffb205f2,
+	0x41a5048e,
+	0x00008f7e,
+	0x0002167e,
+	0xfc8024bd,
+	0x02f60247,
 	0xf004bd00,
-	0xa5f001ac,
-	0x98000b06,
-	0x0d98000c,
-	0x7e000e01,
-	0x0a00013d,
-	0x00ec7e08,
-	0x020a7e00,
-	0x1201f400,
-	0xb87e0c0a,
-	0x050f0000,
-	0x0006957e,
-/* 0x08bb: ctx_xfer_post */
-	0x0f2d02f4,
-	0x06257e02,
-	0x7ef4bd00,
-	0x7e000676,
-	0x7e000227,
-	0xbd000634,
-	0x06257ef4,
-	0x1011f400,
-	0xfd400198,
-	0x0bf40511,
-	0x07b17e07,
-/* 0x08e5: ctx_xfer_no_post_mmio */
-/* 0x08e5: ctx_xfer_done */
-	0x0000f800,
+	0x20b6012c,
+	0x4afc8003,
+	0x0002f602,
+	0xacf004bd,
+	0x06a5f001,
+	0x0c98000b,
+	0x010d9800,
+	0x3d7e000e,
+	0x080a0001,
+	0x0000ec7e,
+	0x00020a7e,
+	0x0a1201f4,
+	0x00b87e0c,
+	0x7e050f00,
+	0xf40006be,
+/* 0x08de: ctx_xfer_post */
+	0x020f2d02,
+	0x00064e7e,
+	0x9f7ef4bd,
+	0x277e0006,
+	0x5d7e0002,
+	0xf4bd0006,
+	0x00064e7e,
+	0x981011f4,
+	0x11fd4001,
+	0x070bf405,
+	0x0007d47e,
+/* 0x0908: ctx_xfer_no_post_mmio */
+/* 0x0908: ctx_xfer_done */
+	0x000000f8,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
 	0x00000000,
 	0x00000000,
 	0x00000000,
diff --git a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
index 035954d7b5be4896addcaca9dc5fdd1240b897a5..b061eef4c0b3df6fd89223b834d34c3a7088b340 100644
--- a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
+++ b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
@@ -478,7 +478,7 @@ uint32_t nvc0_grhub_code[] = {
 	0xf0120007,
 	0x02d00003,
 	0xf104bd00,
-	0xfe06a817,
+	0xfe06c817,
 	0x24bd0010,
 	0x070007f1,
 	0xd00003f0,
@@ -527,48 +527,56 @@ uint32_t nvc0_grhub_code[] = {
 	0x03f00400,
 	0x0001d001,
 	0x17f104bd,
-	0x0e980100,
-	0x010f9800,
-	0x015021f5,
-	0xf1081495,
-	0xf0c00007,
-	0x04d00103,
-	0xf104bd00,
-	0xf0c10007,
-	0x04d00103,
-	0xb704bd00,
-	0xbb130030,
-	0xf5b6001f,
-	0x0007f102,
-	0x0103f0d3,
-	0xbd000fd0,
-	0x0815b604,
-	0xb60110b6,
-	0x1fb90814,
-	0xd321f502,
-	0x001fbb02,
-	0xf1020398,
-	0xf0200047,
-/* 0x04e2: init_gpc */
-	0x4ea05043,
-	0x1fb90804,
-	0x9d21f402,
-	0x010c4ea0,
-	0x21f4f4bd,
-	0x044ea09d,
-	0x9d21f401,
-	0x01004ea0,
-	0xf402f7f0,
+	0xf7f00100,
+	0x9d21f502,
+	0xaf21f507,
+	0x10f7f007,
+	0x07fc21f5,
+	0x98000e98,
+	0x21f5010f,
+	0x14950150,
+	0x0007f108,
+	0x0103f0c0,
+	0xbd0004d0,
+	0x0007f104,
+	0x0103f0c1,
+	0xbd0004d0,
+	0x0030b704,
+	0x001fbb13,
+	0xf102f5b6,
+	0xf0d30007,
+	0x0fd00103,
+	0xb604bd00,
+	0x10b60815,
+	0x0814b601,
+	0xf5021fb9,
+	0xbb02d321,
+	0x0398001f,
+	0x0047f102,
+	0x5043f020,
+/* 0x04f4: init_gpc */
+	0x08044ea0,
+	0xf4021fb9,
 	0x4ea09d21,
-/* 0x050a: init_gpc_wait */
-	0x21f40800,
-	0x1fffc868,
-	0xa0fa0bf4,
-	0xf408044e,
-	0x1fbb6821,
-	0x0040b700,
-	0x0132b680,
-	0xf1be1bf4,
+	0xf4bd010c,
+	0xa09d21f4,
+	0xf401044e,
+	0x4ea09d21,
+	0xf7f00100,
+	0x9d21f402,
+	0x08004ea0,
+/* 0x051c: init_gpc_wait */
+	0xc86821f4,
+	0x0bf41fff,
+	0x044ea0fa,
+	0x6821f408,
+	0xb7001fbb,
+	0xb6800040,
+	0x1bf40132,
+	0x00f7f0be,
+	0x07fc21f5,
+	0xf500f7f0,
+	0xf1079d21,
 	0xf0010007,
 	0x01d00203,
 	0xbd04bd00,
@@ -576,7 +584,7 @@ uint32_t nvc0_grhub_code[] = {
 	0x080007f1,
 	0xd00203f0,
 	0x04bd0001,
-/* 0x0544: main */
+/* 0x0564: main */
 	0xf40031f4,
 	0xd7f00028,
 	0x3921f410,
@@ -602,7 +610,7 @@ uint32_t nvc0_grhub_code[] = {
 	0x09d00203,
 	0xf404bd00,
 	0x31f40132,
-	0xb721f502,
+	0xd021f502,
 	0xf094bd09,
 	0x07f10799,
 	0x03f01700,
@@ -613,27 +621,27 @@ uint32_t nvc0_grhub_code[] = {
 	0x0203f00f,
 	0xbd0009d0,
 	0x0131f404,
-	0x09b721f5,
+	0x09d021f5,
 	0x99f094bd,
 	0x0007f106,
 	0x0203f017,
 	0xbd0009d0,
 	0x330ef404,
-/* 0x05ec: chsw_prev_no_next */
+/* 0x060c: chsw_prev_no_next */
 	0x12b920f9,
 	0x0132f402,
 	0xf50232f4,
-	0xfc09b721,
+	0xfc09d021,
 	0x0007f120,
 	0x0203f0c0,
 	0xbd0002d0,
 	0x130ef404,
-/* 0x060c: chsw_no_prev */
+/* 0x062c: chsw_no_prev */
 	0xf41f23c8,
 	0x31f40d0b,
 	0x0232f401,
-	0x09b721f5,
-/* 0x061c: chsw_done */
+	0x09d021f5,
+/* 0x063c: chsw_done */
 	0xf10127f0,
 	0xf0c30007,
 	0x02d00203,
@@ -643,12 +651,12 @@ uint32_t nvc0_grhub_code[] = {
 	0xd00203f0,
 	0x04bd0009,
 	0xff080ef5,
-/* 0x0640: main_not_ctx_switch */
+/* 0x0660: main_not_ctx_switch */
 	0xf401e4b0,
 	0xf2b90d1b,
-	0x4021f502,
+	0x6021f502,
 	0x460ef409,
-/* 0x0650: main_not_ctx_chan */
+/* 0x0670: main_not_ctx_chan */
 	0xf402e4b0,
 	0x94bd321b,
 	0xf10799f0,
@@ -656,24 +664,24 @@ uint32_t nvc0_grhub_code[] = {
 	0x09d00203,
 	0xf404bd00,
 	0x32f40132,
-	0xb721f502,
+	0xd021f502,
 	0xf094bd09,
 	0x07f10799,
 	0x03f01700,
 	0x0009d002,
 	0x0ef404bd,
-/* 0x0685: main_not_ctx_save */
+/* 0x06a5: main_not_ctx_save */
 	0x10ef9411,
 	0xf501f5f0,
 	0xf5037e21,
-/* 0x0693: main_done */
+/* 0x06b3: main_done */
 	0xbdfeb50e,
 	0x1f29f024,
 	0x080007f1,
 	0xd00203f0,
 	0x04bd0002,
 	0xfea00ef5,
-/* 0x06a8: ih */
+/* 0x06c8: ih */
 	0x88fe80f9,
 	0xf980f901,
 	0xf9a0f990,
@@ -694,19 +702,19 @@ uint32_t nvc0_grhub_code[] = {
 	0x07f101e7,
 	0x03f01d00,
 	0x000ed000,
-/* 0x06fa: ih_no_fifo */
+/* 0x071a: ih_no_fifo */
 	0xabe404bd,
 	0x0bf40100,
 	0x10d7f00d,
 	0x4001e7f1,
-/* 0x070b: ih_no_ctxsw */
+/* 0x072b: ih_no_ctxsw */
 	0xf10421f4,
 	0xbd0104b7,
 	0xb4abffb0,
 	0xf10f0bf4,
 	0xf0070007,
 	0x0bd00303,
-/* 0x0723: ih_no_other */
+/* 0x0743: ih_no_other */
 	0xf104bd00,
 	0xf0010007,
 	0x0ad00003,
@@ -716,36 +724,36 @@ uint32_t nvc0_grhub_code[] = {
 	0xfc90fca0,
 	0x0088fe80,
 	0x32f480fc,
-/* 0x0747: ctx_4160s */
+/* 0x0767: ctx_4160s */
 	0xf001f800,
 	0xffb901f7,
 	0x60e7f102,
 	0x40e3f041,
-/* 0x0757: ctx_4160s_wait */
+/* 0x0777: ctx_4160s_wait */
 	0xf19d21f4,
 	0xf04160e7,
 	0x21f440e3,
 	0x02ffb968,
 	0xf404ffc8,
 	0x00f8f00b,
-/* 0x076c: ctx_4160c */
+/* 0x078c: ctx_4160c */
 	0xffb9f4bd,
 	0x60e7f102,
 	0x40e3f041,
 	0xf89d21f4,
-/* 0x077d: ctx_4170s */
+/* 0x079d: ctx_4170s */
 	0x10f5f000,
 	0xf102ffb9,
 	0xf04170e7,
 	0x21f440e3,
-/* 0x078f: ctx_4170w */
+/* 0x07af: ctx_4170w */
 	0xf100f89d,
 	0xf04170e7,
 	0x21f440e3,
 	0x02ffb968,
 	0xf410f4f0,
 	0x00f8f01b,
-/* 0x07a4: ctx_redswitch */
+/* 0x07c4: ctx_redswitch */
 	0x0200e7f1,
 	0xf040e5f0,
 	0xe5f020e5,
@@ -753,7 +761,7 @@ uint32_t nvc0_grhub_code[] = {
 	0x0103f085,
 	0xbd000ed0,
 	0x08f7f004,
-/* 0x07c0: ctx_redswitch_delay */
+/* 0x07e0: ctx_redswitch_delay */
 	0xf401f2b6,
 	0xe5f1fd1b,
 	0xe5f10400,
@@ -761,7 +769,7 @@ uint32_t nvc0_grhub_code[] = {
 	0x03f08500,
 	0x000ed001,
 	0x00f804bd,
-/* 0x07dc: ctx_86c */
+/* 0x07fc: ctx_86c */
 	0x1b0007f1,
 	0xd00203f0,
 	0x04bd000f,
@@ -772,16 +780,16 @@ uint32_t nvc0_grhub_code[] = {
 	0xa86ce7f1,
 	0xf441e3f0,
 	0x00f89d21,
-/* 0x0804: ctx_mem */
+/* 0x0824: ctx_mem */
 	0x840007f1,
 	0xd00203f0,
 	0x04bd000f,
-/* 0x0810: ctx_mem_wait */
+/* 0x0830: ctx_mem_wait */
 	0x8400f7f1,
 	0xcf02f3f0,
 	0xfffd00ff,
 	0xf31bf405,
-/* 0x0822: ctx_load */
+/* 0x0842: ctx_load */
 	0x94bd00f8,
 	0xf10599f0,
 	0xf00f0007,
@@ -799,7 +807,7 @@ uint32_t nvc0_grhub_code[] = {
 	0x02d00203,
 	0xf004bd00,
 	0x21f507f7,
-	0x07f10804,
+	0x07f10824,
 	0x03f0c000,
 	0x0002d002,
 	0x0bfe04bd,
@@ -854,122 +862,114 @@ uint32_t nvc0_grhub_code[] = {
 	0x03f01700,
 	0x0009d002,
 	0x00f804bd,
-/* 0x0940: ctx_chan */
-	0x074721f5,
-	0x082221f5,
+/* 0x0960: ctx_chan */
+	0x076721f5,
+	0x084221f5,
 	0xf40ca7f0,
-	0x17f1d021,
-	0x14b60a10,
-	0x05f7f006,
-	0x080421f5,
-	0x076c21f5,
-/* 0x0962: ctx_mmio_exec */
-	0x039800f8,
-	0x0007f141,
-	0x0203f081,
-	0xbd0003d0,
-/* 0x0973: ctx_mmio_loop */
-	0xc434bd04,
-	0x1bf4ff34,
-	0x0057f10f,
-	0x0653f002,
-	0xf80535fa,
-/* 0x0985: ctx_mmio_pull */
-	0x804e9803,
-	0xf4814f98,
-	0x30b69d21,
-	0x0112b608,
-/* 0x0997: ctx_mmio_done */
-	0x98df1bf4,
-	0x07f11603,
+	0xf7f0d021,
+	0x2421f505,
+	0x8c21f508,
+/* 0x097b: ctx_mmio_exec */
+	0x9800f807,
+	0x07f14103,
 	0x03f08100,
 	0x0003d002,
-	0x008004bd,
-	0x0017f140,
-	0x0613f001,
-	0xf80601fa,
-/* 0x09b7: ctx_xfer */
-	0xf000f803,
-	0x07f104e7,
-	0x03f00200,
-	0x000ed003,
-/* 0x09c6: ctx_xfer_idle */
-	0xe7f104bd,
-	0xe3f00000,
-	0x00eecf03,
-	0x2000e4f1,
-	0xf4f21bf4,
-	0x02f40611,
-/* 0x09dd: ctx_xfer_pre */
-	0x10f7f011,
-	0x07dc21f5,
-	0x074721f5,
-/* 0x09eb: ctx_xfer_pre_load */
-	0xf01c11f4,
-	0x21f502f7,
-	0x21f5077d,
-	0x21f5078f,
-	0xf4bd07a4,
-	0x077d21f5,
-	0x082221f5,
-/* 0x0a04: ctx_xfer_exec */
-	0xbd160198,
-	0x0007f124,
-	0x0103f005,
-	0xbd0002d0,
-	0x021fb904,
-	0xa500e7f1,
-	0xf441e3f0,
-	0xfcf09d21,
-	0x022cf001,
-	0xfd0124b6,
-	0xffb905f2,
-	0x04e7f102,
+	0x34bd04bd,
+/* 0x098c: ctx_mmio_loop */
+	0xf4ff34c4,
+	0x57f10f1b,
+	0x53f00200,
+	0x0535fa06,
+/* 0x099e: ctx_mmio_pull */
+	0x4e9803f8,
+	0x814f9880,
+	0xb69d21f4,
+	0x12b60830,
+	0xdf1bf401,
+/* 0x09b0: ctx_mmio_done */
+	0xf1160398,
+	0xf0810007,
+	0x03d00203,
+	0x8004bd00,
+	0x17f14000,
+	0x13f00100,
+	0x0601fa06,
+	0x00f803f8,
+/* 0x09d0: ctx_xfer */
+	0xf104e7f0,
+	0xf0020007,
+	0x0ed00303,
+/* 0x09df: ctx_xfer_idle */
+	0xf104bd00,
+	0xf00000e7,
+	0xeecf03e3,
+	0x00e4f100,
+	0xf21bf420,
+	0xf40611f4,
+/* 0x09f6: ctx_xfer_pre */
+	0xf7f01102,
+	0xfc21f510,
+	0x6721f507,
+	0x1c11f407,
+/* 0x0a04: ctx_xfer_pre_load */
+	0xf502f7f0,
+	0xf5079d21,
+	0xf507af21,
+	0xbd07c421,
+	0x9d21f5f4,
+	0x4221f507,
+/* 0x0a1d: ctx_xfer_exec */
+	0x16019808,
+	0x07f124bd,
+	0x03f00500,
+	0x0002d001,
+	0x1fb904bd,
+	0x00e7f102,
 	0x41e3f0a5,
-	0xf59d21f4,
-	0xbd026a21,
-	0xfc07f124,
-	0x0203f047,
-	0xbd0002d0,
-	0x012cf004,
-	0xf10320b6,
-	0xf04afc07,
-	0x02d00203,
-	0xf004bd00,
-	0xa5f001ac,
-	0x00b7f006,
-	0x98000c98,
-	0xe7f0010d,
-	0x6f21f500,
-	0x08a7f001,
-	0x011021f5,
-	0x025e21f5,
-	0xf01301f4,
-	0x21f40ca7,
-	0x05f7f0d0,
-	0x080421f5,
-/* 0x0a93: ctx_xfer_post */
-	0xf03202f4,
-	0x21f502f7,
-	0xf4bd077d,
-	0x07dc21f5,
-	0x027f21f5,
-	0x078f21f5,
-	0x21f5f4bd,
-	0x11f4077d,
-	0x40019810,
-	0xf40511fd,
-	0x21f5070b,
-/* 0x0abe: ctx_xfer_no_post_mmio */
-	0x21f50962,
-/* 0x0ac2: ctx_xfer_done */
-	0x00f8076c,
-	0x00000000,
-	0x00000000,
-	0x00000000,
-	0x00000000,
-	0x00000000,
-	0x00000000,
+	0xf09d21f4,
+	0x2cf001fc,
+	0x0124b602,
+	0xb905f2fd,
+	0xe7f102ff,
+	0xe3f0a504,
+	0x9d21f441,
+	0x026a21f5,
+	0x07f124bd,
+	0x03f047fc,
+	0x0002d002,
+	0x2cf004bd,
+	0x0320b601,
+	0x4afc07f1,
+	0xd00203f0,
+	0x04bd0002,
+	0xf001acf0,
+	0xb7f006a5,
+	0x000c9800,
+	0xf0010d98,
+	0x21f500e7,
+	0xa7f0016f,
+	0x1021f508,
+	0x5e21f501,
+	0x1301f402,
+	0xf40ca7f0,
+	0xf7f0d021,
+	0x2421f505,
+	0x3202f408,
+/* 0x0aac: ctx_xfer_post */
+	0xf502f7f0,
+	0xbd079d21,
+	0xfc21f5f4,
+	0x7f21f507,
+	0xaf21f502,
+	0xf5f4bd07,
+	0xf4079d21,
+	0x01981011,
+	0x0511fd40,
+	0xf5070bf4,
+/* 0x0ad7: ctx_xfer_no_post_mmio */
+	0xf5097b21,
+/* 0x0adb: ctx_xfer_done */
+	0xf8078c21,
 	0x00000000,
 	0x00000000,
 	0x00000000,
diff --git a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc.h b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc.h
index 04426dd6927ef3aa61ca6e3ce122c86bf0943493..469990713002edc214a13dc2136b73ab144fe18a 100644
--- a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc.h
+++ b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc.h
@@ -478,7 +478,7 @@ uint32_t nvd7_grhub_code[] = {
 	0xf0120007,
 	0x02d00003,
 	0xf104bd00,
-	0xfe06a817,
+	0xfe06c817,
 	0x24bd0010,
 	0x070007f1,
 	0xd00003f0,
@@ -527,48 +527,56 @@ uint32_t nvd7_grhub_code[] = {
 	0x03f00400,
 	0x0001d001,
 	0x17f104bd,
-	0x0e980100,
-	0x010f9800,
-	0x015021f5,
-	0xf1081495,
-	0xf0c00007,
-	0x04d00103,
-	0xf104bd00,
-	0xf0c10007,
-	0x04d00103,
-	0xb704bd00,
-	0xbb130030,
-	0xf5b6001f,
-	0x0007f102,
-	0x0103f0d3,
-	0xbd000fd0,
-	0x0815b604,
-	0xb60110b6,
-	0x1fb90814,
-	0xd321f502,
-	0x001fbb02,
-	0xf1020398,
-	0xf0200047,
-/* 0x04e2: init_gpc */
-	0x4ea05043,
-	0x1fb90804,
-	0x9d21f402,
-	0x010c4ea0,
-	0x21f4f4bd,
-	0x044ea09d,
-	0x9d21f401,
-	0x01004ea0,
-	0xf402f7f0,
+	0xf7f00100,
+	0x9d21f502,
+	0xaf21f507,
+	0x10f7f007,
+	0x07fc21f5,
+	0x98000e98,
+	0x21f5010f,
+	0x14950150,
+	0x0007f108,
+	0x0103f0c0,
+	0xbd0004d0,
+	0x0007f104,
+	0x0103f0c1,
+	0xbd0004d0,
+	0x0030b704,
+	0x001fbb13,
+	0xf102f5b6,
+	0xf0d30007,
+	0x0fd00103,
+	0xb604bd00,
+	0x10b60815,
+	0x0814b601,
+	0xf5021fb9,
+	0xbb02d321,
+	0x0398001f,
+	0x0047f102,
+	0x5043f020,
+/* 0x04f4: init_gpc */
+	0x08044ea0,
+	0xf4021fb9,
 	0x4ea09d21,
-/* 0x050a: init_gpc_wait */
-	0x21f40800,
-	0x1fffc868,
-	0xa0fa0bf4,
-	0xf408044e,
-	0x1fbb6821,
-	0x0040b700,
-	0x0132b680,
-	0xf1be1bf4,
+	0xf4bd010c,
+	0xa09d21f4,
+	0xf401044e,
+	0x4ea09d21,
+	0xf7f00100,
+	0x9d21f402,
+	0x08004ea0,
+/* 0x051c: init_gpc_wait */
+	0xc86821f4,
+	0x0bf41fff,
+	0x044ea0fa,
+	0x6821f408,
+	0xb7001fbb,
+	0xb6800040,
+	0x1bf40132,
+	0x00f7f0be,
+	0x07fc21f5,
+	0xf500f7f0,
+	0xf1079d21,
 	0xf0010007,
 	0x01d00203,
 	0xbd04bd00,
@@ -576,7 +584,7 @@ uint32_t nvd7_grhub_code[] = {
 	0x080007f1,
 	0xd00203f0,
 	0x04bd0001,
-/* 0x0544: main */
+/* 0x0564: main */
 	0xf40031f4,
 	0xd7f00028,
 	0x3921f410,
@@ -602,7 +610,7 @@ uint32_t nvd7_grhub_code[] = {
 	0x09d00203,
 	0xf404bd00,
 	0x31f40132,
-	0xb721f502,
+	0xd021f502,
 	0xf094bd09,
 	0x07f10799,
 	0x03f01700,
@@ -613,27 +621,27 @@ uint32_t nvd7_grhub_code[] = {
 	0x0203f00f,
 	0xbd0009d0,
 	0x0131f404,
-	0x09b721f5,
+	0x09d021f5,
 	0x99f094bd,
 	0x0007f106,
 	0x0203f017,
 	0xbd0009d0,
 	0x330ef404,
-/* 0x05ec: chsw_prev_no_next */
+/* 0x060c: chsw_prev_no_next */
 	0x12b920f9,
 	0x0132f402,
 	0xf50232f4,
-	0xfc09b721,
+	0xfc09d021,
 	0x0007f120,
 	0x0203f0c0,
 	0xbd0002d0,
 	0x130ef404,
-/* 0x060c: chsw_no_prev */
+/* 0x062c: chsw_no_prev */
 	0xf41f23c8,
 	0x31f40d0b,
 	0x0232f401,
-	0x09b721f5,
-/* 0x061c: chsw_done */
+	0x09d021f5,
+/* 0x063c: chsw_done */
 	0xf10127f0,
 	0xf0c30007,
 	0x02d00203,
@@ -643,12 +651,12 @@ uint32_t nvd7_grhub_code[] = {
 	0xd00203f0,
 	0x04bd0009,
 	0xff080ef5,
-/* 0x0640: main_not_ctx_switch */
+/* 0x0660: main_not_ctx_switch */
 	0xf401e4b0,
 	0xf2b90d1b,
-	0x4021f502,
+	0x6021f502,
 	0x460ef409,
-/* 0x0650: main_not_ctx_chan */
+/* 0x0670: main_not_ctx_chan */
 	0xf402e4b0,
 	0x94bd321b,
 	0xf10799f0,
@@ -656,24 +664,24 @@ uint32_t nvd7_grhub_code[] = {
 	0x09d00203,
 	0xf404bd00,
 	0x32f40132,
-	0xb721f502,
+	0xd021f502,
 	0xf094bd09,
 	0x07f10799,
 	0x03f01700,
 	0x0009d002,
 	0x0ef404bd,
-/* 0x0685: main_not_ctx_save */
+/* 0x06a5: main_not_ctx_save */
 	0x10ef9411,
 	0xf501f5f0,
 	0xf5037e21,
-/* 0x0693: main_done */
+/* 0x06b3: main_done */
 	0xbdfeb50e,
 	0x1f29f024,
 	0x080007f1,
 	0xd00203f0,
 	0x04bd0002,
 	0xfea00ef5,
-/* 0x06a8: ih */
+/* 0x06c8: ih */
 	0x88fe80f9,
 	0xf980f901,
 	0xf9a0f990,
@@ -694,19 +702,19 @@ uint32_t nvd7_grhub_code[] = {
 	0x07f101e7,
 	0x03f01d00,
 	0x000ed000,
-/* 0x06fa: ih_no_fifo */
+/* 0x071a: ih_no_fifo */
 	0xabe404bd,
 	0x0bf40100,
 	0x10d7f00d,
 	0x4001e7f1,
-/* 0x070b: ih_no_ctxsw */
+/* 0x072b: ih_no_ctxsw */
 	0xf10421f4,
 	0xbd0104b7,
 	0xb4abffb0,
 	0xf10f0bf4,
 	0xf0070007,
 	0x0bd00303,
-/* 0x0723: ih_no_other */
+/* 0x0743: ih_no_other */
 	0xf104bd00,
 	0xf0010007,
 	0x0ad00003,
@@ -716,36 +724,36 @@ uint32_t nvd7_grhub_code[] = {
 	0xfc90fca0,
 	0x0088fe80,
 	0x32f480fc,
-/* 0x0747: ctx_4160s */
+/* 0x0767: ctx_4160s */
 	0xf001f800,
 	0xffb901f7,
 	0x60e7f102,
 	0x40e3f041,
-/* 0x0757: ctx_4160s_wait */
+/* 0x0777: ctx_4160s_wait */
 	0xf19d21f4,
 	0xf04160e7,
 	0x21f440e3,
 	0x02ffb968,
 	0xf404ffc8,
 	0x00f8f00b,
-/* 0x076c: ctx_4160c */
+/* 0x078c: ctx_4160c */
 	0xffb9f4bd,
 	0x60e7f102,
 	0x40e3f041,
 	0xf89d21f4,
-/* 0x077d: ctx_4170s */
+/* 0x079d: ctx_4170s */
 	0x10f5f000,
 	0xf102ffb9,
 	0xf04170e7,
 	0x21f440e3,
-/* 0x078f: ctx_4170w */
+/* 0x07af: ctx_4170w */
 	0xf100f89d,
 	0xf04170e7,
 	0x21f440e3,
 	0x02ffb968,
 	0xf410f4f0,
 	0x00f8f01b,
-/* 0x07a4: ctx_redswitch */
+/* 0x07c4: ctx_redswitch */
 	0x0200e7f1,
 	0xf040e5f0,
 	0xe5f020e5,
@@ -753,7 +761,7 @@ uint32_t nvd7_grhub_code[] = {
 	0x0103f085,
 	0xbd000ed0,
 	0x08f7f004,
-/* 0x07c0: ctx_redswitch_delay */
+/* 0x07e0: ctx_redswitch_delay */
 	0xf401f2b6,
 	0xe5f1fd1b,
 	0xe5f10400,
@@ -761,7 +769,7 @@ uint32_t nvd7_grhub_code[] = {
 	0x03f08500,
 	0x000ed001,
 	0x00f804bd,
-/* 0x07dc: ctx_86c */
+/* 0x07fc: ctx_86c */
 	0x1b0007f1,
 	0xd00203f0,
 	0x04bd000f,
@@ -772,16 +780,16 @@ uint32_t nvd7_grhub_code[] = {
 	0xa86ce7f1,
 	0xf441e3f0,
 	0x00f89d21,
-/* 0x0804: ctx_mem */
+/* 0x0824: ctx_mem */
 	0x840007f1,
 	0xd00203f0,
 	0x04bd000f,
-/* 0x0810: ctx_mem_wait */
+/* 0x0830: ctx_mem_wait */
 	0x8400f7f1,
 	0xcf02f3f0,
 	0xfffd00ff,
 	0xf31bf405,
-/* 0x0822: ctx_load */
+/* 0x0842: ctx_load */
 	0x94bd00f8,
 	0xf10599f0,
 	0xf00f0007,
@@ -799,7 +807,7 @@ uint32_t nvd7_grhub_code[] = {
 	0x02d00203,
 	0xf004bd00,
 	0x21f507f7,
-	0x07f10804,
+	0x07f10824,
 	0x03f0c000,
 	0x0002d002,
 	0x0bfe04bd,
@@ -854,122 +862,114 @@ uint32_t nvd7_grhub_code[] = {
 	0x03f01700,
 	0x0009d002,
 	0x00f804bd,
-/* 0x0940: ctx_chan */
-	0x074721f5,
-	0x082221f5,
+/* 0x0960: ctx_chan */
+	0x076721f5,
+	0x084221f5,
 	0xf40ca7f0,
-	0x17f1d021,
-	0x14b60a10,
-	0x05f7f006,
-	0x080421f5,
-	0x076c21f5,
-/* 0x0962: ctx_mmio_exec */
-	0x039800f8,
-	0x0007f141,
-	0x0203f081,
-	0xbd0003d0,
-/* 0x0973: ctx_mmio_loop */
-	0xc434bd04,
-	0x1bf4ff34,
-	0x0057f10f,
-	0x0653f002,
-	0xf80535fa,
-/* 0x0985: ctx_mmio_pull */
-	0x804e9803,
-	0xf4814f98,
-	0x30b69d21,
-	0x0112b608,
-/* 0x0997: ctx_mmio_done */
-	0x98df1bf4,
-	0x07f11603,
+	0xf7f0d021,
+	0x2421f505,
+	0x8c21f508,
+/* 0x097b: ctx_mmio_exec */
+	0x9800f807,
+	0x07f14103,
 	0x03f08100,
 	0x0003d002,
-	0x008004bd,
-	0x0017f140,
-	0x0613f001,
-	0xf80601fa,
-/* 0x09b7: ctx_xfer */
-	0xf000f803,
-	0x07f104e7,
-	0x03f00200,
-	0x000ed003,
-/* 0x09c6: ctx_xfer_idle */
-	0xe7f104bd,
-	0xe3f00000,
-	0x00eecf03,
-	0x2000e4f1,
-	0xf4f21bf4,
-	0x02f40611,
-/* 0x09dd: ctx_xfer_pre */
-	0x10f7f011,
-	0x07dc21f5,
-	0x074721f5,
-/* 0x09eb: ctx_xfer_pre_load */
-	0xf01c11f4,
-	0x21f502f7,
-	0x21f5077d,
-	0x21f5078f,
-	0xf4bd07a4,
-	0x077d21f5,
-	0x082221f5,
-/* 0x0a04: ctx_xfer_exec */
-	0xbd160198,
-	0x0007f124,
-	0x0103f005,
-	0xbd0002d0,
-	0x021fb904,
-	0xa500e7f1,
-	0xf441e3f0,
-	0xfcf09d21,
-	0x022cf001,
-	0xfd0124b6,
-	0xffb905f2,
-	0x04e7f102,
+	0x34bd04bd,
+/* 0x098c: ctx_mmio_loop */
+	0xf4ff34c4,
+	0x57f10f1b,
+	0x53f00200,
+	0x0535fa06,
+/* 0x099e: ctx_mmio_pull */
+	0x4e9803f8,
+	0x814f9880,
+	0xb69d21f4,
+	0x12b60830,
+	0xdf1bf401,
+/* 0x09b0: ctx_mmio_done */
+	0xf1160398,
+	0xf0810007,
+	0x03d00203,
+	0x8004bd00,
+	0x17f14000,
+	0x13f00100,
+	0x0601fa06,
+	0x00f803f8,
+/* 0x09d0: ctx_xfer */
+	0xf104e7f0,
+	0xf0020007,
+	0x0ed00303,
+/* 0x09df: ctx_xfer_idle */
+	0xf104bd00,
+	0xf00000e7,
+	0xeecf03e3,
+	0x00e4f100,
+	0xf21bf420,
+	0xf40611f4,
+/* 0x09f6: ctx_xfer_pre */
+	0xf7f01102,
+	0xfc21f510,
+	0x6721f507,
+	0x1c11f407,
+/* 0x0a04: ctx_xfer_pre_load */
+	0xf502f7f0,
+	0xf5079d21,
+	0xf507af21,
+	0xbd07c421,
+	0x9d21f5f4,
+	0x4221f507,
+/* 0x0a1d: ctx_xfer_exec */
+	0x16019808,
+	0x07f124bd,
+	0x03f00500,
+	0x0002d001,
+	0x1fb904bd,
+	0x00e7f102,
 	0x41e3f0a5,
-	0xf59d21f4,
-	0xbd026a21,
-	0xfc07f124,
-	0x0203f047,
-	0xbd0002d0,
-	0x012cf004,
-	0xf10320b6,
-	0xf04afc07,
-	0x02d00203,
-	0xf004bd00,
-	0xa5f001ac,
-	0x00b7f006,
-	0x98000c98,
-	0xe7f0010d,
-	0x6f21f500,
-	0x08a7f001,
-	0x011021f5,
-	0x025e21f5,
-	0xf01301f4,
-	0x21f40ca7,
-	0x05f7f0d0,
-	0x080421f5,
-/* 0x0a93: ctx_xfer_post */
-	0xf03202f4,
-	0x21f502f7,
-	0xf4bd077d,
-	0x07dc21f5,
-	0x027f21f5,
-	0x078f21f5,
-	0x21f5f4bd,
-	0x11f4077d,
-	0x40019810,
-	0xf40511fd,
-	0x21f5070b,
-/* 0x0abe: ctx_xfer_no_post_mmio */
-	0x21f50962,
-/* 0x0ac2: ctx_xfer_done */
-	0x00f8076c,
-	0x00000000,
-	0x00000000,
-	0x00000000,
-	0x00000000,
-	0x00000000,
-	0x00000000,
+	0xf09d21f4,
+	0x2cf001fc,
+	0x0124b602,
+	0xb905f2fd,
+	0xe7f102ff,
+	0xe3f0a504,
+	0x9d21f441,
+	0x026a21f5,
+	0x07f124bd,
+	0x03f047fc,
+	0x0002d002,
+	0x2cf004bd,
+	0x0320b601,
+	0x4afc07f1,
+	0xd00203f0,
+	0x04bd0002,
+	0xf001acf0,
+	0xb7f006a5,
+	0x000c9800,
+	0xf0010d98,
+	0x21f500e7,
+	0xa7f0016f,
+	0x1021f508,
+	0x5e21f501,
+	0x1301f402,
+	0xf40ca7f0,
+	0xf7f0d021,
+	0x2421f505,
+	0x3202f408,
+/* 0x0aac: ctx_xfer_post */
+	0xf502f7f0,
+	0xbd079d21,
+	0xfc21f5f4,
+	0x7f21f507,
+	0xaf21f502,
+	0xf5f4bd07,
+	0xf4079d21,
+	0x01981011,
+	0x0511fd40,
+	0xf5070bf4,
+/* 0x0ad7: ctx_xfer_no_post_mmio */
+	0xf5097b21,
+/* 0x0adb: ctx_xfer_done */
+	0xf8078c21,
 	0x00000000,
 	0x00000000,
 	0x00000000,
diff --git a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
index a8776eaac05a1a78f5158c4092998dc468d63dd8..1fc990c5f85198ee587390ac3100c30fb7fda2dd 100644
--- a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
+++ b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
@@ -478,7 +478,7 @@ uint32_t nve0_grhub_code[] = {
 	0xf0120007,
 	0x02d00003,
 	0xf104bd00,
-	0xfe06a817,
+	0xfe06c817,
 	0x24bd0010,
 	0x070007f1,
 	0xd00003f0,
@@ -527,48 +527,56 @@ uint32_t nve0_grhub_code[] = {
 	0x03f00400,
 	0x0001d001,
 	0x17f104bd,
-	0x0e980100,
-	0x010f9800,
-	0x015021f5,
-	0xf1081495,
-	0xf0c00007,
-	0x04d00103,
-	0xf104bd00,
-	0xf0c10007,
-	0x04d00103,
-	0xb704bd00,
-	0xbb130030,
-	0xf5b6001f,
-	0x0007f102,
-	0x0103f0d3,
-	0xbd000fd0,
-	0x0815b604,
-	0xb60110b6,
-	0x1fb90814,
-	0xd321f502,
-	0x001fbb02,
-	0xf1020398,
-	0xf0200047,
-/* 0x04e2: init_gpc */
-	0x4ea05043,
-	0x1fb90804,
-	0x9d21f402,
-	0x010c4ea0,
-	0x21f4f4bd,
-	0x044ea09d,
-	0x9d21f401,
-	0x01004ea0,
-	0xf402f7f0,
+	0xf7f00100,
+	0x6721f502,
+	0x7921f507,
+	0x10f7f007,
+	0x07c621f5,
+	0x98000e98,
+	0x21f5010f,
+	0x14950150,
+	0x0007f108,
+	0x0103f0c0,
+	0xbd0004d0,
+	0x0007f104,
+	0x0103f0c1,
+	0xbd0004d0,
+	0x0030b704,
+	0x001fbb13,
+	0xf102f5b6,
+	0xf0d30007,
+	0x0fd00103,
+	0xb604bd00,
+	0x10b60815,
+	0x0814b601,
+	0xf5021fb9,
+	0xbb02d321,
+	0x0398001f,
+	0x0047f102,
+	0x5043f020,
+/* 0x04f4: init_gpc */
+	0x08044ea0,
+	0xf4021fb9,
+	0x4ea09d21,
+	0xf4bd010c,
+	0xa09d21f4,
+	0xf401044e,
 	0x4ea09d21,
-/* 0x050a: init_gpc_wait */
-	0x21f40800,
-	0x1fffc868,
-	0xa0fa0bf4,
-	0xf408044e,
-	0x1fbb6821,
-	0x0040b700,
-	0x0132b680,
-	0xf1be1bf4,
+	0xf7f00100,
+	0x9d21f402,
+	0x08004ea0,
+/* 0x051c: init_gpc_wait */
+	0xc86821f4,
+	0x0bf41fff,
+	0x044ea0fa,
+	0x6821f408,
+	0xb7001fbb,
+	0xb6800040,
+	0x1bf40132,
+	0x00f7f0be,
+	0x07c621f5,
+	0xf500f7f0,
+	0xf1076721,
 	0xf0010007,
 	0x01d00203,
 	0xbd04bd00,
@@ -576,7 +584,7 @@ uint32_t nve0_grhub_code[] = {
 	0x080007f1,
 	0xd00203f0,
 	0x04bd0001,
-/* 0x0544: main */
+/* 0x0564: main */
 	0xf40031f4,
 	0xd7f00028,
 	0x3921f410,
@@ -602,7 +610,7 @@ uint32_t nve0_grhub_code[] = {
 	0x09d00203,
 	0xf404bd00,
 	0x31f40132,
-	0x7921f502,
+	0x9221f502,
 	0xf094bd09,
 	0x07f10799,
 	0x03f01700,
@@ -613,27 +621,27 @@ uint32_t nve0_grhub_code[] = {
 	0x0203f00f,
 	0xbd0009d0,
 	0x0131f404,
-	0x097921f5,
+	0x099221f5,
 	0x99f094bd,
 	0x0007f106,
 	0x0203f017,
 	0xbd0009d0,
 	0x330ef404,
-/* 0x05ec: chsw_prev_no_next */
+/* 0x060c: chsw_prev_no_next */
 	0x12b920f9,
 	0x0132f402,
 	0xf50232f4,
-	0xfc097921,
+	0xfc099221,
 	0x0007f120,
 	0x0203f0c0,
 	0xbd0002d0,
 	0x130ef404,
-/* 0x060c: chsw_no_prev */
+/* 0x062c: chsw_no_prev */
 	0xf41f23c8,
 	0x31f40d0b,
 	0x0232f401,
-	0x097921f5,
-/* 0x061c: chsw_done */
+	0x099221f5,
+/* 0x063c: chsw_done */
 	0xf10127f0,
 	0xf0c30007,
 	0x02d00203,
@@ -643,12 +651,12 @@ uint32_t nve0_grhub_code[] = {
 	0xd00203f0,
 	0x04bd0009,
 	0xff080ef5,
-/* 0x0640: main_not_ctx_switch */
+/* 0x0660: main_not_ctx_switch */
 	0xf401e4b0,
 	0xf2b90d1b,
-	0x0a21f502,
+	0x2a21f502,
 	0x460ef409,
-/* 0x0650: main_not_ctx_chan */
+/* 0x0670: main_not_ctx_chan */
 	0xf402e4b0,
 	0x94bd321b,
 	0xf10799f0,
@@ -656,24 +664,24 @@ uint32_t nve0_grhub_code[] = {
 	0x09d00203,
 	0xf404bd00,
 	0x32f40132,
-	0x7921f502,
+	0x9221f502,
 	0xf094bd09,
 	0x07f10799,
 	0x03f01700,
 	0x0009d002,
 	0x0ef404bd,
-/* 0x0685: main_not_ctx_save */
+/* 0x06a5: main_not_ctx_save */
 	0x10ef9411,
 	0xf501f5f0,
 	0xf5037e21,
-/* 0x0693: main_done */
+/* 0x06b3: main_done */
 	0xbdfeb50e,
 	0x1f29f024,
 	0x080007f1,
 	0xd00203f0,
 	0x04bd0002,
 	0xfea00ef5,
-/* 0x06a8: ih */
+/* 0x06c8: ih */
 	0x88fe80f9,
 	0xf980f901,
 	0xf9a0f990,
@@ -694,19 +702,19 @@ uint32_t nve0_grhub_code[] = {
 	0x07f101e7,
 	0x03f01d00,
 	0x000ed000,
-/* 0x06fa: ih_no_fifo */
+/* 0x071a: ih_no_fifo */
 	0xabe404bd,
 	0x0bf40100,
 	0x10d7f00d,
 	0x4001e7f1,
-/* 0x070b: ih_no_ctxsw */
+/* 0x072b: ih_no_ctxsw */
 	0xf10421f4,
 	0xbd0104b7,
 	0xb4abffb0,
 	0xf10f0bf4,
 	0xf0070007,
 	0x0bd00303,
-/* 0x0723: ih_no_other */
+/* 0x0743: ih_no_other */
 	0xf104bd00,
 	0xf0010007,
 	0x0ad00003,
@@ -716,19 +724,19 @@ uint32_t nve0_grhub_code[] = {
 	0xfc90fca0,
 	0x0088fe80,
 	0x32f480fc,
-/* 0x0747: ctx_4170s */
+/* 0x0767: ctx_4170s */
 	0xf001f800,
 	0xffb910f5,
 	0x70e7f102,
 	0x40e3f041,
 	0xf89d21f4,
-/* 0x0759: ctx_4170w */
+/* 0x0779: ctx_4170w */
 	0x70e7f100,
 	0x40e3f041,
 	0xb96821f4,
 	0xf4f002ff,
 	0xf01bf410,
-/* 0x076e: ctx_redswitch */
+/* 0x078e: ctx_redswitch */
 	0xe7f100f8,
 	0xe5f00200,
 	0x20e5f040,
@@ -736,7 +744,7 @@ uint32_t nve0_grhub_code[] = {
 	0xf0850007,
 	0x0ed00103,
 	0xf004bd00,
-/* 0x078a: ctx_redswitch_delay */
+/* 0x07aa: ctx_redswitch_delay */
 	0xf2b608f7,
 	0xfd1bf401,
 	0x0400e5f1,
@@ -744,7 +752,7 @@ uint32_t nve0_grhub_code[] = {
 	0x850007f1,
 	0xd00103f0,
 	0x04bd000e,
-/* 0x07a6: ctx_86c */
+/* 0x07c6: ctx_86c */
 	0x07f100f8,
 	0x03f01b00,
 	0x000fd002,
@@ -755,17 +763,17 @@ uint32_t nve0_grhub_code[] = {
 	0xe7f102ff,
 	0xe3f0a86c,
 	0x9d21f441,
-/* 0x07ce: ctx_mem */
+/* 0x07ee: ctx_mem */
 	0x07f100f8,
 	0x03f08400,
 	0x000fd002,
-/* 0x07da: ctx_mem_wait */
+/* 0x07fa: ctx_mem_wait */
 	0xf7f104bd,
 	0xf3f08400,
 	0x00ffcf02,
 	0xf405fffd,
 	0x00f8f31b,
-/* 0x07ec: ctx_load */
+/* 0x080c: ctx_load */
 	0x99f094bd,
 	0x0007f105,
 	0x0203f00f,
@@ -782,7 +790,7 @@ uint32_t nve0_grhub_code[] = {
 	0x0203f083,
 	0xbd0002d0,
 	0x07f7f004,
-	0x07ce21f5,
+	0x07ee21f5,
 	0xc00007f1,
 	0xd00203f0,
 	0x04bd0002,
@@ -837,119 +845,111 @@ uint32_t nve0_grhub_code[] = {
 	0x170007f1,
 	0xd00203f0,
 	0x04bd0009,
-/* 0x090a: ctx_chan */
+/* 0x092a: ctx_chan */
 	0x21f500f8,
-	0xa7f007ec,
+	0xa7f0080c,
 	0xd021f40c,
-	0x0a1017f1,
-	0xf00614b6,
-	0x21f505f7,
-	0x00f807ce,
-/* 0x0924: ctx_mmio_exec */
-	0xf1410398,
-	0xf0810007,
-	0x03d00203,
-	0xbd04bd00,
-/* 0x0935: ctx_mmio_loop */
-	0xff34c434,
-	0xf10f1bf4,
-	0xf0020057,
-	0x35fa0653,
-/* 0x0947: ctx_mmio_pull */
-	0x9803f805,
-	0x4f98804e,
-	0x9d21f481,
-	0xb60830b6,
-	0x1bf40112,
-/* 0x0959: ctx_mmio_done */
-	0x160398df,
+	0xf505f7f0,
+	0xf807ee21,
+/* 0x093d: ctx_mmio_exec */
+	0x41039800,
 	0x810007f1,
 	0xd00203f0,
 	0x04bd0003,
-	0xf1400080,
-	0xf0010017,
-	0x01fa0613,
-	0xf803f806,
-/* 0x0979: ctx_xfer */
-	0x04e7f000,
-	0x020007f1,
-	0xd00303f0,
-	0x04bd000e,
-/* 0x0988: ctx_xfer_idle */
-	0x0000e7f1,
-	0xcf03e3f0,
-	0xe4f100ee,
-	0x1bf42000,
-	0x0611f4f2,
-/* 0x099f: ctx_xfer_pre */
-	0xf00d02f4,
-	0x21f510f7,
-	0x11f407a6,
-/* 0x09a9: ctx_xfer_pre_load */
-	0x02f7f01c,
-	0x074721f5,
-	0x075921f5,
-	0x076e21f5,
-	0x21f5f4bd,
-	0x21f50747,
-/* 0x09c2: ctx_xfer_exec */
-	0x019807ec,
-	0xf124bd16,
-	0xf0050007,
-	0x02d00103,
-	0xb904bd00,
-	0xe7f1021f,
-	0xe3f0a500,
-	0x9d21f441,
-	0xf001fcf0,
-	0x24b6022c,
-	0x05f2fd01,
-	0xf102ffb9,
-	0xf0a504e7,
+/* 0x094e: ctx_mmio_loop */
+	0x34c434bd,
+	0x0f1bf4ff,
+	0x020057f1,
+	0xfa0653f0,
+	0x03f80535,
+/* 0x0960: ctx_mmio_pull */
+	0x98804e98,
+	0x21f4814f,
+	0x0830b69d,
+	0xf40112b6,
+/* 0x0972: ctx_mmio_done */
+	0x0398df1b,
+	0x0007f116,
+	0x0203f081,
+	0xbd0003d0,
+	0x40008004,
+	0x010017f1,
+	0xfa0613f0,
+	0x03f80601,
+/* 0x0992: ctx_xfer */
+	0xe7f000f8,
+	0x0007f104,
+	0x0303f002,
+	0xbd000ed0,
+/* 0x09a1: ctx_xfer_idle */
+	0x00e7f104,
+	0x03e3f000,
+	0xf100eecf,
+	0xf42000e4,
+	0x11f4f21b,
+	0x0d02f406,
+/* 0x09b8: ctx_xfer_pre */
+	0xf510f7f0,
+	0xf407c621,
+/* 0x09c2: ctx_xfer_pre_load */
+	0xf7f01c11,
+	0x6721f502,
+	0x7921f507,
+	0x8e21f507,
+	0xf5f4bd07,
+	0xf5076721,
+/* 0x09db: ctx_xfer_exec */
+	0x98080c21,
+	0x24bd1601,
+	0x050007f1,
+	0xd00103f0,
+	0x04bd0002,
+	0xf1021fb9,
+	0xf0a500e7,
 	0x21f441e3,
-	0x6a21f59d,
-	0xf124bd02,
-	0xf047fc07,
-	0x02d00203,
-	0xf004bd00,
-	0x20b6012c,
-	0xfc07f103,
-	0x0203f04a,
-	0xbd0002d0,
-	0x01acf004,
-	0xf006a5f0,
-	0x0c9800b7,
-	0x010d9800,
-	0xf500e7f0,
-	0xf0016f21,
-	0x21f508a7,
-	0x21f50110,
-	0x01f4025e,
-	0x0ca7f013,
-	0xf0d021f4,
-	0x21f505f7,
-	0x02f407ce,
-/* 0x0a51: ctx_xfer_post */
-	0x02f7f02e,
-	0x074721f5,
-	0x21f5f4bd,
-	0x21f507a6,
-	0x21f5027f,
-	0xf4bd0759,
-	0x074721f5,
-	0x981011f4,
-	0x11fd4001,
-	0x070bf405,
-	0x092421f5,
-/* 0x0a7c: ctx_xfer_no_post_mmio */
-/* 0x0a7c: ctx_xfer_done */
-	0x000000f8,
-	0x00000000,
-	0x00000000,
-	0x00000000,
-	0x00000000,
-	0x00000000,
-	0x00000000,
+	0x01fcf09d,
+	0xb6022cf0,
+	0xf2fd0124,
+	0x02ffb905,
+	0xa504e7f1,
+	0xf441e3f0,
+	0x21f59d21,
+	0x24bd026a,
+	0x47fc07f1,
+	0xd00203f0,
+	0x04bd0002,
+	0xb6012cf0,
+	0x07f10320,
+	0x03f04afc,
+	0x0002d002,
+	0xacf004bd,
+	0x06a5f001,
+	0x9800b7f0,
+	0x0d98000c,
+	0x00e7f001,
+	0x016f21f5,
+	0xf508a7f0,
+	0xf5011021,
+	0xf4025e21,
+	0xa7f01301,
+	0xd021f40c,
+	0xf505f7f0,
+	0xf407ee21,
+/* 0x0a6a: ctx_xfer_post */
+	0xf7f02e02,
+	0x6721f502,
+	0xf5f4bd07,
+	0xf507c621,
+	0xf5027f21,
+	0xbd077921,
+	0x6721f5f4,
+	0x1011f407,
+	0xfd400198,
+	0x0bf40511,
+	0x3d21f507,
+/* 0x0a95: ctx_xfer_no_post_mmio */
+/* 0x0a95: ctx_xfer_done */
+	0x0000f809,
 	0x00000000,
 	0x00000000,
 	0x00000000,
diff --git a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h
index 0eca4aee3edbcad0363aa61d0bfad394991da9f1..dc89e4005decc07943fbc935f3aae10331a681c8 100644
--- a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h
+++ b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h
@@ -478,7 +478,7 @@ uint32_t nvf0_grhub_code[] = {
 	0xf0120007,
 	0x02d00003,
 	0xf104bd00,
-	0xfe06a817,
+	0xfe06c817,
 	0x24bd0010,
 	0x070007f1,
 	0xd00003f0,
@@ -527,48 +527,56 @@ uint32_t nvf0_grhub_code[] = {
 	0x03f00400,
 	0x0001d001,
 	0x17f104bd,
-	0x0e980100,
-	0x010f9800,
-	0x015021f5,
-	0xf1081495,
-	0xf0c00007,
-	0x04d00103,
-	0xf104bd00,
-	0xf0c10007,
-	0x04d00103,
-	0xb704bd00,
-	0xbb130030,
-	0xf5b6001f,
-	0x0007f102,
-	0x0103f0d3,
-	0xbd000fd0,
-	0x0815b604,
-	0xb60110b6,
-	0x1fb90814,
-	0xd321f502,
-	0x001fbb02,
-	0xf1020398,
-	0xf0200047,
-/* 0x04e2: init_gpc */
-	0x4ea05043,
-	0x1fb90804,
-	0x9d21f402,
-	0x010c4ea0,
-	0x21f4f4bd,
-	0x044ea09d,
-	0x9d21f401,
-	0x01004ea0,
-	0xf402f7f0,
+	0xf7f00100,
+	0x6721f502,
+	0x7921f507,
+	0x10f7f007,
+	0x07c621f5,
+	0x98000e98,
+	0x21f5010f,
+	0x14950150,
+	0x0007f108,
+	0x0103f0c0,
+	0xbd0004d0,
+	0x0007f104,
+	0x0103f0c1,
+	0xbd0004d0,
+	0x0030b704,
+	0x001fbb13,
+	0xf102f5b6,
+	0xf0d30007,
+	0x0fd00103,
+	0xb604bd00,
+	0x10b60815,
+	0x0814b601,
+	0xf5021fb9,
+	0xbb02d321,
+	0x0398001f,
+	0x0047f102,
+	0x5043f020,
+/* 0x04f4: init_gpc */
+	0x08044ea0,
+	0xf4021fb9,
+	0x4ea09d21,
+	0xf4bd010c,
+	0xa09d21f4,
+	0xf401044e,
 	0x4ea09d21,
-/* 0x050a: init_gpc_wait */
-	0x21f40800,
-	0x1fffc868,
-	0xa0fa0bf4,
-	0xf408044e,
-	0x1fbb6821,
-	0x0040b700,
-	0x0132b680,
-	0xf1be1bf4,
+	0xf7f00100,
+	0x9d21f402,
+	0x08004ea0,
+/* 0x051c: init_gpc_wait */
+	0xc86821f4,
+	0x0bf41fff,
+	0x044ea0fa,
+	0x6821f408,
+	0xb7001fbb,
+	0xb6800040,
+	0x1bf40132,
+	0x00f7f0be,
+	0x07c621f5,
+	0xf500f7f0,
+	0xf1076721,
 	0xf0010007,
 	0x01d00203,
 	0xbd04bd00,
@@ -576,7 +584,7 @@ uint32_t nvf0_grhub_code[] = {
 	0x300007f1,
 	0xd00203f0,
 	0x04bd0001,
-/* 0x0544: main */
+/* 0x0564: main */
 	0xf40031f4,
 	0xd7f00028,
 	0x3921f410,
@@ -602,7 +610,7 @@ uint32_t nvf0_grhub_code[] = {
 	0x09d00203,
 	0xf404bd00,
 	0x31f40132,
-	0x7921f502,
+	0x9221f502,
 	0xf094bd09,
 	0x07f10799,
 	0x03f01700,
@@ -613,27 +621,27 @@ uint32_t nvf0_grhub_code[] = {
 	0x0203f037,
 	0xbd0009d0,
 	0x0131f404,
-	0x097921f5,
+	0x099221f5,
 	0x99f094bd,
 	0x0007f106,
 	0x0203f017,
 	0xbd0009d0,
 	0x330ef404,
-/* 0x05ec: chsw_prev_no_next */
+/* 0x060c: chsw_prev_no_next */
 	0x12b920f9,
 	0x0132f402,
 	0xf50232f4,
-	0xfc097921,
+	0xfc099221,
 	0x0007f120,
 	0x0203f0c0,
 	0xbd0002d0,
 	0x130ef404,
-/* 0x060c: chsw_no_prev */
+/* 0x062c: chsw_no_prev */
 	0xf41f23c8,
 	0x31f40d0b,
 	0x0232f401,
-	0x097921f5,
-/* 0x061c: chsw_done */
+	0x099221f5,
+/* 0x063c: chsw_done */
 	0xf10127f0,
 	0xf0c30007,
 	0x02d00203,
@@ -643,12 +651,12 @@ uint32_t nvf0_grhub_code[] = {
 	0xd00203f0,
 	0x04bd0009,
 	0xff080ef5,
-/* 0x0640: main_not_ctx_switch */
+/* 0x0660: main_not_ctx_switch */
 	0xf401e4b0,
 	0xf2b90d1b,
-	0x0a21f502,
+	0x2a21f502,
 	0x460ef409,
-/* 0x0650: main_not_ctx_chan */
+/* 0x0670: main_not_ctx_chan */
 	0xf402e4b0,
 	0x94bd321b,
 	0xf10799f0,
@@ -656,24 +664,24 @@ uint32_t nvf0_grhub_code[] = {
 	0x09d00203,
 	0xf404bd00,
 	0x32f40132,
-	0x7921f502,
+	0x9221f502,
 	0xf094bd09,
 	0x07f10799,
 	0x03f01700,
 	0x0009d002,
 	0x0ef404bd,
-/* 0x0685: main_not_ctx_save */
+/* 0x06a5: main_not_ctx_save */
 	0x10ef9411,
 	0xf501f5f0,
 	0xf5037e21,
-/* 0x0693: main_done */
+/* 0x06b3: main_done */
 	0xbdfeb50e,
 	0x1f29f024,
 	0x300007f1,
 	0xd00203f0,
 	0x04bd0002,
 	0xfea00ef5,
-/* 0x06a8: ih */
+/* 0x06c8: ih */
 	0x88fe80f9,
 	0xf980f901,
 	0xf9a0f990,
@@ -694,19 +702,19 @@ uint32_t nvf0_grhub_code[] = {
 	0x07f101e7,
 	0x03f01d00,
 	0x000ed000,
-/* 0x06fa: ih_no_fifo */
+/* 0x071a: ih_no_fifo */
 	0xabe404bd,
 	0x0bf40100,
 	0x10d7f00d,
 	0x4001e7f1,
-/* 0x070b: ih_no_ctxsw */
+/* 0x072b: ih_no_ctxsw */
 	0xf10421f4,
 	0xbd0104b7,
 	0xb4abffb0,
 	0xf10f0bf4,
 	0xf0070007,
 	0x0bd00303,
-/* 0x0723: ih_no_other */
+/* 0x0743: ih_no_other */
 	0xf104bd00,
 	0xf0010007,
 	0x0ad00003,
@@ -716,19 +724,19 @@ uint32_t nvf0_grhub_code[] = {
 	0xfc90fca0,
 	0x0088fe80,
 	0x32f480fc,
-/* 0x0747: ctx_4170s */
+/* 0x0767: ctx_4170s */
 	0xf001f800,
 	0xffb910f5,
 	0x70e7f102,
 	0x40e3f041,
 	0xf89d21f4,
-/* 0x0759: ctx_4170w */
+/* 0x0779: ctx_4170w */
 	0x70e7f100,
 	0x40e3f041,
 	0xb96821f4,
 	0xf4f002ff,
 	0xf01bf410,
-/* 0x076e: ctx_redswitch */
+/* 0x078e: ctx_redswitch */
 	0xe7f100f8,
 	0xe5f00200,
 	0x20e5f040,
@@ -736,7 +744,7 @@ uint32_t nvf0_grhub_code[] = {
 	0xf0850007,
 	0x0ed00103,
 	0xf004bd00,
-/* 0x078a: ctx_redswitch_delay */
+/* 0x07aa: ctx_redswitch_delay */
 	0xf2b608f7,
 	0xfd1bf401,
 	0x0400e5f1,
@@ -744,28 +752,28 @@ uint32_t nvf0_grhub_code[] = {
 	0x850007f1,
 	0xd00103f0,
 	0x04bd000e,
-/* 0x07a6: ctx_86c */
+/* 0x07c6: ctx_86c */
 	0x07f100f8,
-	0x03f01b00,
+	0x03f02300,
 	0x000fd002,
 	0xffb904bd,
 	0x14e7f102,
 	0x40e3f08a,
 	0xb99d21f4,
 	0xe7f102ff,
-	0xe3f0a86c,
+	0xe3f0a88c,
 	0x9d21f441,
-/* 0x07ce: ctx_mem */
+/* 0x07ee: ctx_mem */
 	0x07f100f8,
 	0x03f08400,
 	0x000fd002,
-/* 0x07da: ctx_mem_wait */
+/* 0x07fa: ctx_mem_wait */
 	0xf7f104bd,
 	0xf3f08400,
 	0x00ffcf02,
 	0xf405fffd,
 	0x00f8f31b,
-/* 0x07ec: ctx_load */
+/* 0x080c: ctx_load */
 	0x99f094bd,
 	0x0007f105,
 	0x0203f037,
@@ -782,7 +790,7 @@ uint32_t nvf0_grhub_code[] = {
 	0x0203f083,
 	0xbd0002d0,
 	0x07f7f004,
-	0x07ce21f5,
+	0x07ee21f5,
 	0xc00007f1,
 	0xd00203f0,
 	0x04bd0002,
@@ -837,119 +845,111 @@ uint32_t nvf0_grhub_code[] = {
 	0x170007f1,
 	0xd00203f0,
 	0x04bd0009,
-/* 0x090a: ctx_chan */
+/* 0x092a: ctx_chan */
 	0x21f500f8,
-	0xa7f007ec,
+	0xa7f0080c,
 	0xd021f40c,
-	0x0a1017f1,
-	0xf00614b6,
-	0x21f505f7,
-	0x00f807ce,
-/* 0x0924: ctx_mmio_exec */
-	0xf1410398,
-	0xf0810007,
-	0x03d00203,
-	0xbd04bd00,
-/* 0x0935: ctx_mmio_loop */
-	0xff34c434,
-	0xf10f1bf4,
-	0xf0020057,
-	0x35fa0653,
-/* 0x0947: ctx_mmio_pull */
-	0x9803f805,
-	0x4f98804e,
-	0x9d21f481,
-	0xb60830b6,
-	0x1bf40112,
-/* 0x0959: ctx_mmio_done */
-	0x160398df,
+	0xf505f7f0,
+	0xf807ee21,
+/* 0x093d: ctx_mmio_exec */
+	0x41039800,
 	0x810007f1,
 	0xd00203f0,
 	0x04bd0003,
-	0xf1400080,
-	0xf0010017,
-	0x01fa0613,
-	0xf803f806,
-/* 0x0979: ctx_xfer */
-	0x04e7f000,
-	0x020007f1,
-	0xd00303f0,
-	0x04bd000e,
-/* 0x0988: ctx_xfer_idle */
-	0x0000e7f1,
-	0xcf03e3f0,
-	0xe4f100ee,
-	0x1bf42000,
-	0x0611f4f2,
-/* 0x099f: ctx_xfer_pre */
-	0xf00d02f4,
-	0x21f510f7,
-	0x11f407a6,
-/* 0x09a9: ctx_xfer_pre_load */
-	0x02f7f01c,
-	0x074721f5,
-	0x075921f5,
-	0x076e21f5,
-	0x21f5f4bd,
-	0x21f50747,
-/* 0x09c2: ctx_xfer_exec */
-	0x019807ec,
-	0xf124bd16,
-	0xf0050007,
-	0x02d00103,
-	0xb904bd00,
-	0xe7f1021f,
-	0xe3f0a500,
-	0x9d21f441,
-	0xf001fcf0,
-	0x24b6022c,
-	0x05f2fd01,
-	0xf102ffb9,
-	0xf0a504e7,
+/* 0x094e: ctx_mmio_loop */
+	0x34c434bd,
+	0x0f1bf4ff,
+	0x020057f1,
+	0xfa0653f0,
+	0x03f80535,
+/* 0x0960: ctx_mmio_pull */
+	0x98804e98,
+	0x21f4814f,
+	0x0830b69d,
+	0xf40112b6,
+/* 0x0972: ctx_mmio_done */
+	0x0398df1b,
+	0x0007f116,
+	0x0203f081,
+	0xbd0003d0,
+	0x40008004,
+	0x010017f1,
+	0xfa0613f0,
+	0x03f80601,
+/* 0x0992: ctx_xfer */
+	0xe7f000f8,
+	0x0007f104,
+	0x0303f002,
+	0xbd000ed0,
+/* 0x09a1: ctx_xfer_idle */
+	0x00e7f104,
+	0x03e3f000,
+	0xf100eecf,
+	0xf42000e4,
+	0x11f4f21b,
+	0x0d02f406,
+/* 0x09b8: ctx_xfer_pre */
+	0xf510f7f0,
+	0xf407c621,
+/* 0x09c2: ctx_xfer_pre_load */
+	0xf7f01c11,
+	0x6721f502,
+	0x7921f507,
+	0x8e21f507,
+	0xf5f4bd07,
+	0xf5076721,
+/* 0x09db: ctx_xfer_exec */
+	0x98080c21,
+	0x24bd1601,
+	0x050007f1,
+	0xd00103f0,
+	0x04bd0002,
+	0xf1021fb9,
+	0xf0a500e7,
 	0x21f441e3,
-	0x6a21f59d,
-	0xf124bd02,
-	0xf047fc07,
-	0x02d00203,
-	0xf004bd00,
-	0x20b6012c,
-	0xfc07f103,
-	0x0203f04a,
-	0xbd0002d0,
-	0x01acf004,
-	0xf006a5f0,
-	0x0c9800b7,
-	0x010d9800,
-	0xf500e7f0,
-	0xf0016f21,
-	0x21f508a7,
-	0x21f50110,
-	0x01f4025e,
-	0x0ca7f013,
-	0xf0d021f4,
-	0x21f505f7,
-	0x02f407ce,
-/* 0x0a51: ctx_xfer_post */
-	0x02f7f02e,
-	0x074721f5,
-	0x21f5f4bd,
-	0x21f507a6,
-	0x21f5027f,
-	0xf4bd0759,
-	0x074721f5,
-	0x981011f4,
-	0x11fd4001,
-	0x070bf405,
-	0x092421f5,
-/* 0x0a7c: ctx_xfer_no_post_mmio */
-/* 0x0a7c: ctx_xfer_done */
-	0x000000f8,
-	0x00000000,
-	0x00000000,
-	0x00000000,
-	0x00000000,
-	0x00000000,
-	0x00000000,
+	0x01fcf09d,
+	0xb6022cf0,
+	0xf2fd0124,
+	0x02ffb905,
+	0xa504e7f1,
+	0xf441e3f0,
+	0x21f59d21,
+	0x24bd026a,
+	0x47fc07f1,
+	0xd00203f0,
+	0x04bd0002,
+	0xb6012cf0,
+	0x07f10320,
+	0x03f04afc,
+	0x0002d002,
+	0xacf004bd,
+	0x06a5f001,
+	0x9800b7f0,
+	0x0d98000c,
+	0x00e7f001,
+	0x016f21f5,
+	0xf508a7f0,
+	0xf5011021,
+	0xf4025e21,
+	0xa7f01301,
+	0xd021f40c,
+	0xf505f7f0,
+	0xf407ee21,
+/* 0x0a6a: ctx_xfer_post */
+	0xf7f02e02,
+	0x6721f502,
+	0xf5f4bd07,
+	0xf507c621,
+	0xf5027f21,
+	0xbd077921,
+	0x6721f5f4,
+	0x1011f407,
+	0xfd400198,
+	0x0bf40511,
+	0x3d21f507,
+/* 0x0a95: ctx_xfer_no_post_mmio */
+/* 0x0a95: ctx_xfer_done */
+	0x0000f809,
 	0x00000000,
 	0x00000000,
 	0x00000000,
diff --git a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/macros.fuc b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/macros.fuc
index c1ea0c9b7fe42257b6b83d5d85e7230f2c011449..7593fbcf00b91cbef302182256f8bd66c1f7abdb 100644
--- a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/macros.fuc
+++ b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/macros.fuc
@@ -80,9 +80,11 @@
 #define NV_PGRAPH_FECS_CC_SCRATCH_VAL(n)                    ((n) * 4 + 0x409800)
 #define NV_PGRAPH_FECS_CC_SCRATCH_SET(n)                    ((n) * 4 + 0x409820)
 #define NV_PGRAPH_FECS_CC_SCRATCH_CLR(n)                    ((n) * 4 + 0x409840)
+#define NV_PGRAPH_FECS_UNK86C                                          0x40986c
 #else
 #define NV_PGRAPH_FECS_CC_SCRATCH_VAL(n)                    ((n) * 4 + 0x409800)
 #define NV_PGRAPH_FECS_CC_SCRATCH_CLR(n)                    ((n) * 4 + 0x409840)
+#define NV_PGRAPH_FECS_UNK86C                                          0x40988c
 #define NV_PGRAPH_FECS_CC_SCRATCH_SET(n)                    ((n) * 4 + 0x4098c0)
 #endif
 #define NV_PGRAPH_FECS_STRANDS_CNT                                     0x409880
@@ -142,9 +144,11 @@
 #define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_VAL(n)              ((n) * 4 + 0x41a800)
 #define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_SET(n)              ((n) * 4 + 0x41a820)
 #define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_CLR(n)              ((n) * 4 + 0x41a840)
+#define NV_PGRAPH_GPCX_GPCCS_UNK86C                                    0x41a86c
 #else
 #define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_VAL(n)              ((n) * 4 + 0x41a800)
 #define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_CLR(n)              ((n) * 4 + 0x41a840)
+#define NV_PGRAPH_GPCX_GPCCS_UNK86C                                    0x41a88c
 #define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_SET(n)              ((n) * 4 + 0x41a8c0)
 #endif
 #define NV_PGRAPH_GPCX_GPCCS_STRAND_SELECT                             0x41a91c