Interface to set the PMU counter mask of a specific slot.

v3: Add macros documenting the command.

Signed-off-by: Karol Herbst <karolher...@gmail.com>
---
 drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h | 889 ++++++++++++++-------------
 drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h | 825 ++++++++++++-------------
 drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h | 245 ++++----
 drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h | 763 +++++++++++------------
 drm/nouveau/nvkm/subdev/pmu/fuc/os.h         |   4 +
 drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc     |   9 +
 6 files changed, 1376 insertions(+), 1359 deletions(-)

diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h 
b/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h
index 2cbdcdff..0838d503 100644
--- a/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h
+++ b/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h
@@ -68,7 +68,7 @@ uint32_t gf100_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x46524550,
-       0x0000094b,
+       0x00000965,
        0x00000758,
        0x00000000,
        0x00000000,
@@ -90,8 +90,8 @@ uint32_t gf100_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x5f433249,
-       0x00000e01,
-       0x00000ca4,
+       0x00000e1b,
+       0x00000cbe,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -112,8 +112,8 @@ uint32_t gf100_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x54534554,
-       0x00000e2a,
-       0x00000e03,
+       0x00000e44,
+       0x00000e1d,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -134,8 +134,8 @@ uint32_t gf100_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x454c4449,
-       0x00000e36,
-       0x00000e34,
+       0x00000e50,
+       0x00000e4e,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -1463,518 +1463,519 @@ uint32_t gf100_pmu_code[] = {
        0x4f48a7f1,
        0x5453a3f1,
        0xf506eab8,
-       0xf100811b,
+       0xf1009b1b,
        0xf00001a7,
        0xdab800a3,
-       0x070bf406,
-       0x008b0ef5,
-/* 0x0778: perf_recv_get_slots */
-       0x0cd207f1,
+       0x140bf406,
+       0x0002a7f1,
+       0xb800a3f0,
+       0x0bf406da,
+       0x980ef573,
+/* 0x0785: perf_recv_get_slots */
+       0xd207f100,
+       0x0003f00c,
+       0xbd000c18,
+       0x08c4b604,
+       0x0cd107f1,
        0x180003f0,
        0x04bd000c,
        0xf108c4b6,
-       0xf00cd107,
+       0xf00cd007,
        0x0c180003,
        0xb604bd00,
-       0x07f108c4,
-       0x03f00cd0,
-       0x000c1800,
-       0xc4b604bd,
-       0xffc5f008,
-       0x0cd607f1,
+       0xc5f008c4,
+       0xd607f1ff,
+       0x0003f00c,
+       0xbd000b18,
+       0x08b4b604,
+       0x0cd507f1,
        0x180003f0,
        0x04bd000b,
        0xf108b4b6,
-       0xf00cd507,
+       0xf00cd407,
        0x0b180003,
        0xb604bd00,
        0x07f108b4,
-       0x03f00cd4,
+       0x03f00cd3,
        0x000b1800,
-       0xb4b604bd,
-       0xd307f108,
-       0x0003f00c,
-       0xbd000b18,
-       0x1e0ef404,
-/* 0x07e4: perf_recv_not_host */
-       0x080521f5,
-       0x0ccc07f1,
-       0x980003f0,
+       0x0ef404bd,
+/* 0x07f1: perf_recv_set_slot */
+       0x10c0f02b,
+       0x0504c0b7,
+       0xf400cbd0,
+/* 0x07fe: perf_recv_not_host */
+       0x21f5220e,
+       0x07f1081f,
+       0x03f00ccc,
+       0x000e9800,
+       0x21f504bd,
+       0x21f5022a,
+       0x0ef40256,
+/* 0x0819: perf_recv_host */
+       0x3621f507,
+/* 0x081d: perf_recv_exit */
+/* 0x081f: perf_counter_readout */
+       0xf900f803,
+       0xf920f910,
+       0xf940f930,
+       0xf960f950,
+       0xf180f970,
+       0xb6050817,
+       0x11cf0614,
+       0x1827f100,
+       0x0624b605,
+       0xf10022cf,
+       0xb6052837,
+       0x33cf0634,
+       0x3847f100,
+       0x0644b605,
+       0xf10044cf,
+       0xb6054857,
+       0x55cf0654,
+       0x5867f100,
+       0x0664b605,
+       0xf10066cf,
+       0xb6056877,
+       0x77cf0674,
+       0x7887f100,
+       0x0684b605,
+       0xf10088cf,
+       0xf10000e7,
+       0xf18000e3,
+       0xb6050807,
+       0x0ed00604,
+       0xf104bd00,
+       0xb6051807,
+       0x0ed00604,
+       0xf104bd00,
+       0xb6052807,
+       0x0ed00604,
+       0xf104bd00,
+       0xb6053807,
+       0x0ed00604,
+       0xf104bd00,
+       0xb6054807,
+       0x0ed00604,
+       0xf104bd00,
+       0xb6055807,
+       0x0ed00604,
+       0xf104bd00,
+       0xb6056807,
+       0x0ed00604,
+       0xf104bd00,
+       0xb6057807,
+       0x0ed00604,
+       0xcc04bd00,
+       0x21ffff11,
+       0x3c31ff2c,
+       0xff4c41ff,
+       0x61ff5c51,
+       0x7c71ff6c,
+       0xf18c81ff,
+       0xf00cd007,
+       0x02000003,
+       0xf104bd00,
+       0xf00cd107,
+       0x03000003,
+       0xf104bd00,
+       0xf00cd207,
+       0x04000003,
+       0xf104bd00,
+       0xf00cd307,
+       0x05000003,
+       0xf104bd00,
+       0xf00cd407,
+       0x06000003,
+       0xf104bd00,
+       0xf00cd507,
+       0x07000003,
+       0xf104bd00,
+       0xf00cd607,
+       0x08000003,
+       0xfc04bd00,
+       0xfc70fc80,
+       0xfc50fc60,
+       0xfc30fc40,
+       0xf810fc20,
+/* 0x0965: perf_init */
+       0x03e7f100,
+       0x00e3f000,
+       0x050c07f1,
+       0xd00604b6,
        0x04bd000e,
-       0x022a21f5,
-       0x025621f5,
-/* 0x07ff: perf_recv_host */
-       0xf5070ef4,
-/* 0x0803: perf_recv_exit */
-       0xf8033621,
-/* 0x0805: perf_counter_readout */
-       0xf910f900,
-       0xf930f920,
-       0xf950f940,
-       0xf970f960,
-       0x0817f180,
-       0x0614b605,
-       0xf10011cf,
-       0xb6051827,
-       0x22cf0624,
-       0x2837f100,
-       0x0634b605,
-       0xf10033cf,
-       0xb6053847,
-       0x44cf0644,
-       0x4857f100,
-       0x0654b605,
-       0xf10055cf,
-       0xb6055867,
-       0x66cf0664,
-       0x6877f100,
-       0x0674b605,
-       0xf10077cf,
-       0xb6057887,
-       0x88cf0684,
-       0x00e7f100,
-       0x00e3f100,
-       0x0807f180,
-       0x0604b605,
-       0xbd000ed0,
-       0x1807f104,
-       0x0604b605,
-       0xbd000ed0,
-       0x2807f104,
-       0x0604b605,
-       0xbd000ed0,
-       0x3807f104,
-       0x0604b605,
-       0xbd000ed0,
-       0x4807f104,
-       0x0604b605,
-       0xbd000ed0,
-       0x5807f104,
-       0x0604b605,
-       0xbd000ed0,
-       0x6807f104,
-       0x0604b605,
-       0xbd000ed0,
-       0x7807f104,
-       0x0604b605,
-       0xbd000ed0,
-       0xff11cc04,
-       0xff2c21ff,
-       0x41ff3c31,
-       0x5c51ff4c,
-       0xff6c61ff,
-       0x81ff7c71,
-       0xd007f18c,
-       0x0003f00c,
-       0xbd000200,
-       0xd107f104,
-       0x0003f00c,
-       0xbd000300,
-       0xd207f104,
-       0x0003f00c,
-       0xbd000400,
-       0xd307f104,
-       0x0003f00c,
-       0xbd000500,
-       0xd407f104,
-       0x0003f00c,
-       0xbd000600,
-       0xd507f104,
-       0x0003f00c,
-       0xbd000700,
-       0xd607f104,
-       0x0003f00c,
-       0xbd000800,
-       0xfc80fc04,
-       0xfc60fc70,
-       0xfc40fc50,
-       0xfc20fc30,
-/* 0x094b: perf_init */
-       0xf100f810,
-       0xf00003e7,
-       0x07f100e3,
-       0x04b6050c,
-       0x000ed006,
-       0xe7f104bd,
-       0xe3f00002,
-       0x1c07f100,
-       0x0604b605,
-       0xbd000ed0,
-       0x2c07f104,
-       0x0604b605,
-       0xbd000ed0,
-       0x3c07f104,
-       0x0604b605,
-       0xbd000ed0,
-       0x4c07f104,
-       0x0604b605,
-       0xbd000ed0,
-       0x5c07f104,
-       0x0604b605,
-       0xbd000ed0,
-       0x6c07f104,
-       0x0604b605,
-       0xbd000ed0,
-       0x7c07f104,
-       0x0604b605,
-       0xbd000ed0,
-       0x0521f504,
-       0xcc07f108,
-       0x0003f00c,
-       0xbd000e98,
-       0x2a21f504,
-       0x5621f502,
-/* 0x09d3: i2c_drive_scl */
-       0xb000f802,
-       0x0bf40036,
-       0xe007f111,
-       0x0604b607,
-       0xbd0001d0,
-/* 0x09e7: i2c_drive_scl_lo */
-       0xf100f804,
-       0xb607e407,
-       0x01d00604,
-       0xf804bd00,
-/* 0x09f5: i2c_drive_sda */
+       0x0002e7f1,
+       0xf100e3f0,
+       0xb6051c07,
+       0x0ed00604,
+       0xf104bd00,
+       0xb6052c07,
+       0x0ed00604,
+       0xf104bd00,
+       0xb6053c07,
+       0x0ed00604,
+       0xf104bd00,
+       0xb6054c07,
+       0x0ed00604,
+       0xf104bd00,
+       0xb6055c07,
+       0x0ed00604,
+       0xf104bd00,
+       0xb6056c07,
+       0x0ed00604,
+       0xf104bd00,
+       0xb6057c07,
+       0x0ed00604,
+       0xf504bd00,
+       0xf1081f21,
+       0xf00ccc07,
+       0x0e980003,
+       0xf504bd00,
+       0xf5022a21,
+       0xf8025621,
+/* 0x09ed: i2c_drive_scl */
        0x0036b000,
        0xf1110bf4,
        0xb607e007,
-       0x02d00604,
+       0x01d00604,
        0xf804bd00,
-/* 0x0a09: i2c_drive_sda_lo */
+/* 0x0a01: i2c_drive_scl_lo */
        0xe407f100,
        0x0604b607,
+       0xbd0001d0,
+/* 0x0a0f: i2c_drive_sda */
+       0xb000f804,
+       0x0bf40036,
+       0xe007f111,
+       0x0604b607,
        0xbd0002d0,
-/* 0x0a17: i2c_sense_scl */
-       0xf400f804,
-       0x37f10132,
-       0x34b607c4,
-       0x0033cf06,
-       0xf40431fd,
-       0x31f4060b,
-/* 0x0a2d: i2c_sense_scl_done */
-/* 0x0a2f: i2c_sense_sda */
-       0xf400f801,
-       0x37f10132,
-       0x34b607c4,
-       0x0033cf06,
-       0xf40432fd,
-       0x31f4060b,
-/* 0x0a45: i2c_sense_sda_done */
-/* 0x0a47: i2c_raise_scl */
-       0xf900f801,
-       0x9847f140,
-       0x0137f008,
-       0x09d321f5,
-/* 0x0a54: i2c_raise_scl_wait */
-       0x03e8e7f1,
-       0xf57e21f4,
-       0xf40a1721,
-       0x42b60901,
-       0xef1bf401,
-/* 0x0a68: i2c_raise_scl_done */
-       0x00f840fc,
-/* 0x0a6c: i2c_start */
-       0x0a1721f5,
-       0xf50d11f4,
-       0xf40a2f21,
-       0x0ef40611,
-/* 0x0a7d: i2c_start_rep */
-       0x0037f030,
-       0x09d321f5,
-       0xf50137f0,
-       0xbb09f521,
-       0x65b60076,
-       0x9450f904,
-       0x56bb0465,
-       0xfd50bd02,
-       0x50fc0475,
-       0x0a4721f5,
-       0xf40464b6,
-/* 0x0aaa: i2c_start_send */
-       0x37f01f11,
-       0xf521f500,
-       0x88e7f109,
-       0x7e21f413,
+/* 0x0a23: i2c_drive_sda_lo */
+       0xf100f804,
+       0xb607e407,
+       0x02d00604,
+       0xf804bd00,
+/* 0x0a31: i2c_sense_scl */
+       0x0132f400,
+       0x07c437f1,
+       0xcf0634b6,
+       0x31fd0033,
+       0x060bf404,
+/* 0x0a47: i2c_sense_scl_done */
+       0xf80131f4,
+/* 0x0a49: i2c_sense_sda */
+       0x0132f400,
+       0x07c437f1,
+       0xcf0634b6,
+       0x32fd0033,
+       0x060bf404,
+/* 0x0a5f: i2c_sense_sda_done */
+       0xf80131f4,
+/* 0x0a61: i2c_raise_scl */
+       0xf140f900,
+       0xf0089847,
+       0x21f50137,
+/* 0x0a6e: i2c_raise_scl_wait */
+       0xe7f109ed,
+       0x21f403e8,
+       0x3121f57e,
+       0x0901f40a,
+       0xf40142b6,
+/* 0x0a82: i2c_raise_scl_done */
+       0x40fcef1b,
+/* 0x0a86: i2c_start */
+       0x21f500f8,
+       0x11f40a31,
+       0x4921f50d,
+       0x0611f40a,
+/* 0x0a97: i2c_start_rep */
+       0xf0300ef4,
+       0x21f50037,
+       0x37f009ed,
+       0x0f21f501,
+       0x0076bb0a,
+       0xf90465b6,
+       0x04659450,
+       0xbd0256bb,
+       0x0475fd50,
+       0x21f550fc,
+       0x64b60a61,
+       0x1f11f404,
+/* 0x0ac4: i2c_start_send */
        0xf50037f0,
-       0xf109d321,
+       0xf10a0f21,
        0xf41388e7,
-/* 0x0ac6: i2c_start_out */
-       0x00f87e21,
-/* 0x0ac8: i2c_stop */
-       0xf50037f0,
-       0xf009d321,
-       0x21f50037,
-       0xe7f109f5,
-       0x21f403e8,
-       0x0137f07e,
-       0x09d321f5,
-       0x1388e7f1,
+       0x37f07e21,
+       0xed21f500,
+       0x88e7f109,
+       0x7e21f413,
+/* 0x0ae0: i2c_start_out */
+/* 0x0ae2: i2c_stop */
+       0x37f000f8,
+       0xed21f500,
+       0x0037f009,
+       0x0a0f21f5,
+       0x03e8e7f1,
        0xf07e21f4,
        0x21f50137,
-       0xe7f109f5,
+       0xe7f109ed,
        0x21f41388,
-/* 0x0afb: i2c_bitw */
-       0xf500f87e,
-       0xf109f521,
-       0xf403e8e7,
-       0x76bb7e21,
-       0x0465b600,
-       0x659450f9,
-       0x0256bb04,
-       0x75fd50bd,
-       0xf550fc04,
-       0xb60a4721,
-       0x11f40464,
-       0x88e7f118,
-       0x7e21f413,
-       0xf50037f0,
-       0xf109d321,
+       0x0137f07e,
+       0x0a0f21f5,
+       0x1388e7f1,
+       0xf87e21f4,
+/* 0x0b15: i2c_bitw */
+       0x0f21f500,
+       0xe8e7f10a,
+       0x7e21f403,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0x6121f550,
+       0x0464b60a,
+       0xf11811f4,
        0xf41388e7,
-/* 0x0b3a: i2c_bitw_out */
-       0x00f87e21,
-/* 0x0b3c: i2c_bitr */
-       0xf50137f0,
-       0xf109f521,
-       0xf403e8e7,
-       0x76bb7e21,
+       0x37f07e21,
+       0xed21f500,
+       0x88e7f109,
+       0x7e21f413,
+/* 0x0b54: i2c_bitw_out */
+/* 0x0b56: i2c_bitr */
+       0x37f000f8,
+       0x0f21f501,
+       0xe8e7f10a,
+       0x7e21f403,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0x6121f550,
+       0x0464b60a,
+       0xf51b11f4,
+       0xf00a4921,
+       0x21f50037,
+       0xe7f109ed,
+       0x21f41388,
+       0x013cf07e,
+/* 0x0b9b: i2c_bitr_done */
+       0xf80131f4,
+/* 0x0b9d: i2c_get_byte */
+       0x0057f000,
+/* 0x0ba3: i2c_get_byte_next */
+       0xb60847f0,
+       0x76bb0154,
        0x0465b600,
        0x659450f9,
        0x0256bb04,
        0x75fd50bd,
        0xf550fc04,
-       0xb60a4721,
+       0xb60b5621,
        0x11f40464,
-       0x2f21f51b,
-       0x0037f00a,
-       0x09d321f5,
-       0x1388e7f1,
-       0xf07e21f4,
-       0x31f4013c,
-/* 0x0b81: i2c_bitr_done */
-/* 0x0b83: i2c_get_byte */
-       0xf000f801,
-       0x47f00057,
-/* 0x0b89: i2c_get_byte_next */
-       0x0154b608,
+       0x0553fd2b,
+       0xf40142b6,
+       0x37f0d81b,
+       0x0076bb01,
+       0xf90465b6,
+       0x04659450,
+       0xbd0256bb,
+       0x0475fd50,
+       0x21f550fc,
+       0x64b60b15,
+/* 0x0bed: i2c_get_byte_done */
+/* 0x0bef: i2c_put_byte */
+       0xf000f804,
+/* 0x0bf2: i2c_put_byte_next */
+       0x42b60847,
+       0x3854ff01,
        0xb60076bb,
        0x50f90465,
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x3c21f550,
+       0x1521f550,
        0x0464b60b,
-       0xfd2b11f4,
-       0x42b60553,
-       0xd81bf401,
-       0xbb0137f0,
-       0x65b60076,
-       0x9450f904,
-       0x56bb0465,
-       0xfd50bd02,
-       0x50fc0475,
-       0x0afb21f5,
-/* 0x0bd3: i2c_get_byte_done */
-       0xf80464b6,
-/* 0x0bd5: i2c_put_byte */
-       0x0847f000,
-/* 0x0bd8: i2c_put_byte_next */
-       0xff0142b6,
-       0x76bb3854,
+       0xb03411f4,
+       0x1bf40046,
+       0x0076bbd8,
+       0xf90465b6,
+       0x04659450,
+       0xbd0256bb,
+       0x0475fd50,
+       0x21f550fc,
+       0x64b60b56,
+       0x0f11f404,
+       0xb00076bb,
+       0x1bf40136,
+       0x0132f406,
+/* 0x0c48: i2c_put_byte_done */
+/* 0x0c4a: i2c_addr */
+       0x76bb00f8,
        0x0465b600,
        0x659450f9,
        0x0256bb04,
        0x75fd50bd,
        0xf550fc04,
-       0xb60afb21,
+       0xb60a8621,
        0x11f40464,
-       0x0046b034,
-       0xbbd81bf4,
+       0x2ec3e729,
+       0x0134b601,
+       0xbb0553fd,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x0b3c21f5,
-       0xf40464b6,
-       0x76bb0f11,
-       0x0136b000,
-       0xf4061bf4,
-/* 0x0c2e: i2c_put_byte_done */
-       0x00f80132,
-/* 0x0c30: i2c_addr */
+       0x0bef21f5,
+/* 0x0c8f: i2c_addr_done */
+       0xf80464b6,
+/* 0x0c91: i2c_acquire_addr */
+       0xf8cec700,
+       0xb702e4b6,
+       0x980d28e0,
+       0x00f800ee,
+/* 0x0ca0: i2c_acquire */
+       0x0c9121f5,
+       0xf00421f4,
+       0x21f403d9,
+/* 0x0caf: i2c_release */
+       0xf500f840,
+       0xf40c9121,
+       0xdaf00421,
+       0x4021f403,
+/* 0x0cbe: i2c_recv */
+       0x32f400f8,
+       0xf8c1c701,
+       0xb00214b6,
+       0x1ff52816,
+       0x13a0013a,
+       0x32980d00,
+       0xd813a000,
+       0x0031980c,
+       0xf90231f4,
+       0xf9e0f9d0,
+       0x0067f1d0,
+       0x0063f100,
+       0x01679210,
        0xb60076bb,
        0x50f90465,
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x6c21f550,
-       0x0464b60a,
-       0xe72911f4,
-       0xb6012ec3,
-       0x53fd0134,
-       0x0076bb05,
-       0xf90465b6,
-       0x04659450,
-       0xbd0256bb,
-       0x0475fd50,
-       0x21f550fc,
-       0x64b60bd5,
-/* 0x0c75: i2c_addr_done */
-/* 0x0c77: i2c_acquire_addr */
-       0xc700f804,
-       0xe4b6f8ce,
-       0x28e0b702,
-       0x00ee980d,
-/* 0x0c86: i2c_acquire */
-       0x21f500f8,
-       0x21f40c77,
-       0x03d9f004,
-       0xf84021f4,
-/* 0x0c95: i2c_release */
-       0x7721f500,
-       0x0421f40c,
-       0xf403daf0,
-       0x00f84021,
-/* 0x0ca4: i2c_recv */
-       0xc70132f4,
-       0x14b6f8c1,
-       0x2816b002,
-       0x013a1ff5,
-       0x0d0013a0,
-       0xa0003298,
-       0x980cd813,
-       0x31f40031,
-       0xf9d0f902,
-       0xf1d0f9e0,
-       0xf1000067,
-       0x92100063,
-       0x76bb0167,
+       0xa021f550,
+       0x0464b60c,
+       0xd6b0d0fc,
+       0xb31bf500,
+       0x0057f000,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0x4a21f550,
+       0x0464b60c,
+       0x00d011f5,
+       0xbbe0c5c7,
+       0x65b60076,
+       0x9450f904,
+       0x56bb0465,
+       0xfd50bd02,
+       0x50fc0475,
+       0x0bef21f5,
+       0xf50464b6,
+       0xf000ad11,
+       0x76bb0157,
        0x0465b600,
        0x659450f9,
        0x0256bb04,
        0x75fd50bd,
        0xf550fc04,
-       0xb60c8621,
-       0xd0fc0464,
-       0xf500d6b0,
-       0xf000b31b,
-       0x76bb0057,
+       0xb60c4a21,
+       0x11f50464,
+       0x76bb008a,
        0x0465b600,
        0x659450f9,
        0x0256bb04,
        0x75fd50bd,
        0xf550fc04,
-       0xb60c3021,
-       0x11f50464,
-       0xc5c700d0,
-       0x0076bbe0,
-       0xf90465b6,
-       0x04659450,
-       0xbd0256bb,
-       0x0475fd50,
-       0x21f550fc,
-       0x64b60bd5,
-       0xad11f504,
-       0x0157f000,
-       0xb60076bb,
-       0x50f90465,
-       0xbb046594,
-       0x50bd0256,
-       0xfc0475fd,
-       0x3021f550,
-       0x0464b60c,
-       0x008a11f5,
+       0xb60b9d21,
+       0x11f40464,
+       0xe05bcb6a,
        0xb60076bb,
        0x50f90465,
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x8321f550,
-       0x0464b60b,
-       0xcb6a11f4,
-       0x76bbe05b,
-       0x0465b600,
-       0x659450f9,
-       0x0256bb04,
-       0x75fd50bd,
-       0xf550fc04,
-       0xb60ac821,
-       0x5bb90464,
-       0xf474bd02,
-/* 0x0daa: i2c_recv_not_rd08 */
-       0xd6b0430e,
-       0x3d1bf401,
-       0xf50057f0,
-       0xf40c3021,
-       0xc5c73311,
-       0xd521f5e0,
-       0x2911f40b,
-       0xf50057f0,
-       0xf40c3021,
-       0xb5c71f11,
-       0xd521f5e0,
-       0x1511f40b,
-       0x0ac821f5,
-       0xc5c774bd,
-       0x091bf408,
-       0xf40232f4,
-/* 0x0dea: i2c_recv_not_wr08 */
-/* 0x0dea: i2c_recv_done */
-       0xcec7030e,
-       0x9521f5f8,
-       0xfce0fc0c,
-       0x0a12f4d0,
-       0xf5027cb9,
-/* 0x0dff: i2c_recv_exit */
-       0xf8033621,
-/* 0x0e01: i2c_init */
-/* 0x0e03: test_recv */
-       0xf100f800,
-       0xb605d817,
-       0x11cf0614,
-       0x0110b600,
-       0x05d807f1,
-       0xd00604b6,
-       0x04bd0001,
-       0xd900e7f1,
-       0x134fe3f1,
-       0x025621f5,
-/* 0x0e2a: test_init */
-       0xe7f100f8,
-       0x21f50800,
-       0x00f80256,
-/* 0x0e34: idle_recv */
-/* 0x0e36: idle */
-       0x31f400f8,
-       0xd417f100,
+       0xe221f550,
+       0x0464b60a,
+       0xbd025bb9,
+       0x430ef474,
+/* 0x0dc4: i2c_recv_not_rd08 */
+       0xf401d6b0,
+       0x57f03d1b,
+       0x4a21f500,
+       0x3311f40c,
+       0xf5e0c5c7,
+       0xf40bef21,
+       0x57f02911,
+       0x4a21f500,
+       0x1f11f40c,
+       0xf5e0b5c7,
+       0xf40bef21,
+       0x21f51511,
+       0x74bd0ae2,
+       0xf408c5c7,
+       0x32f4091b,
+       0x030ef402,
+/* 0x0e04: i2c_recv_not_wr08 */
+/* 0x0e04: i2c_recv_done */
+       0xf5f8cec7,
+       0xfc0caf21,
+       0xf4d0fce0,
+       0x7cb90a12,
+       0x3621f502,
+/* 0x0e19: i2c_recv_exit */
+/* 0x0e1b: i2c_init */
+       0xf800f803,
+/* 0x0e1d: test_recv */
+       0xd817f100,
        0x0614b605,
        0xb60011cf,
        0x07f10110,
-       0x04b605d4,
+       0x04b605d8,
        0x0001d006,
-/* 0x0e52: idle_loop */
-       0x17f004bd,
-       0x0232f458,
-/* 0x0e58: idle_proc */
-/* 0x0e58: idle_proc_exec */
-       0x1eb910f9,
-       0x3f21f502,
-       0xf410fc03,
-       0x31f40911,
-       0xef0ef402,
-/* 0x0e6c: idle_proc_next */
-       0xb85810b6,
-       0x1bf4061f,
-       0xdd02f4e6,
-       0xf40028f4,
-       0x0000bb0e,
-       0x00000000,
-       0x00000000,
-       0x00000000,
-       0x00000000,
-       0x00000000,
-       0x00000000,
+       0xe7f104bd,
+       0xe3f1d900,
+       0x21f5134f,
+       0x00f80256,
+/* 0x0e44: test_init */
+       0x0800e7f1,
+       0x025621f5,
+/* 0x0e4e: idle_recv */
+       0x00f800f8,
+/* 0x0e50: idle */
+       0xf10031f4,
+       0xb605d417,
+       0x11cf0614,
+       0x0110b600,
+       0x05d407f1,
+       0xd00604b6,
+       0x04bd0001,
+/* 0x0e6c: idle_loop */
+       0xf45817f0,
+/* 0x0e72: idle_proc */
+/* 0x0e72: idle_proc_exec */
+       0x10f90232,
+       0xf5021eb9,
+       0xfc033f21,
+       0x0911f410,
+       0xf40231f4,
+/* 0x0e86: idle_proc_next */
+       0x10b6ef0e,
+       0x061fb858,
+       0xf4e61bf4,
+       0x28f4dd02,
+       0xbb0ef400,
        0x00000000,
        0x00000000,
        0x00000000,
diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h 
b/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h
index 213a774d..86294b2f 100644
--- a/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h
+++ b/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h
@@ -68,7 +68,7 @@ uint32_t gf119_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x46524550,
-       0x00000848,
+       0x00000862,
        0x00000685,
        0x00000000,
        0x00000000,
@@ -90,8 +90,8 @@ uint32_t gf119_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x5f433249,
-       0x00000cd1,
-       0x00000b74,
+       0x00000ceb,
+       0x00000b8e,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -112,8 +112,8 @@ uint32_t gf119_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x54534554,
-       0x00000cf4,
-       0x00000cd3,
+       0x00000d0e,
+       0x00000ced,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -134,8 +134,8 @@ uint32_t gf119_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x454c4449,
-       0x00000d00,
-       0x00000cfe,
+       0x00000d1a,
+       0x00000d18,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -1404,492 +1404,493 @@ uint32_t gf119_pmu_code[] = {
        0x48a7f100,
        0x53a3f14f,
        0x06eab854,
-       0x00811bf5,
+       0x009b1bf5,
        0x0001a7f1,
        0xb800a3f0,
        0x0bf406da,
-       0x8b0ef507,
-/* 0x06a5: perf_recv_get_slots */
-       0xd207f100,
+       0x02a7f114,
+       0x00a3f000,
+       0xf406dab8,
+       0x0ef5730b,
+/* 0x06b2: perf_recv_get_slots */
+       0x07f10098,
+       0x03f00cd2,
+       0x000c1800,
+       0xc4b604bd,
+       0xd107f108,
        0x0003f00c,
        0xbd000c18,
        0x08c4b604,
-       0x0cd107f1,
+       0x0cd007f1,
        0x180003f0,
        0x04bd000c,
-       0xf108c4b6,
-       0xf00cd007,
-       0x0c180003,
-       0xb604bd00,
-       0xc5f008c4,
-       0xd607f1ff,
+       0xf008c4b6,
+       0x07f1ffc5,
+       0x03f00cd6,
+       0x000b1800,
+       0xb4b604bd,
+       0xd507f108,
        0x0003f00c,
        0xbd000b18,
        0x08b4b604,
-       0x0cd507f1,
+       0x0cd407f1,
        0x180003f0,
        0x04bd000b,
        0xf108b4b6,
-       0xf00cd407,
+       0xf00cd307,
        0x0b180003,
-       0xb604bd00,
-       0x07f108b4,
-       0x03f00cd3,
-       0x000b1800,
-       0x0ef404bd,
-/* 0x0711: perf_recv_not_host */
-       0x3221f51e,
-       0xcc07f107,
-       0x0003f00c,
-       0xbd000e98,
-       0xeb21f504,
-       0x1721f501,
-       0x070ef402,
-/* 0x072c: perf_recv_host */
-       0x02e521f5,
-/* 0x0730: perf_recv_exit */
-/* 0x0732: perf_counter_readout */
-       0x10f900f8,
-       0x30f920f9,
-       0x50f940f9,
-       0x70f960f9,
-       0x17f180f9,
-       0x11cf0508,
-       0x1827f100,
-       0x0022cf05,
-       0x052837f1,
-       0xf10033cf,
-       0xcf053847,
-       0x57f10044,
-       0x55cf0548,
-       0x5867f100,
-       0x0066cf05,
-       0x056877f1,
-       0xf10077cf,
-       0xcf057887,
-       0xe7f10088,
-       0xe3f10000,
-       0x07f18000,
-       0x0ed00508,
-       0xf104bd00,
-       0xd0051807,
-       0x04bd000e,
-       0x052807f1,
+       0xf404bd00,
+/* 0x071e: perf_recv_set_slot */
+       0xc0f02b0e,
+       0x04c0b710,
+       0x00cbd005,
+/* 0x072b: perf_recv_not_host */
+       0xf5220ef4,
+       0xf1074c21,
+       0xf00ccc07,
+       0x0e980003,
+       0xf504bd00,
+       0xf501eb21,
+       0xf4021721,
+/* 0x0746: perf_recv_host */
+       0x21f5070e,
+/* 0x074a: perf_recv_exit */
+       0x00f802e5,
+/* 0x074c: perf_counter_readout */
+       0x20f910f9,
+       0x40f930f9,
+       0x60f950f9,
+       0x80f970f9,
+       0x050817f1,
+       0xf10011cf,
+       0xcf051827,
+       0x37f10022,
+       0x33cf0528,
+       0x3847f100,
+       0x0044cf05,
+       0x054857f1,
+       0xf10055cf,
+       0xcf055867,
+       0x77f10066,
+       0x77cf0568,
+       0x7887f100,
+       0x0088cf05,
+       0x0000e7f1,
+       0x8000e3f1,
+       0x050807f1,
        0xbd000ed0,
-       0x3807f104,
+       0x1807f104,
        0x000ed005,
        0x07f104bd,
-       0x0ed00548,
+       0x0ed00528,
        0xf104bd00,
-       0xd0055807,
+       0xd0053807,
        0x04bd000e,
-       0x056807f1,
+       0x054807f1,
        0xbd000ed0,
-       0x7807f104,
+       0x5807f104,
        0x000ed005,
-       0x11cc04bd,
-       0x2c21ffff,
-       0xff3c31ff,
-       0x51ff4c41,
-       0x6c61ff5c,
-       0xff7c71ff,
-       0x07f18c81,
-       0x03f00cd0,
-       0x00020000,
-       0x07f104bd,
-       0x03f00cd1,
-       0x00030000,
-       0x07f104bd,
-       0x03f00cd2,
-       0x00040000,
-       0x07f104bd,
-       0x03f00cd3,
-       0x00050000,
-       0x07f104bd,
-       0x03f00cd4,
-       0x00060000,
-       0x07f104bd,
-       0x03f00cd5,
-       0x00070000,
        0x07f104bd,
-       0x03f00cd6,
-       0x00080000,
-       0x80fc04bd,
-       0x60fc70fc,
-       0x40fc50fc,
-       0x20fc30fc,
-       0x00f810fc,
-/* 0x0848: perf_init */
-       0x0003e7f1,
-       0xf100e3f0,
-       0xd0050c07,
-       0x04bd000e,
-       0x0002e7f1,
-       0xf100e3f0,
-       0xd0051c07,
+       0x0ed00568,
+       0xf104bd00,
+       0xd0057807,
        0x04bd000e,
-       0x052c07f1,
-       0xbd000ed0,
-       0x3c07f104,
+       0xffff11cc,
+       0x31ff2c21,
+       0x4c41ff3c,
+       0xff5c51ff,
+       0x71ff6c61,
+       0x8c81ff7c,
+       0x0cd007f1,
+       0x000003f0,
+       0x04bd0002,
+       0x0cd107f1,
+       0x000003f0,
+       0x04bd0003,
+       0x0cd207f1,
+       0x000003f0,
+       0x04bd0004,
+       0x0cd307f1,
+       0x000003f0,
+       0x04bd0005,
+       0x0cd407f1,
+       0x000003f0,
+       0x04bd0006,
+       0x0cd507f1,
+       0x000003f0,
+       0x04bd0007,
+       0x0cd607f1,
+       0x000003f0,
+       0x04bd0008,
+       0x70fc80fc,
+       0x50fc60fc,
+       0x30fc40fc,
+       0x10fc20fc,
+/* 0x0862: perf_init */
+       0xe7f100f8,
+       0xe3f00003,
+       0x0c07f100,
+       0x000ed005,
+       0xe7f104bd,
+       0xe3f00002,
+       0x1c07f100,
        0x000ed005,
        0x07f104bd,
-       0x0ed0054c,
+       0x0ed0052c,
        0xf104bd00,
-       0xd0055c07,
+       0xd0053c07,
        0x04bd000e,
-       0x056c07f1,
+       0x054c07f1,
        0xbd000ed0,
-       0x7c07f104,
+       0x5c07f104,
        0x000ed005,
-       0x21f504bd,
-       0x07f10732,
-       0x03f00ccc,
-       0x000e9800,
-       0x21f504bd,
-       0x21f501eb,
-       0x00f80217,
-/* 0x08b8: i2c_drive_scl */
-       0xf40036b0,
-       0x07f10e0b,
-       0x01d007e0,
-       0xf804bd00,
-/* 0x08c9: i2c_drive_scl_lo */
-       0xe407f100,
-       0x0001d007,
-       0x00f804bd,
-/* 0x08d4: i2c_drive_sda */
-       0xf40036b0,
-       0x07f10e0b,
-       0x02d007e0,
-       0xf804bd00,
-/* 0x08e5: i2c_drive_sda_lo */
-       0xe407f100,
-       0x0002d007,
-       0x00f804bd,
-/* 0x08f0: i2c_sense_scl */
-       0xf10132f4,
-       0xcf07c437,
-       0x31fd0033,
-       0x060bf404,
-/* 0x0903: i2c_sense_scl_done */
-       0xf80131f4,
-/* 0x0905: i2c_sense_sda */
-       0x0132f400,
-       0x07c437f1,
-       0xfd0033cf,
-       0x0bf40432,
-       0x0131f406,
-/* 0x0918: i2c_sense_sda_done */
-/* 0x091a: i2c_raise_scl */
-       0x40f900f8,
-       0x089847f1,
-       0xf50137f0,
-/* 0x0927: i2c_raise_scl_wait */
-       0xf108b821,
-       0xf403e8e7,
-       0x21f56621,
-       0x01f408f0,
-       0x0142b609,
-/* 0x093b: i2c_raise_scl_done */
-       0xfcef1bf4,
-/* 0x093f: i2c_start */
-       0xf500f840,
-       0xf408f021,
-       0x21f50d11,
-       0x11f40905,
-       0x300ef406,
-/* 0x0950: i2c_start_rep */
-       0xf50037f0,
-       0xf008b821,
-       0x21f50137,
-       0x76bb08d4,
-       0x0465b600,
-       0x659450f9,
-       0x0256bb04,
-       0x75fd50bd,
-       0xf550fc04,
-       0xb6091a21,
-       0x11f40464,
-/* 0x097d: i2c_start_send */
-       0x0037f01f,
-       0x08d421f5,
-       0x1388e7f1,
-       0xf06621f4,
-       0x21f50037,
-       0xe7f108b8,
-       0x21f41388,
-/* 0x0999: i2c_start_out */
-/* 0x099b: i2c_stop */
-       0xf000f866,
-       0x21f50037,
-       0x37f008b8,
-       0xd421f500,
+       0x07f104bd,
+       0x0ed0056c,
+       0xf104bd00,
+       0xd0057c07,
+       0x04bd000e,
+       0x074c21f5,
+       0x0ccc07f1,
+       0x980003f0,
+       0x04bd000e,
+       0x01eb21f5,
+       0x021721f5,
+/* 0x08d2: i2c_drive_scl */
+       0x36b000f8,
+       0x0e0bf400,
+       0x07e007f1,
+       0xbd0001d0,
+/* 0x08e3: i2c_drive_scl_lo */
+       0xf100f804,
+       0xd007e407,
+       0x04bd0001,
+/* 0x08ee: i2c_drive_sda */
+       0x36b000f8,
+       0x0e0bf400,
+       0x07e007f1,
+       0xbd0002d0,
+/* 0x08ff: i2c_drive_sda_lo */
+       0xf100f804,
+       0xd007e407,
+       0x04bd0002,
+/* 0x090a: i2c_sense_scl */
+       0x32f400f8,
+       0xc437f101,
+       0x0033cf07,
+       0xf40431fd,
+       0x31f4060b,
+/* 0x091d: i2c_sense_scl_done */
+/* 0x091f: i2c_sense_sda */
+       0xf400f801,
+       0x37f10132,
+       0x33cf07c4,
+       0x0432fd00,
+       0xf4060bf4,
+/* 0x0932: i2c_sense_sda_done */
+       0x00f80131,
+/* 0x0934: i2c_raise_scl */
+       0x47f140f9,
+       0x37f00898,
+       0xd221f501,
+/* 0x0941: i2c_raise_scl_wait */
        0xe8e7f108,
        0x6621f403,
-       0xf50137f0,
-       0xf108b821,
-       0xf41388e7,
-       0x37f06621,
-       0xd421f501,
-       0x88e7f108,
-       0x6621f413,
-/* 0x09ce: i2c_bitw */
-       0x21f500f8,
-       0xe7f108d4,
-       0x21f403e8,
-       0x0076bb66,
-       0xf90465b6,
-       0x04659450,
-       0xbd0256bb,
-       0x0475fd50,
-       0x21f550fc,
-       0x64b6091a,
-       0x1811f404,
-       0x1388e7f1,
-       0xf06621f4,
+       0x090a21f5,
+       0xb60901f4,
+       0x1bf40142,
+/* 0x0955: i2c_raise_scl_done */
+       0xf840fcef,
+/* 0x0959: i2c_start */
+       0x0a21f500,
+       0x0d11f409,
+       0x091f21f5,
+       0xf40611f4,
+/* 0x096a: i2c_start_rep */
+       0x37f0300e,
+       0xd221f500,
+       0x0137f008,
+       0x08ee21f5,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0x3421f550,
+       0x0464b609,
+/* 0x0997: i2c_start_send */
+       0xf01f11f4,
        0x21f50037,
-       0xe7f108b8,
+       0xe7f108ee,
        0x21f41388,
-/* 0x0a0d: i2c_bitw_out */
-/* 0x0a0f: i2c_bitr */
-       0xf000f866,
-       0x21f50137,
-       0xe7f108d4,
-       0x21f403e8,
-       0x0076bb66,
-       0xf90465b6,
-       0x04659450,
-       0xbd0256bb,
-       0x0475fd50,
-       0x21f550fc,
-       0x64b6091a,
-       0x1b11f404,
-       0x090521f5,
+       0x0037f066,
+       0x08d221f5,
+       0x1388e7f1,
+/* 0x09b3: i2c_start_out */
+       0xf86621f4,
+/* 0x09b5: i2c_stop */
+       0x0037f000,
+       0x08d221f5,
        0xf50037f0,
-       0xf108b821,
+       0xf108ee21,
+       0xf403e8e7,
+       0x37f06621,
+       0xd221f501,
+       0x88e7f108,
+       0x6621f413,
+       0xf50137f0,
+       0xf108ee21,
        0xf41388e7,
-       0x3cf06621,
-       0x0131f401,
-/* 0x0a54: i2c_bitr_done */
-/* 0x0a56: i2c_get_byte */
-       0x57f000f8,
-       0x0847f000,
-/* 0x0a5c: i2c_get_byte_next */
-       0xbb0154b6,
+       0x00f86621,
+/* 0x09e8: i2c_bitw */
+       0x08ee21f5,
+       0x03e8e7f1,
+       0xbb6621f4,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x0a0f21f5,
+       0x093421f5,
        0xf40464b6,
-       0x53fd2b11,
-       0x0142b605,
-       0xf0d81bf4,
-       0x76bb0137,
-       0x0465b600,
-       0x659450f9,
-       0x0256bb04,
-       0x75fd50bd,
-       0xf550fc04,
-       0xb609ce21,
-/* 0x0aa6: i2c_get_byte_done */
-       0x00f80464,
-/* 0x0aa8: i2c_put_byte */
-/* 0x0aab: i2c_put_byte_next */
-       0xb60847f0,
-       0x54ff0142,
-       0x0076bb38,
+       0xe7f11811,
+       0x21f41388,
+       0x0037f066,
+       0x08d221f5,
+       0x1388e7f1,
+/* 0x0a27: i2c_bitw_out */
+       0xf86621f4,
+/* 0x0a29: i2c_bitr */
+       0x0137f000,
+       0x08ee21f5,
+       0x03e8e7f1,
+       0xbb6621f4,
+       0x65b60076,
+       0x9450f904,
+       0x56bb0465,
+       0xfd50bd02,
+       0x50fc0475,
+       0x093421f5,
+       0xf40464b6,
+       0x21f51b11,
+       0x37f0091f,
+       0xd221f500,
+       0x88e7f108,
+       0x6621f413,
+       0xf4013cf0,
+/* 0x0a6e: i2c_bitr_done */
+       0x00f80131,
+/* 0x0a70: i2c_get_byte */
+       0xf00057f0,
+/* 0x0a76: i2c_get_byte_next */
+       0x54b60847,
+       0x0076bb01,
        0xf90465b6,
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b609ce,
-       0x3411f404,
-       0xf40046b0,
-       0x76bbd81b,
-       0x0465b600,
-       0x659450f9,
-       0x0256bb04,
-       0x75fd50bd,
-       0xf550fc04,
-       0xb60a0f21,
-       0x11f40464,
-       0x0076bb0f,
-       0xf40136b0,
-       0x32f4061b,
-/* 0x0b01: i2c_put_byte_done */
-/* 0x0b03: i2c_addr */
-       0xbb00f801,
+       0x64b60a29,
+       0x2b11f404,
+       0xb60553fd,
+       0x1bf40142,
+       0x0137f0d8,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0xe821f550,
+       0x0464b609,
+/* 0x0ac0: i2c_get_byte_done */
+/* 0x0ac2: i2c_put_byte */
+       0x47f000f8,
+/* 0x0ac5: i2c_put_byte_next */
+       0x0142b608,
+       0xbb3854ff,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x093f21f5,
+       0x09e821f5,
        0xf40464b6,
-       0xc3e72911,
-       0x34b6012e,
-       0x0553fd01,
+       0x46b03411,
+       0xd81bf400,
        0xb60076bb,
        0x50f90465,
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0xa821f550,
+       0x2921f550,
        0x0464b60a,
-/* 0x0b48: i2c_addr_done */
-/* 0x0b4a: i2c_acquire_addr */
-       0xcec700f8,
-       0x05e4b6f8,
-       0xd014e0b7,
-/* 0x0b56: i2c_acquire */
-       0x21f500f8,
-       0x21f40b4a,
-       0x03d9f004,
-       0xf83421f4,
-/* 0x0b65: i2c_release */
-       0x4a21f500,
-       0x0421f40b,
-       0xf403daf0,
-       0x00f83421,
-/* 0x0b74: i2c_recv */
-       0xc70132f4,
-       0x14b6f8c1,
-       0x2816b002,
-       0x013a1ff5,
-       0x0d0013a0,
-       0xa0003298,
-       0x980cd813,
-       0x31f40031,
-       0xf9d0f902,
-       0xf1d0f9e0,
-       0xf1000067,
-       0x92100063,
-       0x76bb0167,
-       0x0465b600,
-       0x659450f9,
-       0x0256bb04,
-       0x75fd50bd,
-       0xf550fc04,
-       0xb60b5621,
-       0xd0fc0464,
-       0xf500d6b0,
-       0xf000b31b,
-       0x76bb0057,
-       0x0465b600,
-       0x659450f9,
-       0x0256bb04,
-       0x75fd50bd,
-       0xf550fc04,
-       0xb60b0321,
-       0x11f50464,
-       0xc5c700d0,
-       0x0076bbe0,
+       0xbb0f11f4,
+       0x36b00076,
+       0x061bf401,
+/* 0x0b1b: i2c_put_byte_done */
+       0xf80132f4,
+/* 0x0b1d: i2c_addr */
+       0x0076bb00,
        0xf90465b6,
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b60aa8,
-       0xad11f504,
-       0x0157f000,
+       0x64b60959,
+       0x2911f404,
+       0x012ec3e7,
+       0xfd0134b6,
+       0x76bb0553,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0xf550fc04,
+       0xb60ac221,
+/* 0x0b62: i2c_addr_done */
+       0x00f80464,
+/* 0x0b64: i2c_acquire_addr */
+       0xb6f8cec7,
+       0xe0b705e4,
+       0x00f8d014,
+/* 0x0b70: i2c_acquire */
+       0x0b6421f5,
+       0xf00421f4,
+       0x21f403d9,
+/* 0x0b7f: i2c_release */
+       0xf500f834,
+       0xf40b6421,
+       0xdaf00421,
+       0x3421f403,
+/* 0x0b8e: i2c_recv */
+       0x32f400f8,
+       0xf8c1c701,
+       0xb00214b6,
+       0x1ff52816,
+       0x13a0013a,
+       0x32980d00,
+       0xd813a000,
+       0x0031980c,
+       0xf90231f4,
+       0xf9e0f9d0,
+       0x0067f1d0,
+       0x0063f100,
+       0x01679210,
        0xb60076bb,
        0x50f90465,
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x0321f550,
+       0x7021f550,
        0x0464b60b,
-       0x008a11f5,
+       0xd6b0d0fc,
+       0xb31bf500,
+       0x0057f000,
        0xb60076bb,
        0x50f90465,
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x5621f550,
-       0x0464b60a,
-       0xcb6a11f4,
-       0x76bbe05b,
+       0x1d21f550,
+       0x0464b60b,
+       0x00d011f5,
+       0xbbe0c5c7,
+       0x65b60076,
+       0x9450f904,
+       0x56bb0465,
+       0xfd50bd02,
+       0x50fc0475,
+       0x0ac221f5,
+       0xf50464b6,
+       0xf000ad11,
+       0x76bb0157,
        0x0465b600,
        0x659450f9,
        0x0256bb04,
        0x75fd50bd,
        0xf550fc04,
-       0xb6099b21,
-       0x5bb90464,
-       0xf474bd02,
-/* 0x0c7a: i2c_recv_not_rd08 */
-       0xd6b0430e,
-       0x3d1bf401,
-       0xf50057f0,
-       0xf40b0321,
-       0xc5c73311,
-       0xa821f5e0,
-       0x2911f40a,
-       0xf50057f0,
-       0xf40b0321,
-       0xb5c71f11,
-       0xa821f5e0,
-       0x1511f40a,
-       0x099b21f5,
-       0xc5c774bd,
-       0x091bf408,
-       0xf40232f4,
-/* 0x0cba: i2c_recv_not_wr08 */
-/* 0x0cba: i2c_recv_done */
-       0xcec7030e,
-       0x6521f5f8,
-       0xfce0fc0b,
-       0x0a12f4d0,
-       0xf5027cb9,
-/* 0x0ccf: i2c_recv_exit */
-       0xf802e521,
-/* 0x0cd1: i2c_init */
-/* 0x0cd3: test_recv */
-       0xf100f800,
-       0xcf05d817,
-       0x10b60011,
-       0xd807f101,
-       0x0001d005,
-       0xe7f104bd,
-       0xe3f1d900,
-       0x21f5134f,
-       0x00f80217,
-/* 0x0cf4: test_init */
-       0x0800e7f1,
+       0xb60b1d21,
+       0x11f50464,
+       0x76bb008a,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0xf550fc04,
+       0xb60a7021,
+       0x11f40464,
+       0xe05bcb6a,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0xb521f550,
+       0x0464b609,
+       0xbd025bb9,
+       0x430ef474,
+/* 0x0c94: i2c_recv_not_rd08 */
+       0xf401d6b0,
+       0x57f03d1b,
+       0x1d21f500,
+       0x3311f40b,
+       0xf5e0c5c7,
+       0xf40ac221,
+       0x57f02911,
+       0x1d21f500,
+       0x1f11f40b,
+       0xf5e0b5c7,
+       0xf40ac221,
+       0x21f51511,
+       0x74bd09b5,
+       0xf408c5c7,
+       0x32f4091b,
+       0x030ef402,
+/* 0x0cd4: i2c_recv_not_wr08 */
+/* 0x0cd4: i2c_recv_done */
+       0xf5f8cec7,
+       0xfc0b7f21,
+       0xf4d0fce0,
+       0x7cb90a12,
+       0xe521f502,
+/* 0x0ce9: i2c_recv_exit */
+/* 0x0ceb: i2c_init */
+       0xf800f802,
+/* 0x0ced: test_recv */
+       0xd817f100,
+       0x0011cf05,
+       0xf10110b6,
+       0xd005d807,
+       0x04bd0001,
+       0xd900e7f1,
+       0x134fe3f1,
        0x021721f5,
-/* 0x0cfe: idle_recv */
-       0x00f800f8,
-/* 0x0d00: idle */
-       0xf10031f4,
-       0xcf05d417,
-       0x10b60011,
-       0xd407f101,
-       0x0001d005,
-/* 0x0d16: idle_loop */
-       0x17f004bd,
-       0x0232f458,
-/* 0x0d1c: idle_proc */
-/* 0x0d1c: idle_proc_exec */
-       0x1eb910f9,
-       0xee21f502,
-       0xf410fc02,
-       0x31f40911,
-       0xef0ef402,
-/* 0x0d30: idle_proc_next */
-       0xb85810b6,
-       0x1bf4061f,
-       0xdd02f4e6,
-       0xf40028f4,
-       0x0000c10e,
-       0x00000000,
-       0x00000000,
-       0x00000000,
-       0x00000000,
-       0x00000000,
-       0x00000000,
+/* 0x0d0e: test_init */
+       0xe7f100f8,
+       0x21f50800,
+       0x00f80217,
+/* 0x0d18: idle_recv */
+/* 0x0d1a: idle */
+       0x31f400f8,
+       0xd417f100,
+       0x0011cf05,
+       0xf10110b6,
+       0xd005d407,
+       0x04bd0001,
+/* 0x0d30: idle_loop */
+       0xf45817f0,
+/* 0x0d36: idle_proc */
+/* 0x0d36: idle_proc_exec */
+       0x10f90232,
+       0xf5021eb9,
+       0xfc02ee21,
+       0x0911f410,
+       0xf40231f4,
+/* 0x0d4a: idle_proc_next */
+       0x10b6ef0e,
+       0x061fb858,
+       0xf4e61bf4,
+       0x28f4dd02,
+       0xc10ef400,
        0x00000000,
        0x00000000,
        0x00000000,
diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h 
b/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h
index 43dada42..a5f43b5d 100644
--- a/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h
+++ b/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h
@@ -68,7 +68,7 @@ uint32_t gk208_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x46524550,
-       0x00000756,
+       0x0000076a,
        0x000005f5,
        0x00000000,
        0x00000000,
@@ -90,8 +90,8 @@ uint32_t gk208_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x5f433249,
-       0x00000baf,
-       0x00000a59,
+       0x00000bc3,
+       0x00000a6d,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -112,8 +112,8 @@ uint32_t gk208_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x54534554,
-       0x00000bcd,
-       0x00000bb1,
+       0x00000be1,
+       0x00000bc5,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -134,8 +134,8 @@ uint32_t gk208_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x454c4449,
-       0x00000bd8,
-       0x00000bd6,
+       0x00000bec,
+       0x00000bea,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -1367,41 +1367,47 @@ uint32_t gk208_pmu_code[] = {
 /* 0x05f5: perf_recv */
        0x4f48da00,
        0xeaa65453,
-       0x0a5d1bf4,
+       0x0a711bf4,
        0xf4daa601,
-       0x0ef4060b,
-/* 0x0609: perf_recv_get_slots */
-       0x0cd2406a,
-       0xbd000c18,
-       0x08c4b604,
-       0x180cd140,
+       0x020a0d0b,
+       0x0bf4daa6,
+       0x770ef456,
+/* 0x0610: perf_recv_get_slots */
+       0x180cd240,
        0x04bd000c,
        0x4008c4b6,
-       0x0c180cd0,
+       0x0c180cd1,
        0xb604bd00,
-       0xc5f008c4,
-       0x0cd640ff,
-       0xbd000b18,
-       0x08b4b604,
-       0x180cd540,
+       0xd04008c4,
+       0x000c180c,
+       0xc4b604bd,
+       0xffc5f008,
+       0x180cd640,
        0x04bd000b,
        0x4008b4b6,
-       0x0b180cd4,
+       0x0b180cd5,
        0xb604bd00,
-       0xd34008b4,
+       0xd44008b4,
        0x000b180c,
-       0x0ef404bd,
-/* 0x0659: perf_recv_not_host */
-       0x06767e1a,
+       0xb4b604bd,
+       0x0cd34008,
+       0xbd000b18,
+       0x270ef404,
+/* 0x0660: perf_recv_set_slot */
+       0xb710c0f0,
+       0xf60504c0,
+       0x0ef400cb,
+/* 0x066d: perf_recv_not_host */
+       0x068a7e1e,
        0x0ccc4000,
        0xbd000e98,
        0x01bb7e04,
        0x01de7e00,
        0x070ef400,
-/* 0x0670: perf_recv_host */
+/* 0x0684: perf_recv_host */
        0x00029f7e,
-/* 0x0674: perf_recv_exit */
-/* 0x0676: perf_counter_readout */
+/* 0x0688: perf_recv_exit */
+/* 0x068a: perf_counter_readout */
        0x10f900f8,
        0x30f920f9,
        0x50f940f9,
@@ -1458,7 +1464,7 @@ uint32_t gk208_pmu_code[] = {
        0x50fc60fc,
        0x30fc40fc,
        0x10fc20fc,
-/* 0x0756: perf_init */
+/* 0x076a: perf_init */
        0x030e00f8,
        0xf6050c40,
        0x04bd000e,
@@ -1476,95 +1482,95 @@ uint32_t gk208_pmu_code[] = {
        0x000ef605,
        0x7c4004bd,
        0x000ef605,
-       0x767e04bd,
+       0x8a7e04bd,
        0xcc400006,
        0x000e980c,
        0x21f504bd,
        0xde7e01bb,
        0x00f80001,
-/* 0x07b0: i2c_drive_scl */
+/* 0x07c4: i2c_drive_scl */
        0xf40036b0,
        0xe0400d0b,
        0x0001f607,
        0x00f804bd,
-/* 0x07c0: i2c_drive_scl_lo */
+/* 0x07d4: i2c_drive_scl_lo */
        0xf607e440,
        0x04bd0001,
-/* 0x07ca: i2c_drive_sda */
+/* 0x07de: i2c_drive_sda */
        0x36b000f8,
        0x0d0bf400,
        0xf607e040,
        0x04bd0002,
-/* 0x07da: i2c_drive_sda_lo */
+/* 0x07ee: i2c_drive_sda_lo */
        0xe44000f8,
        0x0002f607,
        0x00f804bd,
-/* 0x07e4: i2c_sense_scl */
+/* 0x07f8: i2c_sense_scl */
        0x430132f4,
        0x33cf07c4,
        0x0431fd00,
        0xf4060bf4,
-/* 0x07f6: i2c_sense_scl_done */
+/* 0x080a: i2c_sense_scl_done */
        0x00f80131,
-/* 0x07f8: i2c_sense_sda */
+/* 0x080c: i2c_sense_sda */
        0x430132f4,
        0x33cf07c4,
        0x0432fd00,
        0xf4060bf4,
-/* 0x080a: i2c_sense_sda_done */
+/* 0x081e: i2c_sense_sda_done */
        0x00f80131,
-/* 0x080c: i2c_raise_scl */
+/* 0x0820: i2c_raise_scl */
        0x984440f9,
        0x7e010308,
-/* 0x0817: i2c_raise_scl_wait */
-       0x4e0007b0,
+/* 0x082b: i2c_raise_scl_wait */
+       0x4e0007c4,
        0x587e03e8,
-       0xe47e0000,
+       0xf87e0000,
        0x01f40007,
        0x0142b609,
-/* 0x082b: i2c_raise_scl_done */
+/* 0x083f: i2c_raise_scl_done */
        0xfcef1bf4,
-/* 0x082f: i2c_start */
+/* 0x0843: i2c_start */
        0x7e00f840,
-       0xf40007e4,
-       0xf87e0d11,
-       0x11f40007,
+       0xf40007f8,
+       0x0c7e0d11,
+       0x11f40008,
        0x2e0ef406,
-/* 0x0840: i2c_start_rep */
-       0xb07e0003,
+/* 0x0854: i2c_start_rep */
+       0xc47e0003,
        0x01030007,
-       0x0007ca7e,
+       0x0007de7e,
        0xb60076bb,
        0x50f90465,
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x080c7e50,
+       0x08207e50,
        0x0464b600,
-/* 0x086b: i2c_start_send */
+/* 0x087f: i2c_start_send */
        0x031d11f4,
-       0x07ca7e00,
+       0x07de7e00,
        0x13884e00,
        0x0000587e,
-       0xb07e0003,
+       0xc47e0003,
        0x884e0007,
        0x00587e13,
-/* 0x0885: i2c_start_out */
-/* 0x0887: i2c_stop */
+/* 0x0899: i2c_start_out */
+/* 0x089b: i2c_stop */
        0x0300f800,
-       0x07b07e00,
+       0x07c47e00,
        0x7e000300,
-       0x4e0007ca,
+       0x4e0007de,
        0x587e03e8,
        0x01030000,
-       0x0007b07e,
+       0x0007c47e,
        0x7e13884e,
        0x03000058,
-       0x07ca7e01,
+       0x07de7e01,
        0x13884e00,
        0x0000587e,
-/* 0x08b6: i2c_bitw */
-       0xca7e00f8,
+/* 0x08ca: i2c_bitw */
+       0xde7e00f8,
        0xe84e0007,
        0x00587e03,
        0x0076bb00,
@@ -1572,18 +1578,18 @@ uint32_t gk208_pmu_code[] = {
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
-       0x0c7e50fc,
+       0x207e50fc,
        0x64b60008,
        0x1711f404,
        0x7e13884e,
        0x03000058,
-       0x07b07e00,
+       0x07c47e00,
        0x13884e00,
        0x0000587e,
-/* 0x08f4: i2c_bitw_out */
-/* 0x08f6: i2c_bitr */
+/* 0x0908: i2c_bitw_out */
+/* 0x090a: i2c_bitr */
        0x010300f8,
-       0x0007ca7e,
+       0x0007de7e,
        0x7e03e84e,
        0xbb000058,
        0x65b60076,
@@ -1591,18 +1597,18 @@ uint32_t gk208_pmu_code[] = {
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x00080c7e,
+       0x0008207e,
        0xf40464b6,
-       0xf87e1a11,
-       0x00030007,
-       0x0007b07e,
+       0x0c7e1a11,
+       0x00030008,
+       0x0007c47e,
        0x7e13884e,
        0xf0000058,
        0x31f4013c,
-/* 0x0939: i2c_bitr_done */
-/* 0x093b: i2c_get_byte */
+/* 0x094d: i2c_bitr_done */
+/* 0x094f: i2c_get_byte */
        0x0500f801,
-/* 0x093f: i2c_get_byte_next */
+/* 0x0953: i2c_get_byte_next */
        0xb6080400,
        0x76bb0154,
        0x0465b600,
@@ -1610,7 +1616,7 @@ uint32_t gk208_pmu_code[] = {
        0x0256bb04,
        0x75fd50bd,
        0x7e50fc04,
-       0xb60008f6,
+       0xb600090a,
        0x11f40464,
        0x0553fd2a,
        0xf40142b6,
@@ -1620,12 +1626,12 @@ uint32_t gk208_pmu_code[] = {
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x08b67e50,
+       0x08ca7e50,
        0x0464b600,
-/* 0x0988: i2c_get_byte_done */
-/* 0x098a: i2c_put_byte */
+/* 0x099c: i2c_get_byte_done */
+/* 0x099e: i2c_put_byte */
        0x080400f8,
-/* 0x098c: i2c_put_byte_next */
+/* 0x09a0: i2c_put_byte_next */
        0xff0142b6,
        0x76bb3854,
        0x0465b600,
@@ -1633,7 +1639,7 @@ uint32_t gk208_pmu_code[] = {
        0x0256bb04,
        0x75fd50bd,
        0x7e50fc04,
-       0xb60008b6,
+       0xb60008ca,
        0x11f40464,
        0x0046b034,
        0xbbd81bf4,
@@ -1642,20 +1648,20 @@ uint32_t gk208_pmu_code[] = {
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x0008f67e,
+       0x00090a7e,
        0xf40464b6,
        0x76bb0f11,
        0x0136b000,
        0xf4061bf4,
-/* 0x09e2: i2c_put_byte_done */
+/* 0x09f6: i2c_put_byte_done */
        0x00f80132,
-/* 0x09e4: i2c_addr */
+/* 0x09f8: i2c_addr */
        0xb60076bb,
        0x50f90465,
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x082f7e50,
+       0x08437e50,
        0x0464b600,
        0xe72911f4,
        0xb6012ec3,
@@ -1665,25 +1671,25 @@ uint32_t gk208_pmu_code[] = {
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
-       0x8a7e50fc,
+       0x9e7e50fc,
        0x64b60009,
-/* 0x0a29: i2c_addr_done */
-/* 0x0a2b: i2c_acquire_addr */
+/* 0x0a3d: i2c_addr_done */
+/* 0x0a3f: i2c_acquire_addr */
        0xc700f804,
        0xe4b6f8ce,
        0x14e0b705,
-/* 0x0a37: i2c_acquire */
+/* 0x0a4b: i2c_acquire */
        0x7e00f8d0,
-       0x7e000a2b,
+       0x7e000a3f,
        0xf0000004,
        0x2d7e03d9,
        0x00f80000,
-/* 0x0a48: i2c_release */
-       0x000a2b7e,
+/* 0x0a5c: i2c_release */
+       0x000a3f7e,
        0x0000047e,
        0x7e03daf0,
        0xf800002d,
-/* 0x0a59: i2c_recv */
+/* 0x0a6d: i2c_recv */
        0x0132f400,
        0xb6f8c1c7,
        0x16b00214,
@@ -1702,7 +1708,7 @@ uint32_t gk208_pmu_code[] = {
        0x0256bb04,
        0x75fd50bd,
        0x7e50fc04,
-       0xb6000a37,
+       0xb6000a4b,
        0xd0fc0464,
        0xf500d6b0,
        0x0500b01b,
@@ -1711,7 +1717,7 @@ uint32_t gk208_pmu_code[] = {
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
-       0xe47e50fc,
+       0xf87e50fc,
        0x64b60009,
        0xcc11f504,
        0xe0c5c700,
@@ -1720,7 +1726,7 @@ uint32_t gk208_pmu_code[] = {
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x098a7e50,
+       0x099e7e50,
        0x0464b600,
        0x00a911f5,
        0x76bb0105,
@@ -1729,7 +1735,7 @@ uint32_t gk208_pmu_code[] = {
        0x0256bb04,
        0x75fd50bd,
        0x7e50fc04,
-       0xb60009e4,
+       0xb60009f8,
        0x11f50464,
        0x76bb0087,
        0x0465b600,
@@ -1737,7 +1743,7 @@ uint32_t gk208_pmu_code[] = {
        0x0256bb04,
        0x75fd50bd,
        0x7e50fc04,
-       0xb600093b,
+       0xb600094f,
        0x11f40464,
        0xe05bcb67,
        0xb60076bb,
@@ -1745,37 +1751,37 @@ uint32_t gk208_pmu_code[] = {
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x08877e50,
+       0x089b7e50,
        0x0464b600,
        0x74bd5bb2,
-/* 0x0b5b: i2c_recv_not_rd08 */
+/* 0x0b6f: i2c_recv_not_rd08 */
        0xb0410ef4,
        0x1bf401d6,
        0x7e00053b,
-       0xf40009e4,
+       0xf40009f8,
        0xc5c73211,
-       0x098a7ee0,
+       0x099e7ee0,
        0x2811f400,
-       0xe47e0005,
+       0xf87e0005,
        0x11f40009,
        0xe0b5c71f,
-       0x00098a7e,
+       0x00099e7e,
        0x7e1511f4,
-       0xbd000887,
+       0xbd00089b,
        0x08c5c774,
        0xf4091bf4,
        0x0ef40232,
-/* 0x0b99: i2c_recv_not_wr08 */
-/* 0x0b99: i2c_recv_done */
+/* 0x0bad: i2c_recv_not_wr08 */
+/* 0x0bad: i2c_recv_done */
        0xf8cec703,
-       0x000a487e,
+       0x000a5c7e,
        0xd0fce0fc,
        0xb20912f4,
        0x029f7e7c,
-/* 0x0bad: i2c_recv_exit */
-/* 0x0baf: i2c_init */
+/* 0x0bc1: i2c_recv_exit */
+/* 0x0bc3: i2c_init */
        0xf800f800,
-/* 0x0bb1: test_recv */
+/* 0x0bc5: test_recv */
        0x04584100,
        0xb60011cf,
        0x58400110,
@@ -1783,27 +1789,27 @@ uint32_t gk208_pmu_code[] = {
        0x00de04bd,
        0x7e134fd9,
        0xf80001de,
-/* 0x0bcd: test_init */
+/* 0x0be1: test_init */
        0x08004e00,
        0x0001de7e,
-/* 0x0bd6: idle_recv */
+/* 0x0bea: idle_recv */
        0x00f800f8,
-/* 0x0bd8: idle */
+/* 0x0bec: idle */
        0x410031f4,
        0x11cf0454,
        0x0110b600,
        0xf6045440,
        0x04bd0001,
-/* 0x0bec: idle_loop */
+/* 0x0c00: idle_loop */
        0x32f45801,
-/* 0x0bf1: idle_proc */
-/* 0x0bf1: idle_proc_exec */
+/* 0x0c05: idle_proc */
+/* 0x0c05: idle_proc_exec */
        0xb210f902,
        0x02a87e1e,
        0xf410fc00,
        0x31f40911,
        0xf00ef402,
-/* 0x0c04: idle_proc_next */
+/* 0x0c18: idle_proc_next */
        0xa65810b6,
        0xe81bf41f,
        0xf4e002f4,
@@ -1862,9 +1868,4 @@ uint32_t gk208_pmu_code[] = {
        0x00000000,
        0x00000000,
        0x00000000,
-       0x00000000,
-       0x00000000,
-       0x00000000,
-       0x00000000,
-       0x00000000,
 };
diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h 
b/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h
index a86478e6..17be7cb9 100644
--- a/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h
+++ b/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h
@@ -68,7 +68,7 @@ uint32_t gt215_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x46524550,
-       0x00000950,
+       0x0000096a,
        0x0000083c,
        0x00000000,
        0x00000000,
@@ -90,8 +90,8 @@ uint32_t gt215_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x5f433249,
-       0x00000dd6,
-       0x00000c79,
+       0x00000df0,
+       0x00000c93,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -112,8 +112,8 @@ uint32_t gt215_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x54534554,
-       0x00000dff,
-       0x00000dd8,
+       0x00000e19,
+       0x00000df2,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -134,8 +134,8 @@ uint32_t gt215_pmu_data[] = {
        0x00000000,
        0x00000000,
        0x454c4449,
-       0x00000e0b,
-       0x00000e09,
+       0x00000e25,
+       0x00000e23,
        0x00000000,
        0x00000000,
        0x00000000,
@@ -1519,451 +1519,452 @@ uint32_t gt215_pmu_code[] = {
        0x4f48a7f1,
        0x5453a3f1,
        0xf406eab8,
-       0xa7f1461b,
+       0xa7f1601b,
        0xa3f00001,
        0x06dab800,
-       0xf4060bf4,
-/* 0x085a: perf_recv_get_slots */
-       0x07f1510e,
-       0x03f00cd2,
+       0xf1130bf4,
+       0xf00002a7,
+       0xdab800a3,
+       0x390bf406,
+/* 0x0867: perf_recv_get_slots */
+       0xf15e0ef4,
+       0xf00cd207,
+       0x0c180003,
+       0xb604bd00,
+       0x07f108c4,
+       0x03f00cd1,
        0x000c1800,
        0xc4b604bd,
-       0xd107f108,
+       0xd007f108,
        0x0003f00c,
        0xbd000c18,
        0x08c4b604,
+       0xf4ffc5f0,
+/* 0x089a: perf_recv_set_slot */
+       0xc0f02b0e,
+       0x04c0b710,
+       0x00cbd005,
+/* 0x08a7: perf_recv_not_host */
+       0xf5220ef4,
+       0xf108c821,
+       0xf00ccc07,
+       0x0e980003,
+       0xf504bd00,
+       0xf5022a21,
+       0xf4025621,
+/* 0x08c2: perf_recv_host */
+       0x21f5070e,
+/* 0x08c6: perf_recv_exit */
+       0x00f80336,
+/* 0x08c8: perf_counter_readout */
+       0x20f910f9,
+       0x40f930f9,
+       0x050817f1,
+       0xcf0614b6,
+       0x27f10011,
+       0x24b60518,
+       0x0022cf06,
+       0x052837f1,
+       0xcf0634b6,
+       0x47f10033,
+       0x44b60538,
+       0x0044cf06,
+       0x0000e7f1,
+       0x8000e3f1,
+       0x050807f1,
+       0xd00604b6,
+       0x04bd000e,
+       0x051807f1,
+       0xd00604b6,
+       0x04bd000e,
+       0x052807f1,
+       0xd00604b6,
+       0x04bd000e,
+       0x053807f1,
+       0xd00604b6,
+       0x04bd000e,
+       0xffff11cc,
+       0x31ff2c21,
+       0x4c41ff3c,
        0x0cd007f1,
-       0x180003f0,
-       0x04bd000c,
-       0xf008c4b6,
-       0x0ef4ffc5,
-/* 0x088d: perf_recv_not_host */
-       0xae21f51e,
-       0xcc07f108,
-       0x0003f00c,
-       0xbd000e98,
-       0x2a21f504,
-       0x5621f502,
-       0x070ef402,
-/* 0x08a8: perf_recv_host */
-       0x033621f5,
-/* 0x08ac: perf_recv_exit */
-/* 0x08ae: perf_counter_readout */
-       0x10f900f8,
-       0x30f920f9,
-       0x17f140f9,
-       0x14b60508,
-       0x0011cf06,
-       0x051827f1,
-       0xcf0624b6,
-       0x37f10022,
-       0x34b60528,
-       0x0033cf06,
-       0x053847f1,
-       0xcf0644b6,
-       0xe7f10044,
-       0xe3f10000,
-       0x07f18000,
-       0x04b60508,
-       0x000ed006,
-       0x07f104bd,
-       0x04b60518,
-       0x000ed006,
-       0x07f104bd,
-       0x04b60528,
-       0x000ed006,
-       0x07f104bd,
-       0x04b60538,
-       0x000ed006,
-       0x11cc04bd,
-       0x2c21ffff,
-       0xff3c31ff,
-       0x07f14c41,
-       0x03f00cd0,
-       0x00020000,
-       0x07f104bd,
-       0x03f00cd1,
-       0x00030000,
-       0x07f104bd,
-       0x03f00cd2,
-       0x00040000,
-       0x40fc04bd,
-       0x20fc30fc,
-       0x00f810fc,
-/* 0x0950: perf_init */
-       0x0003e7f1,
-       0xf100e3f0,
-       0xb6050c07,
-       0x0ed00604,
-       0xf104bd00,
-       0xf00002e7,
-       0x07f100e3,
-       0x04b6051c,
-       0x000ed006,
-       0x07f104bd,
-       0x04b6052c,
-       0x000ed006,
-       0x07f104bd,
-       0x04b6053c,
-       0x000ed006,
-       0x21f504bd,
-       0x07f108ae,
-       0x03f00ccc,
-       0x000e9800,
-       0x21f504bd,
-       0x21f5022a,
-       0x00f80256,
-/* 0x09a8: i2c_drive_scl */
-       0xf40036b0,
-       0x07f1110b,
-       0x04b607e0,
-       0x0001d006,
-       0x00f804bd,
-/* 0x09bc: i2c_drive_scl_lo */
-       0x07e407f1,
+       0x000003f0,
+       0x04bd0002,
+       0x0cd107f1,
+       0x000003f0,
+       0x04bd0003,
+       0x0cd207f1,
+       0x000003f0,
+       0x04bd0004,
+       0x30fc40fc,
+       0x10fc20fc,
+/* 0x096a: perf_init */
+       0xe7f100f8,
+       0xe3f00003,
+       0x0c07f100,
+       0x0604b605,
+       0xbd000ed0,
+       0x02e7f104,
+       0x00e3f000,
+       0x051c07f1,
        0xd00604b6,
-       0x04bd0001,
-/* 0x09ca: i2c_drive_sda */
+       0x04bd000e,
+       0x052c07f1,
+       0xd00604b6,
+       0x04bd000e,
+       0x053c07f1,
+       0xd00604b6,
+       0x04bd000e,
+       0x08c821f5,
+       0x0ccc07f1,
+       0x980003f0,
+       0x04bd000e,
+       0x022a21f5,
+       0x025621f5,
+/* 0x09c2: i2c_drive_scl */
        0x36b000f8,
        0x110bf400,
        0x07e007f1,
        0xd00604b6,
-       0x04bd0002,
-/* 0x09de: i2c_drive_sda_lo */
+       0x04bd0001,
+/* 0x09d6: i2c_drive_scl_lo */
        0x07f100f8,
        0x04b607e4,
+       0x0001d006,
+       0x00f804bd,
+/* 0x09e4: i2c_drive_sda */
+       0xf40036b0,
+       0x07f1110b,
+       0x04b607e0,
        0x0002d006,
        0x00f804bd,
-/* 0x09ec: i2c_sense_scl */
-       0xf10132f4,
-       0xb607c437,
-       0x33cf0634,
-       0x0431fd00,
-       0xf4060bf4,
-/* 0x0a02: i2c_sense_scl_done */
-       0x00f80131,
-/* 0x0a04: i2c_sense_sda */
-       0xf10132f4,
-       0xb607c437,
-       0x33cf0634,
-       0x0432fd00,
-       0xf4060bf4,
-/* 0x0a1a: i2c_sense_sda_done */
-       0x00f80131,
-/* 0x0a1c: i2c_raise_scl */
-       0x47f140f9,
-       0x37f00898,
-       0xa821f501,
-/* 0x0a29: i2c_raise_scl_wait */
-       0xe8e7f109,
-       0x7e21f403,
-       0x09ec21f5,
-       0xb60901f4,
-       0x1bf40142,
-/* 0x0a3d: i2c_raise_scl_done */
-       0xf840fcef,
-/* 0x0a41: i2c_start */
-       0xec21f500,
-       0x0d11f409,
-       0x0a0421f5,
-       0xf40611f4,
-/* 0x0a52: i2c_start_rep */
-       0x37f0300e,
-       0xa821f500,
-       0x0137f009,
-       0x09ca21f5,
-       0xb60076bb,
-       0x50f90465,
-       0xbb046594,
-       0x50bd0256,
-       0xfc0475fd,
-       0x1c21f550,
-       0x0464b60a,
-/* 0x0a7f: i2c_start_send */
-       0xf01f11f4,
+/* 0x09f8: i2c_drive_sda_lo */
+       0x07e407f1,
+       0xd00604b6,
+       0x04bd0002,
+/* 0x0a06: i2c_sense_scl */
+       0x32f400f8,
+       0xc437f101,
+       0x0634b607,
+       0xfd0033cf,
+       0x0bf40431,
+       0x0131f406,
+/* 0x0a1c: i2c_sense_scl_done */
+/* 0x0a1e: i2c_sense_sda */
+       0x32f400f8,
+       0xc437f101,
+       0x0634b607,
+       0xfd0033cf,
+       0x0bf40432,
+       0x0131f406,
+/* 0x0a34: i2c_sense_sda_done */
+/* 0x0a36: i2c_raise_scl */
+       0x40f900f8,
+       0x089847f1,
+       0xf50137f0,
+/* 0x0a43: i2c_raise_scl_wait */
+       0xf109c221,
+       0xf403e8e7,
+       0x21f57e21,
+       0x01f40a06,
+       0x0142b609,
+/* 0x0a57: i2c_raise_scl_done */
+       0xfcef1bf4,
+/* 0x0a5b: i2c_start */
+       0xf500f840,
+       0xf40a0621,
+       0x21f50d11,
+       0x11f40a1e,
+       0x300ef406,
+/* 0x0a6c: i2c_start_rep */
+       0xf50037f0,
+       0xf009c221,
+       0x21f50137,
+       0x76bb09e4,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0xf550fc04,
+       0xb60a3621,
+       0x11f40464,
+/* 0x0a99: i2c_start_send */
+       0x0037f01f,
+       0x09e421f5,
+       0x1388e7f1,
+       0xf07e21f4,
        0x21f50037,
-       0xe7f109ca,
+       0xe7f109c2,
        0x21f41388,
-       0x0037f07e,
-       0x09a821f5,
-       0x1388e7f1,
-/* 0x0a9b: i2c_start_out */
-       0xf87e21f4,
-/* 0x0a9d: i2c_stop */
-       0x0037f000,
-       0x09a821f5,
-       0xf50037f0,
-       0xf109ca21,
-       0xf403e8e7,
+/* 0x0ab5: i2c_start_out */
+/* 0x0ab7: i2c_stop */
+       0xf000f87e,
+       0x21f50037,
+       0x37f009c2,
+       0xe421f500,
+       0xe8e7f109,
+       0x7e21f403,
+       0xf50137f0,
+       0xf109c221,
+       0xf41388e7,
        0x37f07e21,
-       0xa821f501,
+       0xe421f501,
        0x88e7f109,
        0x7e21f413,
-       0xf50137f0,
-       0xf109ca21,
-       0xf41388e7,
-       0x00f87e21,
-/* 0x0ad0: i2c_bitw */
-       0x09ca21f5,
-       0x03e8e7f1,
-       0xbb7e21f4,
-       0x65b60076,
-       0x9450f904,
-       0x56bb0465,
-       0xfd50bd02,
-       0x50fc0475,
-       0x0a1c21f5,
-       0xf40464b6,
-       0xe7f11811,
-       0x21f41388,
-       0x0037f07e,
-       0x09a821f5,
+/* 0x0aea: i2c_bitw */
+       0x21f500f8,
+       0xe7f109e4,
+       0x21f403e8,
+       0x0076bb7e,
+       0xf90465b6,
+       0x04659450,
+       0xbd0256bb,
+       0x0475fd50,
+       0x21f550fc,
+       0x64b60a36,
+       0x1811f404,
        0x1388e7f1,
-/* 0x0b0f: i2c_bitw_out */
-       0xf87e21f4,
-/* 0x0b11: i2c_bitr */
-       0x0137f000,
-       0x09ca21f5,
-       0x03e8e7f1,
-       0xbb7e21f4,
+       0xf07e21f4,
+       0x21f50037,
+       0xe7f109c2,
+       0x21f41388,
+/* 0x0b29: i2c_bitw_out */
+/* 0x0b2b: i2c_bitr */
+       0xf000f87e,
+       0x21f50137,
+       0xe7f109e4,
+       0x21f403e8,
+       0x0076bb7e,
+       0xf90465b6,
+       0x04659450,
+       0xbd0256bb,
+       0x0475fd50,
+       0x21f550fc,
+       0x64b60a36,
+       0x1b11f404,
+       0x0a1e21f5,
+       0xf50037f0,
+       0xf109c221,
+       0xf41388e7,
+       0x3cf07e21,
+       0x0131f401,
+/* 0x0b70: i2c_bitr_done */
+/* 0x0b72: i2c_get_byte */
+       0x57f000f8,
+       0x0847f000,
+/* 0x0b78: i2c_get_byte_next */
+       0xbb0154b6,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x0a1c21f5,
+       0x0b2b21f5,
        0xf40464b6,
-       0x21f51b11,
-       0x37f00a04,
-       0xa821f500,
-       0x88e7f109,
-       0x7e21f413,
-       0xf4013cf0,
-/* 0x0b56: i2c_bitr_done */
-       0x00f80131,
-/* 0x0b58: i2c_get_byte */
-       0xf00057f0,
-/* 0x0b5e: i2c_get_byte_next */
-       0x54b60847,
-       0x0076bb01,
+       0x53fd2b11,
+       0x0142b605,
+       0xf0d81bf4,
+       0x76bb0137,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0xf550fc04,
+       0xb60aea21,
+/* 0x0bc2: i2c_get_byte_done */
+       0x00f80464,
+/* 0x0bc4: i2c_put_byte */
+/* 0x0bc7: i2c_put_byte_next */
+       0xb60847f0,
+       0x54ff0142,
+       0x0076bb38,
        0xf90465b6,
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b60b11,
-       0x2b11f404,
-       0xb60553fd,
-       0x1bf40142,
-       0x0137f0d8,
-       0xb60076bb,
-       0x50f90465,
-       0xbb046594,
-       0x50bd0256,
-       0xfc0475fd,
-       0xd021f550,
-       0x0464b60a,
-/* 0x0ba8: i2c_get_byte_done */
-/* 0x0baa: i2c_put_byte */
-       0x47f000f8,
-/* 0x0bad: i2c_put_byte_next */
-       0x0142b608,
-       0xbb3854ff,
+       0x64b60aea,
+       0x3411f404,
+       0xf40046b0,
+       0x76bbd81b,
+       0x0465b600,
+       0x659450f9,
+       0x0256bb04,
+       0x75fd50bd,
+       0xf550fc04,
+       0xb60b2b21,
+       0x11f40464,
+       0x0076bb0f,
+       0xf40136b0,
+       0x32f4061b,
+/* 0x0c1d: i2c_put_byte_done */
+/* 0x0c1f: i2c_addr */
+       0xbb00f801,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x0ad021f5,
+       0x0a5b21f5,
        0xf40464b6,
-       0x46b03411,
-       0xd81bf400,
+       0xc3e72911,
+       0x34b6012e,
+       0x0553fd01,
        0xb60076bb,
        0x50f90465,
        0xbb046594,
        0x50bd0256,
        0xfc0475fd,
-       0x1121f550,
+       0xc421f550,
        0x0464b60b,
-       0xbb0f11f4,
-       0x36b00076,
-       0x061bf401,
-/* 0x0c03: i2c_put_byte_done */
-       0xf80132f4,
-/* 0x0c05: i2c_addr */
+/* 0x0c64: i2c_addr_done */
+/* 0x0c66: i2c_acquire_addr */
+       0xcec700f8,
+       0x02e4b6f8,
+       0x0d24e0b7,
+       0xf800ee98,
+/* 0x0c75: i2c_acquire */
+       0x6621f500,
+       0x0421f40c,
+       0xf403d9f0,
+       0x00f84021,
+/* 0x0c84: i2c_release */
+       0x0c6621f5,
+       0xf00421f4,
+       0x21f403da,
+/* 0x0c93: i2c_recv */
+       0xf400f840,
+       0xc1c70132,
+       0x0214b6f8,
+       0xf52816b0,
+       0xa0013a1f,
+       0x980cfc13,
+       0x13a00032,
+       0x31980cd4,
+       0x0231f400,
+       0xe0f9d0f9,
+       0x67f1d0f9,
+       0x63f10000,
+       0x67921000,
+       0x0076bb01,
+       0xf90465b6,
+       0x04659450,
+       0xbd0256bb,
+       0x0475fd50,
+       0x21f550fc,
+       0x64b60c75,
+       0xb0d0fc04,
+       0x1bf500d6,
+       0x57f000b3,
        0x0076bb00,
        0xf90465b6,
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b60a41,
-       0x2911f404,
-       0x012ec3e7,
-       0xfd0134b6,
-       0x76bb0553,
-       0x0465b600,
-       0x659450f9,
-       0x0256bb04,
-       0x75fd50bd,
-       0xf550fc04,
-       0xb60baa21,
-/* 0x0c4a: i2c_addr_done */
-       0x00f80464,
-/* 0x0c4c: i2c_acquire_addr */
-       0xb6f8cec7,
-       0xe0b702e4,
-       0xee980d24,
-/* 0x0c5b: i2c_acquire */
-       0xf500f800,
-       0xf40c4c21,
-       0xd9f00421,
-       0x4021f403,
-/* 0x0c6a: i2c_release */
-       0x21f500f8,
-       0x21f40c4c,
-       0x03daf004,
-       0xf84021f4,
-/* 0x0c79: i2c_recv */
-       0x0132f400,
-       0xb6f8c1c7,
-       0x16b00214,
-       0x3a1ff528,
-       0xfc13a001,
-       0x0032980c,
-       0x0cd413a0,
-       0xf4003198,
-       0xd0f90231,
-       0xd0f9e0f9,
-       0x000067f1,
-       0x100063f1,
-       0xbb016792,
+       0x64b60c1f,
+       0xd011f504,
+       0xe0c5c700,
+       0xb60076bb,
+       0x50f90465,
+       0xbb046594,
+       0x50bd0256,
+       0xfc0475fd,
+       0xc421f550,
+       0x0464b60b,
+       0x00ad11f5,
+       0xbb0157f0,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x0c5b21f5,
-       0xfc0464b6,
-       0x00d6b0d0,
-       0x00b31bf5,
-       0xbb0057f0,
+       0x0c1f21f5,
+       0xf50464b6,
+       0xbb008a11,
        0x65b60076,
        0x9450f904,
        0x56bb0465,
        0xfd50bd02,
        0x50fc0475,
-       0x0c0521f5,
-       0xf50464b6,
-       0xc700d011,
-       0x76bbe0c5,
-       0x0465b600,
-       0x659450f9,
-       0x0256bb04,
-       0x75fd50bd,
-       0xf550fc04,
-       0xb60baa21,
-       0x11f50464,
-       0x57f000ad,
-       0x0076bb01,
-       0xf90465b6,
-       0x04659450,
-       0xbd0256bb,
-       0x0475fd50,
-       0x21f550fc,
-       0x64b60c05,
-       0x8a11f504,
-       0x0076bb00,
+       0x0b7221f5,
+       0xf40464b6,
+       0x5bcb6a11,
+       0x0076bbe0,
        0xf90465b6,
        0x04659450,
        0xbd0256bb,
        0x0475fd50,
        0x21f550fc,
-       0x64b60b58,
-       0x6a11f404,
-       0xbbe05bcb,
-       0x65b60076,
-       0x9450f904,
-       0x56bb0465,
-       0xfd50bd02,
-       0x50fc0475,
-       0x0a9d21f5,
-       0xb90464b6,
-       0x74bd025b,
-/* 0x0d7f: i2c_recv_not_rd08 */
-       0xb0430ef4,
-       0x1bf401d6,
-       0x0057f03d,
-       0x0c0521f5,
-       0xc73311f4,
-       0x21f5e0c5,
-       0x11f40baa,
-       0x0057f029,
-       0x0c0521f5,
-       0xc71f11f4,
-       0x21f5e0b5,
-       0x11f40baa,
-       0x9d21f515,
-       0xc774bd0a,
-       0x1bf408c5,
-       0x0232f409,
-/* 0x0dbf: i2c_recv_not_wr08 */
-/* 0x0dbf: i2c_recv_done */
-       0xc7030ef4,
-       0x21f5f8ce,
-       0xe0fc0c6a,
-       0x12f4d0fc,
-       0x027cb90a,
-       0x033621f5,
-/* 0x0dd4: i2c_recv_exit */
-/* 0x0dd6: i2c_init */
-       0x00f800f8,
-/* 0x0dd8: test_recv */
-       0x05d817f1,
+       0x64b60ab7,
+       0x025bb904,
+       0x0ef474bd,
+/* 0x0d99: i2c_recv_not_rd08 */
+       0x01d6b043,
+       0xf03d1bf4,
+       0x21f50057,
+       0x11f40c1f,
+       0xe0c5c733,
+       0x0bc421f5,
+       0xf02911f4,
+       0x21f50057,
+       0x11f40c1f,
+       0xe0b5c71f,
+       0x0bc421f5,
+       0xf51511f4,
+       0xbd0ab721,
+       0x08c5c774,
+       0xf4091bf4,
+       0x0ef40232,
+/* 0x0dd9: i2c_recv_not_wr08 */
+/* 0x0dd9: i2c_recv_done */
+       0xf8cec703,
+       0x0c8421f5,
+       0xd0fce0fc,
+       0xb90a12f4,
+       0x21f5027c,
+/* 0x0dee: i2c_recv_exit */
+       0x00f80336,
+/* 0x0df0: i2c_init */
+/* 0x0df2: test_recv */
+       0x17f100f8,
+       0x14b605d8,
+       0x0011cf06,
+       0xf10110b6,
+       0xb605d807,
+       0x01d00604,
+       0xf104bd00,
+       0xf1d900e7,
+       0xf5134fe3,
+       0xf8025621,
+/* 0x0e19: test_init */
+       0x00e7f100,
+       0x5621f508,
+/* 0x0e23: idle_recv */
+       0xf800f802,
+/* 0x0e25: idle */
+       0x0031f400,
+       0x05d417f1,
        0xcf0614b6,
        0x10b60011,
-       0xd807f101,
+       0xd407f101,
        0x0604b605,
        0xbd0001d0,
-       0x00e7f104,
-       0x4fe3f1d9,
-       0x5621f513,
-/* 0x0dff: test_init */
-       0xf100f802,
-       0xf50800e7,
-       0xf8025621,
-/* 0x0e09: idle_recv */
-/* 0x0e0b: idle */
-       0xf400f800,
-       0x17f10031,
-       0x14b605d4,
-       0x0011cf06,
-       0xf10110b6,
-       0xb605d407,
-       0x01d00604,
-/* 0x0e27: idle_loop */
-       0xf004bd00,
-       0x32f45817,
-/* 0x0e2d: idle_proc */
-/* 0x0e2d: idle_proc_exec */
-       0xb910f902,
-       0x21f5021e,
-       0x10fc033f,
-       0xf40911f4,
-       0x0ef40231,
-/* 0x0e41: idle_proc_next */
-       0x5810b6ef,
-       0xf4061fb8,
-       0x02f4e61b,
-       0x0028f4dd,
-       0x00bb0ef4,
-       0x00000000,
-       0x00000000,
-       0x00000000,
-       0x00000000,
-       0x00000000,
-       0x00000000,
-       0x00000000,
+/* 0x0e41: idle_loop */
+       0x5817f004,
+/* 0x0e47: idle_proc */
+/* 0x0e47: idle_proc_exec */
+       0xf90232f4,
+       0x021eb910,
+       0x033f21f5,
+       0x11f410fc,
+       0x0231f409,
+/* 0x0e5b: idle_proc_next */
+       0xb6ef0ef4,
+       0x1fb85810,
+       0xe61bf406,
+       0xf4dd02f4,
+       0x0ef40028,
+       0x000000bb,
        0x00000000,
        0x00000000,
        0x00000000,
diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/os.h 
b/drm/nouveau/nvkm/subdev/pmu/fuc/os.h
index 153d3e77..6d80342c 100644
--- a/drm/nouveau/nvkm/subdev/pmu/fuc/os.h
+++ b/drm/nouveau/nvkm/subdev/pmu/fuc/os.h
@@ -51,6 +51,7 @@
 
 /* PERF: message identifiers */
 #define PERF_MSG_GET_SLOTS 1
+#define PERF_MSG_SET_SLOT  2
 
 #define PERF_MSG_DATA0_GET_SLOTS_SLOT0 0:7
 #define PERF_MSG_DATA0_GET_SLOTS_SLOT1 8:15
@@ -61,4 +62,7 @@
 #define PERF_MSG_DATA1_GET_SLOTS_SLOT6 16:23
 #define PERF_MSG_DATA1_GET_SLOTS_SLOT7 24:31
 
+#define PERF_MSG_DATA0_SET_SLOT_SLOT 0:31
+#define PERF_MSG_DATA1_SET_SLOT_MASK 0:31
+
 #endif
diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc 
b/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc
index 01fc51bd..8bdfcc67 100644
--- a/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc
+++ b/drm/nouveau/nvkm/subdev/pmu/fuc/perf.fuc
@@ -64,6 +64,9 @@ perf_recv:
                imm32($r10, PERF_MSG_GET_SLOTS)
                cmp b32 $r13 $r10
                bra e #perf_recv_get_slots
+               imm32($r10, PERF_MSG_SET_SLOT)
+               cmp b32 $r13 $r10
+               bra e #perf_recv_set_slot
                bra   #perf_recv_host
 
 perf_recv_get_slots:
@@ -85,6 +88,12 @@ perf_recv_get_slots:
 #endif
        bra #perf_recv_host
 
+perf_recv_set_slot:
+       mulu $r12 16
+       add b32 $r12 0x504
+       iowr I[$r12] $r11
+       bra #perf_recv_exit
+
 perf_recv_not_host:
        call(perf_counter_readout)
        ld(b32, $r14, #perf_polling_period_us)
-- 
2.13.0

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

Reply via email to