[Nouveau] [PATCH v2] pmu/fuc: don't use movw directly anymore

Karol Herbst kherbst at redhat.com
Mon Nov 6 15:28:24 UTC 2017


Fixes failure to compile with recent envyas as a result of the 'movw'
alias being removed for v5.

A bit of history:

v3 only has a 16-bit sign-extended immediate mov op. In order to set
the high bits, there's a separate 'sethi' op. envyas validates that
the value passed to mov(imm) is between -0x8000 and 0x7fff. In order
to simplify macros that load both the low and high word, a 'movw'
alias was added which takes an unsigned 16-bit immediate. However the
actual hardware op still sign extends.

v5 has a full 32-bit immediate mov op. The v3 16-bit immediate mov op
is gone (loads 0 into the dst reg). However due to a bug in envyas,
the movw alias still existed, and selected the no-longer-present v3
16-bit immediate mov op. As a result usage of movw on v5 is the same
as mov with a 0x0 argument.

The proper fix throughout is to only ever use the 'movw' alias in
combination with 'sethi'. Anything else should get the sign-extended
validation to ensure that the intended value ends up in the
destination register.

Changes in fuc3 binaries is the result of a different encoding being
selected for a mov with an 8-bit value.

v2: added commit message written by Ilia, thanks for that!

Signed-off-by: Karol Herbst <kherbst at redhat.com>
---
 drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h | 1072 +++++++++++------------
 drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h |  978 ++++++++++-----------
 drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h | 1194 +++++++++++++-------------
 drm/nouveau/nvkm/subdev/pmu/fuc/memx.fuc     |   30 +-
 4 files changed, 1637 insertions(+), 1637 deletions(-)

diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h b/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h
index 0838d503..9da36e86 100644
--- a/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h
+++ b/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h
@@ -46,8 +46,8 @@ uint32_t gf100_pmu_data[] = {
 	0x00000000,
 	0x00000000,
 	0x584d454d,
-	0x00000756,
-	0x00000748,
+	0x00000754,
+	0x00000746,
 	0x00000000,
 	0x00000000,
 	0x00000000,
@@ -68,8 +68,8 @@ uint32_t gf100_pmu_data[] = {
 	0x00000000,
 	0x00000000,
 	0x46524550,
-	0x00000965,
-	0x00000758,
+	0x00000963,
+	0x00000756,
 	0x00000000,
 	0x00000000,
 	0x00000000,
@@ -90,8 +90,8 @@ uint32_t gf100_pmu_data[] = {
 	0x00000000,
 	0x00000000,
 	0x5f433249,
-	0x00000e1b,
-	0x00000cbe,
+	0x00000e19,
+	0x00000cbc,
 	0x00000000,
 	0x00000000,
 	0x00000000,
@@ -112,8 +112,8 @@ uint32_t gf100_pmu_data[] = {
 	0x00000000,
 	0x00000000,
 	0x54534554,
-	0x00000e44,
-	0x00000e1d,
+	0x00000e42,
+	0x00000e1b,
 	0x00000000,
 	0x00000000,
 	0x00000000,
@@ -134,8 +134,8 @@ uint32_t gf100_pmu_data[] = {
 	0x00000000,
 	0x00000000,
 	0x454c4449,
-	0x00000e50,
 	0x00000e4e,
+	0x00000e4c,
 	0x00000000,
 	0x00000000,
 	0x00000000,
@@ -236,19 +236,19 @@ uint32_t gf100_pmu_data[] = {
 	0x000005d3,
 	0x00000003,
 	0x00000002,
-	0x0000069d,
+	0x0000069b,
 	0x00040004,
 	0x00000000,
-	0x000006b9,
+	0x000006b7,
 	0x00010005,
 	0x00000000,
-	0x000006d6,
+	0x000006d4,
 	0x00010006,
 	0x00000000,
 	0x0000065b,
 	0x00000007,
 	0x00000000,
-	0x000006e1,
+	0x000006df,
 /* 0x03c4: memx_func_tail */
 /* 0x03c4: memx_ts_start */
 	0x00000000,
@@ -1380,602 +1380,602 @@ uint32_t gf100_pmu_code[] = {
 /* 0x065b: memx_func_wait_vblank */
 	0x9800f840,
 	0x66b00016,
-	0x130bf400,
+	0x120bf400,
 	0xf40166b0,
 	0x0ef4060b,
 /* 0x066d: memx_func_wait_vblank_head1 */
-	0x2077f12e,
-	0x070ef400,
-/* 0x0674: memx_func_wait_vblank_head0 */
-	0x000877f1,
-/* 0x0678: memx_func_wait_vblank_0 */
-	0x07c467f1,
-	0xcf0664b6,
-	0x67fd0066,
-	0xf31bf404,
-/* 0x0688: memx_func_wait_vblank_1 */
-	0x07c467f1,
-	0xcf0664b6,
-	0x67fd0066,
-	0xf30bf404,
-/* 0x0698: memx_func_wait_vblank_fini */
-	0xf80410b6,
-/* 0x069d: memx_func_wr32 */
-	0x00169800,
-	0xb6011598,
-	0x60f90810,
-	0xd0fc50f9,
-	0x21f4e0fc,
-	0x0242b640,
-	0xf8e91bf4,
-/* 0x06b9: memx_func_wait */
-	0x2c87f000,
-	0xcf0684b6,
-	0x1e980088,
-	0x011d9800,
-	0x98021c98,
-	0x10b6031b,
-	0xa321f410,
-/* 0x06d6: memx_func_delay */
-	0x1e9800f8,
-	0x0410b600,
-	0xf87e21f4,
-/* 0x06e1: memx_func_train */
-/* 0x06e3: memx_exec */
-	0xf900f800,
-	0xb9d0f9e0,
-	0xb2b902c1,
-/* 0x06ed: memx_exec_next */
-	0x00139802,
-	0xe70410b6,
-	0xe701f034,
-	0xb601e033,
-	0x30f00132,
-	0xde35980c,
-	0x12b855f9,
-	0xe41ef406,
-	0x98f10b98,
-	0xcbbbf20c,
-	0xc4b7f102,
-	0x06b4b607,
-	0xfc00bbcf,
-	0xf5e0fcd0,
-	0xf8033621,
-/* 0x0729: memx_info */
-	0x01c67000,
-/* 0x072f: memx_info_data */
-	0xf10e0bf4,
-	0xf103ccc7,
-	0xf40800b7,
-/* 0x073a: memx_info_train */
-	0xc7f10b0e,
-	0xb7f10bcc,
-/* 0x0742: memx_info_send */
-	0x21f50100,
-	0x00f80336,
-/* 0x0748: memx_recv */
-	0xf401d6b0,
-	0xd6b0980b,
-	0xd80bf400,
-/* 0x0756: memx_init */
-	0x00f800f8,
-/* 0x0758: perf_recv */
-	0x4f48a7f1,
-	0x5453a3f1,
-	0xf506eab8,
-	0xf1009b1b,
-	0xf00001a7,
-	0xdab800a3,
-	0x140bf406,
-	0x0002a7f1,
-	0xb800a3f0,
-	0x0bf406da,
-	0x980ef573,
-/* 0x0785: perf_recv_get_slots */
-	0xd207f100,
+	0x2077f02c,
+/* 0x0673: memx_func_wait_vblank_head0 */
+	0xf0060ef4,
+/* 0x0676: memx_func_wait_vblank_0 */
+	0x67f10877,
+	0x64b607c4,
+	0x0066cf06,
+	0xf40467fd,
+/* 0x0686: memx_func_wait_vblank_1 */
+	0x67f1f31b,
+	0x64b607c4,
+	0x0066cf06,
+	0xf40467fd,
+/* 0x0696: memx_func_wait_vblank_fini */
+	0x10b6f30b,
+/* 0x069b: memx_func_wr32 */
+	0x9800f804,
+	0x15980016,
+	0x0810b601,
+	0x50f960f9,
+	0xe0fcd0fc,
+	0xb64021f4,
+	0x1bf40242,
+/* 0x06b7: memx_func_wait */
+	0xf000f8e9,
+	0x84b62c87,
+	0x0088cf06,
+	0x98001e98,
+	0x1c98011d,
+	0x031b9802,
+	0xf41010b6,
+	0x00f8a321,
+/* 0x06d4: memx_func_delay */
+	0xb6001e98,
+	0x21f40410,
+/* 0x06df: memx_func_train */
+	0xf800f87e,
+/* 0x06e1: memx_exec */
+	0xf9e0f900,
+	0x02c1b9d0,
+/* 0x06eb: memx_exec_next */
+	0x9802b2b9,
+	0x10b60013,
+	0xf034e704,
+	0xe033e701,
+	0x0132b601,
+	0x980c30f0,
+	0x55f9de35,
+	0xf40612b8,
+	0x0b98e41e,
+	0xf20c98f1,
+	0xf102cbbb,
+	0xb607c4b7,
+	0xbbcf06b4,
+	0xfcd0fc00,
+	0x3621f5e0,
+/* 0x0727: memx_info */
+	0x7000f803,
+	0x0bf401c6,
+/* 0x072d: memx_info_data */
+	0xccc7f10e,
+	0x00b7f103,
+	0x0b0ef408,
+/* 0x0738: memx_info_train */
+	0x0bccc7f1,
+	0x0100b7f1,
+/* 0x0740: memx_info_send */
+	0x033621f5,
+/* 0x0746: memx_recv */
+	0xd6b000f8,
+	0x980bf401,
+	0xf400d6b0,
+	0x00f8d80b,
+/* 0x0754: memx_init */
+/* 0x0756: perf_recv */
+	0xa7f100f8,
+	0xa3f14f48,
+	0xeab85453,
+	0x9b1bf506,
+	0x01a7f100,
+	0x00a3f000,
+	0xf406dab8,
+	0xa7f1140b,
+	0xa3f00002,
+	0x06dab800,
+	0xf5730bf4,
+/* 0x0783: perf_recv_get_slots */
+	0xf100980e,
+	0xf00cd207,
+	0x0c180003,
+	0xb604bd00,
+	0x07f108c4,
+	0x03f00cd1,
+	0x000c1800,
+	0xc4b604bd,
+	0xd007f108,
 	0x0003f00c,
 	0xbd000c18,
 	0x08c4b604,
-	0x0cd107f1,
-	0x180003f0,
-	0x04bd000c,
-	0xf108c4b6,
-	0xf00cd007,
-	0x0c180003,
+	0xf1ffc5f0,
+	0xf00cd607,
+	0x0b180003,
 	0xb604bd00,
-	0xc5f008c4,
-	0xd607f1ff,
+	0x07f108b4,
+	0x03f00cd5,
+	0x000b1800,
+	0xb4b604bd,
+	0xd407f108,
 	0x0003f00c,
 	0xbd000b18,
 	0x08b4b604,
-	0x0cd507f1,
+	0x0cd307f1,
 	0x180003f0,
 	0x04bd000b,
-	0xf108b4b6,
-	0xf00cd407,
-	0x0b180003,
-	0xb604bd00,
-	0x07f108b4,
-	0x03f00cd3,
-	0x000b1800,
-	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,
+/* 0x07ef: perf_recv_set_slot */
+	0xf02b0ef4,
+	0xc0b710c0,
+	0xcbd00504,
+	0x220ef400,
+/* 0x07fc: perf_recv_not_host */
+	0x081d21f5,
+	0x0ccc07f1,
+	0x980003f0,
 	0x04bd000e,
-	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,
-	0x01d00604,
-	0xf804bd00,
-/* 0x0a01: i2c_drive_scl_lo */
-	0xe407f100,
-	0x0604b607,
-	0xbd0001d0,
-/* 0x0a0f: i2c_drive_sda */
-	0xb000f804,
+	0x022a21f5,
+	0x025621f5,
+/* 0x0817: perf_recv_host */
+	0xf5070ef4,
+/* 0x081b: perf_recv_exit */
+	0xf8033621,
+/* 0x081d: 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,
+/* 0x0963: 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,
+	0x1d21f504,
+	0xcc07f108,
+	0x0003f00c,
+	0xbd000e98,
+	0x2a21f504,
+	0x5621f502,
+/* 0x09eb: i2c_drive_scl */
+	0xb000f802,
 	0x0bf40036,
 	0xe007f111,
 	0x0604b607,
-	0xbd0002d0,
-/* 0x0a23: i2c_drive_sda_lo */
+	0xbd0001d0,
+/* 0x09ff: i2c_drive_scl_lo */
 	0xf100f804,
 	0xb607e407,
+	0x01d00604,
+	0xf804bd00,
+/* 0x0a0d: i2c_drive_sda */
+	0x0036b000,
+	0xf1110bf4,
+	0xb607e007,
 	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 */
+/* 0x0a21: i2c_drive_sda_lo */
+	0xe407f100,
+	0x0604b607,
+	0xbd0002d0,
+/* 0x0a2f: i2c_sense_scl */
+	0xf400f804,
+	0x37f10132,
+	0x34b607c4,
+	0x0033cf06,
+	0xf40431fd,
+	0x31f4060b,
+/* 0x0a45: i2c_sense_scl_done */
+/* 0x0a47: i2c_sense_sda */
+	0xf400f801,
+	0x37f10132,
+	0x34b607c4,
+	0x0033cf06,
+	0xf40432fd,
+	0x31f4060b,
+/* 0x0a5d: i2c_sense_sda_done */
+/* 0x0a5f: i2c_raise_scl */
+	0xf900f801,
+	0x9847f140,
+	0x0137f008,
+	0x09eb21f5,
+/* 0x0a6c: i2c_raise_scl_wait */
+	0x03e8e7f1,
+	0xf57e21f4,
+	0xf40a2f21,
+	0x42b60901,
+	0xef1bf401,
+/* 0x0a80: i2c_raise_scl_done */
+	0x00f840fc,
+/* 0x0a84: i2c_start */
+	0x0a2f21f5,
+	0xf50d11f4,
+	0xf40a4721,
+	0x0ef40611,
+/* 0x0a95: i2c_start_rep */
+	0x0037f030,
+	0x09eb21f5,
+	0xf50137f0,
+	0xbb0a0d21,
+	0x65b60076,
+	0x9450f904,
+	0x56bb0465,
+	0xfd50bd02,
+	0x50fc0475,
+	0x0a5f21f5,
+	0xf40464b6,
+/* 0x0ac2: i2c_start_send */
+	0x37f01f11,
+	0x0d21f500,
+	0x88e7f10a,
+	0x7e21f413,
 	0xf50037f0,
-	0xf10a0f21,
+	0xf109eb21,
 	0xf41388e7,
-	0x37f07e21,
-	0xed21f500,
-	0x88e7f109,
-	0x7e21f413,
-/* 0x0ae0: i2c_start_out */
-/* 0x0ae2: i2c_stop */
-	0x37f000f8,
-	0xed21f500,
-	0x0037f009,
-	0x0a0f21f5,
-	0x03e8e7f1,
+/* 0x0ade: i2c_start_out */
+	0x00f87e21,
+/* 0x0ae0: i2c_stop */
+	0xf50037f0,
+	0xf009eb21,
+	0x21f50037,
+	0xe7f10a0d,
+	0x21f403e8,
+	0x0137f07e,
+	0x09eb21f5,
+	0x1388e7f1,
 	0xf07e21f4,
 	0x21f50137,
-	0xe7f109ed,
+	0xe7f10a0d,
 	0x21f41388,
-	0x0137f07e,
-	0x0a0f21f5,
-	0x1388e7f1,
-	0xf87e21f4,
-/* 0x0b15: i2c_bitw */
-	0x0f21f500,
-	0xe8e7f10a,
-	0x7e21f403,
-	0xb60076bb,
-	0x50f90465,
-	0xbb046594,
-	0x50bd0256,
-	0xfc0475fd,
-	0x6121f550,
-	0x0464b60a,
-	0xf11811f4,
-	0xf41388e7,
-	0x37f07e21,
-	0xed21f500,
-	0x88e7f109,
+/* 0x0b13: i2c_bitw */
+	0xf500f87e,
+	0xf10a0d21,
+	0xf403e8e7,
+	0x76bb7e21,
+	0x0465b600,
+	0x659450f9,
+	0x0256bb04,
+	0x75fd50bd,
+	0xf550fc04,
+	0xb60a5f21,
+	0x11f40464,
+	0x88e7f118,
 	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,
+	0xf50037f0,
+	0xf109eb21,
+	0xf41388e7,
+/* 0x0b52: i2c_bitw_out */
+	0x00f87e21,
+/* 0x0b54: i2c_bitr */
+	0xf50137f0,
+	0xf10a0d21,
+	0xf403e8e7,
+	0x76bb7e21,
 	0x0465b600,
 	0x659450f9,
 	0x0256bb04,
 	0x75fd50bd,
 	0xf550fc04,
-	0xb60b5621,
+	0xb60a5f21,
 	0x11f40464,
-	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,
+	0x4721f51b,
+	0x0037f00a,
+	0x09eb21f5,
+	0x1388e7f1,
+	0xf07e21f4,
+	0x31f4013c,
+/* 0x0b99: i2c_bitr_done */
+/* 0x0b9b: i2c_get_byte */
+	0xf000f801,
+	0x47f00057,
+/* 0x0ba1: i2c_get_byte_next */
+	0x0154b608,
 	0xb60076bb,
 	0x50f90465,
 	0xbb046594,
 	0x50bd0256,
 	0xfc0475fd,
-	0x1521f550,
+	0x5421f550,
 	0x0464b60b,
-	0xb03411f4,
-	0x1bf40046,
-	0x0076bbd8,
-	0xf90465b6,
-	0x04659450,
-	0xbd0256bb,
-	0x0475fd50,
-	0x21f550fc,
-	0x64b60b56,
-	0x0f11f404,
-	0xb00076bb,
-	0x1bf40136,
-	0x0132f406,
-/* 0x0c48: i2c_put_byte_done */
-/* 0x0c4a: i2c_addr */
-	0x76bb00f8,
+	0xfd2b11f4,
+	0x42b60553,
+	0xd81bf401,
+	0xbb0137f0,
+	0x65b60076,
+	0x9450f904,
+	0x56bb0465,
+	0xfd50bd02,
+	0x50fc0475,
+	0x0b1321f5,
+/* 0x0beb: i2c_get_byte_done */
+	0xf80464b6,
+/* 0x0bed: i2c_put_byte */
+	0x0847f000,
+/* 0x0bf0: i2c_put_byte_next */
+	0xff0142b6,
+	0x76bb3854,
 	0x0465b600,
 	0x659450f9,
 	0x0256bb04,
 	0x75fd50bd,
 	0xf550fc04,
-	0xb60a8621,
+	0xb60b1321,
 	0x11f40464,
-	0x2ec3e729,
-	0x0134b601,
-	0xbb0553fd,
+	0x0046b034,
+	0xbbd81bf4,
 	0x65b60076,
 	0x9450f904,
 	0x56bb0465,
 	0xfd50bd02,
 	0x50fc0475,
-	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,
-	0xa021f550,
-	0x0464b60c,
-	0xd6b0d0fc,
-	0xb31bf500,
-	0x0057f000,
+	0x0b5421f5,
+	0xf40464b6,
+	0x76bb0f11,
+	0x0136b000,
+	0xf4061bf4,
+/* 0x0c46: i2c_put_byte_done */
+	0x00f80132,
+/* 0x0c48: i2c_addr */
 	0xb60076bb,
 	0x50f90465,
 	0xbb046594,
 	0x50bd0256,
 	0xfc0475fd,
-	0x4a21f550,
-	0x0464b60c,
-	0x00d011f5,
-	0xbbe0c5c7,
-	0x65b60076,
-	0x9450f904,
-	0x56bb0465,
-	0xfd50bd02,
-	0x50fc0475,
-	0x0bef21f5,
-	0xf50464b6,
-	0xf000ad11,
-	0x76bb0157,
+	0x8421f550,
+	0x0464b60a,
+	0xe72911f4,
+	0xb6012ec3,
+	0x53fd0134,
+	0x0076bb05,
+	0xf90465b6,
+	0x04659450,
+	0xbd0256bb,
+	0x0475fd50,
+	0x21f550fc,
+	0x64b60bed,
+/* 0x0c8d: i2c_addr_done */
+/* 0x0c8f: i2c_acquire_addr */
+	0xc700f804,
+	0xe4b6f8ce,
+	0x28e0b702,
+	0x00ee980d,
+/* 0x0c9e: i2c_acquire */
+	0x21f500f8,
+	0x21f40c8f,
+	0x03d9f004,
+	0xf84021f4,
+/* 0x0cad: i2c_release */
+	0x8f21f500,
+	0x0421f40c,
+	0xf403daf0,
+	0x00f84021,
+/* 0x0cbc: i2c_recv */
+	0xc70132f4,
+	0x14b6f8c1,
+	0x2816b002,
+	0x013a1ff5,
+	0x0d0013a0,
+	0xa0003298,
+	0x980cd813,
+	0x31f40031,
+	0xf9d0f902,
+	0xf1d0f9e0,
+	0xf1000067,
+	0x92100063,
+	0x76bb0167,
 	0x0465b600,
 	0x659450f9,
 	0x0256bb04,
 	0x75fd50bd,
 	0xf550fc04,
-	0xb60c4a21,
-	0x11f50464,
-	0x76bb008a,
+	0xb60c9e21,
+	0xd0fc0464,
+	0xf500d6b0,
+	0xf000b31b,
+	0x76bb0057,
 	0x0465b600,
 	0x659450f9,
 	0x0256bb04,
 	0x75fd50bd,
 	0xf550fc04,
-	0xb60b9d21,
-	0x11f40464,
-	0xe05bcb6a,
+	0xb60c4821,
+	0x11f50464,
+	0xc5c700d0,
+	0x0076bbe0,
+	0xf90465b6,
+	0x04659450,
+	0xbd0256bb,
+	0x0475fd50,
+	0x21f550fc,
+	0x64b60bed,
+	0xad11f504,
+	0x0157f000,
 	0xb60076bb,
 	0x50f90465,
 	0xbb046594,
 	0x50bd0256,
 	0xfc0475fd,
-	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,
-	0x04b605d8,
-	0x0001d006,
-	0xe7f104bd,
-	0xe3f1d900,
-	0x21f5134f,
-	0x00f80256,
-/* 0x0e44: test_init */
-	0x0800e7f1,
-	0x025621f5,
-/* 0x0e4e: idle_recv */
-	0x00f800f8,
-/* 0x0e50: idle */
-	0xf10031f4,
-	0xb605d417,
+	0x4821f550,
+	0x0464b60c,
+	0x008a11f5,
+	0xb60076bb,
+	0x50f90465,
+	0xbb046594,
+	0x50bd0256,
+	0xfc0475fd,
+	0x9b21f550,
+	0x0464b60b,
+	0xcb6a11f4,
+	0x76bbe05b,
+	0x0465b600,
+	0x659450f9,
+	0x0256bb04,
+	0x75fd50bd,
+	0xf550fc04,
+	0xb60ae021,
+	0x5bb90464,
+	0xf474bd02,
+/* 0x0dc2: i2c_recv_not_rd08 */
+	0xd6b0430e,
+	0x3d1bf401,
+	0xf50057f0,
+	0xf40c4821,
+	0xc5c73311,
+	0xed21f5e0,
+	0x2911f40b,
+	0xf50057f0,
+	0xf40c4821,
+	0xb5c71f11,
+	0xed21f5e0,
+	0x1511f40b,
+	0x0ae021f5,
+	0xc5c774bd,
+	0x091bf408,
+	0xf40232f4,
+/* 0x0e02: i2c_recv_not_wr08 */
+/* 0x0e02: i2c_recv_done */
+	0xcec7030e,
+	0xad21f5f8,
+	0xfce0fc0c,
+	0x0a12f4d0,
+	0xf5027cb9,
+/* 0x0e17: i2c_recv_exit */
+	0xf8033621,
+/* 0x0e19: i2c_init */
+/* 0x0e1b: test_recv */
+	0xf100f800,
+	0xb605d817,
 	0x11cf0614,
 	0x0110b600,
-	0x05d407f1,
+	0x05d807f1,
 	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,
+	0xd900e7f1,
+	0x134fe3f1,
+	0x025621f5,
+/* 0x0e42: test_init */
+	0xe7f100f8,
+	0x21f50800,
+	0x00f80256,
+/* 0x0e4c: idle_recv */
+/* 0x0e4e: idle */
+	0x31f400f8,
+	0xd417f100,
+	0x0614b605,
+	0xb60011cf,
+	0x07f10110,
+	0x04b605d4,
+	0x0001d006,
+/* 0x0e6a: idle_loop */
+	0x17f004bd,
+	0x0232f458,
+/* 0x0e70: idle_proc */
+/* 0x0e70: idle_proc_exec */
+	0x1eb910f9,
+	0x3f21f502,
+	0xf410fc03,
+	0x31f40911,
+	0xef0ef402,
+/* 0x0e84: idle_proc_next */
+	0xb85810b6,
+	0x1bf4061f,
+	0xdd02f4e6,
+	0xf40028f4,
+	0x0000bb0e,
 	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 a5f43b5d..2c36b01b 100644
--- a/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h
+++ b/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h
@@ -46,8 +46,8 @@ uint32_t gk208_pmu_data[] = {
 	0x00000000,
 	0x00000000,
 	0x584d454d,
-	0x000005f3,
-	0x000005e5,
+	0x000005ee,
+	0x000005e0,
 	0x00000000,
 	0x00000000,
 	0x00000000,
@@ -68,8 +68,8 @@ uint32_t gk208_pmu_data[] = {
 	0x00000000,
 	0x00000000,
 	0x46524550,
-	0x0000076a,
-	0x000005f5,
+	0x00000765,
+	0x000005f0,
 	0x00000000,
 	0x00000000,
 	0x00000000,
@@ -90,8 +90,8 @@ uint32_t gk208_pmu_data[] = {
 	0x00000000,
 	0x00000000,
 	0x5f433249,
-	0x00000bc3,
-	0x00000a6d,
+	0x00000bbd,
+	0x00000a67,
 	0x00000000,
 	0x00000000,
 	0x00000000,
@@ -112,8 +112,8 @@ uint32_t gk208_pmu_data[] = {
 	0x00000000,
 	0x00000000,
 	0x54534554,
-	0x00000be1,
-	0x00000bc5,
+	0x00000bdb,
+	0x00000bbf,
 	0x00000000,
 	0x00000000,
 	0x00000000,
@@ -134,8 +134,8 @@ uint32_t gk208_pmu_data[] = {
 	0x00000000,
 	0x00000000,
 	0x454c4449,
-	0x00000bec,
-	0x00000bea,
+	0x00000be6,
+	0x00000be4,
 	0x00000000,
 	0x00000000,
 	0x00000000,
@@ -233,22 +233,22 @@ uint32_t gk208_pmu_data[] = {
 /* 0x037c: memx_func_next */
 	0x00000002,
 	0x00000000,
-	0x000004cf,
+	0x000004cc,
 	0x00000003,
 	0x00000002,
-	0x00000546,
+	0x00000541,
 	0x00040004,
 	0x00000000,
-	0x00000563,
+	0x0000055e,
 	0x00010005,
 	0x00000000,
-	0x0000057d,
+	0x00000578,
 	0x00010006,
 	0x00000000,
-	0x00000541,
+	0x0000053c,
 	0x00000007,
 	0x00000000,
-	0x00000589,
+	0x00000584,
 /* 0x03c4: memx_func_tail */
 /* 0x03c4: memx_ts_start */
 	0x00000000,
@@ -1246,331 +1246,348 @@ uint32_t gk208_pmu_code[] = {
 	0x0001f604,
 	0x00f804bd,
 /* 0x045c: memx_func_enter */
-	0x162067f1,
-	0xf55d77f1,
-	0x047e6eb2,
-	0xd8b20000,
-	0xf90487fd,
-	0xfc80f960,
-	0x7ee0fcd0,
-	0x0700002d,
-	0x7e6eb2fe,
+	0x47162046,
+	0x6eb2f55d,
+	0x0000047e,
+	0x87fdd8b2,
+	0xf960f904,
+	0xfcd0fc80,
+	0x002d7ee0,
+	0xb2fe0700,
+	0x00047e6e,
+	0xfdd8b200,
+	0x60f90487,
+	0xd0fc80f9,
+	0x2d7ee0fc,
+	0xf0460000,
+	0x7e6eb226,
 	0xb2000004,
 	0x0487fdd8,
 	0x80f960f9,
 	0xe0fcd0fc,
 	0x00002d7e,
-	0x26f067f1,
-	0x047e6eb2,
-	0xd8b20000,
-	0xf90487fd,
-	0xfc80f960,
-	0x7ee0fcd0,
-	0x0600002d,
-	0x07e04004,
-	0xbd0006f6,
-/* 0x04b9: memx_func_enter_wait */
-	0x07c04604,
-	0xf00066cf,
-	0x0bf40464,
-	0xcf2c06f7,
-	0x06b50066,
-/* 0x04cf: memx_func_leave */
-	0x0600f8f1,
-	0x0066cf2c,
-	0x06f206b5,
-	0x07e44004,
-	0xbd0006f6,
-/* 0x04e1: memx_func_leave_wait */
-	0x07c04604,
-	0xf00066cf,
-	0x1bf40464,
-	0xf067f1f7,
+	0xe0400406,
+	0x0006f607,
+/* 0x04b6: memx_func_enter_wait */
+	0xc04604bd,
+	0x0066cf07,
+	0xf40464f0,
+	0x2c06f70b,
+	0xb50066cf,
+	0x00f8f106,
+/* 0x04cc: memx_func_leave */
+	0x66cf2c06,
+	0xf206b500,
+	0xe4400406,
+	0x0006f607,
+/* 0x04de: memx_func_leave_wait */
+	0xc04604bd,
+	0x0066cf07,
+	0xf40464f0,
+	0xf046f71b,
 	0xb2010726,
 	0x00047e6e,
 	0xfdd8b200,
 	0x60f90587,
 	0xd0fc80f9,
 	0x2d7ee0fc,
-	0x67f10000,
-	0x6eb21620,
-	0x0000047e,
-	0x87fdd8b2,
-	0xf960f905,
-	0xfcd0fc80,
-	0x002d7ee0,
-	0x0aa24700,
-	0x047e6eb2,
-	0xd8b20000,
-	0xf90587fd,
-	0xfc80f960,
-	0x7ee0fcd0,
-	0xf800002d,
-/* 0x0541: memx_func_wait_vblank */
+	0x20460000,
+	0x7e6eb216,
+	0xb2000004,
+	0x0587fdd8,
+	0x80f960f9,
+	0xe0fcd0fc,
+	0x00002d7e,
+	0xb20aa247,
+	0x00047e6e,
+	0xfdd8b200,
+	0x60f90587,
+	0xd0fc80f9,
+	0x2d7ee0fc,
+	0x00f80000,
+/* 0x053c: memx_func_wait_vblank */
+	0xf80410b6,
+/* 0x0541: memx_func_wr32 */
+	0x00169800,
+	0xb6011598,
+	0x60f90810,
+	0xd0fc50f9,
+	0x2d7ee0fc,
+	0x42b60000,
+	0xe81bf402,
+/* 0x055e: memx_func_wait */
+	0x2c0800f8,
+	0x980088cf,
+	0x1d98001e,
+	0x021c9801,
+	0xb6031b98,
+	0x747e1010,
+	0x00f80000,
+/* 0x0578: memx_func_delay */
+	0xb6001e98,
+	0x587e0410,
+	0x00f80000,
+/* 0x0584: memx_func_train */
+/* 0x0586: memx_exec */
+	0xe0f900f8,
+	0xc1b2d0f9,
+/* 0x058e: memx_exec_next */
+	0x1398b2b2,
 	0x0410b600,
-/* 0x0546: memx_func_wr32 */
-	0x169800f8,
-	0x01159800,
-	0xf90810b6,
-	0xfc50f960,
+	0x01f034e7,
+	0x01e033e7,
+	0xf00132b6,
+	0x35980c30,
+	0xa655f9de,
+	0xe51ef412,
+	0x98f10b98,
+	0xcbbbf20c,
+	0x07c44b02,
+	0xfc00bbcf,
 	0x7ee0fcd0,
-	0xb600002d,
-	0x1bf40242,
-/* 0x0563: memx_func_wait */
-	0x0800f8e8,
-	0x0088cf2c,
-	0x98001e98,
-	0x1c98011d,
-	0x031b9802,
-	0x7e1010b6,
-	0xf8000074,
-/* 0x057d: memx_func_delay */
-	0x001e9800,
-	0x7e0410b6,
-	0xf8000058,
-/* 0x0589: memx_func_train */
-/* 0x058b: memx_exec */
-	0xf900f800,
-	0xb2d0f9e0,
-/* 0x0593: memx_exec_next */
-	0x98b2b2c1,
-	0x10b60013,
-	0xf034e704,
-	0xe033e701,
-	0x0132b601,
-	0x980c30f0,
-	0x55f9de35,
-	0x1ef412a6,
-	0xf10b98e5,
-	0xbbf20c98,
-	0xc44b02cb,
-	0x00bbcf07,
-	0xe0fcd0fc,
-	0x00029f7e,
-/* 0x05ca: memx_info */
-	0xc67000f8,
-	0x0c0bf401,
-/* 0x05d0: memx_info_data */
-	0x4b03cc4c,
-	0x0ef40800,
-/* 0x05d9: memx_info_train */
-	0x0bcc4c09,
-/* 0x05df: memx_info_send */
-	0x7e01004b,
 	0xf800029f,
-/* 0x05e5: memx_recv */
-	0x01d6b000,
-	0xb0a30bf4,
-	0x0bf400d6,
-/* 0x05f3: memx_init */
-	0xf800f8dc,
-/* 0x05f5: perf_recv */
-	0x4f48da00,
-	0xeaa65453,
-	0x0a711bf4,
-	0xf4daa601,
-	0x020a0d0b,
+/* 0x05c5: memx_info */
+	0x01c67000,
+/* 0x05cb: memx_info_data */
+	0x4c0c0bf4,
+	0x004b03cc,
+	0x090ef408,
+/* 0x05d4: memx_info_train */
+	0x4b0bcc4c,
+/* 0x05da: memx_info_send */
+	0x9f7e0100,
+	0x00f80002,
+/* 0x05e0: memx_recv */
+	0xf401d6b0,
+	0xd6b0a30b,
+	0xdc0bf400,
+/* 0x05ee: memx_init */
+	0x00f800f8,
+/* 0x05f0: perf_recv */
+	0x534f48da,
+	0xf4eaa654,
+	0x010a711b,
 	0x0bf4daa6,
-	0x770ef456,
-/* 0x0610: perf_recv_get_slots */
-	0x180cd240,
-	0x04bd000c,
-	0x4008c4b6,
-	0x0c180cd1,
+	0xa6020a0d,
+	0x560bf4da,
+/* 0x060b: perf_recv_get_slots */
+	0x40770ef4,
+	0x0c180cd2,
 	0xb604bd00,
-	0xd04008c4,
+	0xd14008c4,
 	0x000c180c,
 	0xc4b604bd,
-	0xffc5f008,
-	0x180cd640,
-	0x04bd000b,
-	0x4008b4b6,
-	0x0b180cd5,
+	0x0cd04008,
+	0xbd000c18,
+	0x08c4b604,
+	0x40ffc5f0,
+	0x0b180cd6,
 	0xb604bd00,
-	0xd44008b4,
+	0xd54008b4,
 	0x000b180c,
 	0xb4b604bd,
-	0x0cd34008,
+	0x0cd44008,
 	0xbd000b18,
-	0x270ef404,
-/* 0x0660: perf_recv_set_slot */
-	0xb710c0f0,
-	0xf60504c0,
-	0x0ef400cb,
-/* 0x066d: perf_recv_not_host */
-	0x068a7e1e,
-	0x0ccc4000,
-	0xbd000e98,
-	0x01bb7e04,
-	0x01de7e00,
-	0x070ef400,
-/* 0x0684: perf_recv_host */
-	0x00029f7e,
-/* 0x0688: perf_recv_exit */
-/* 0x068a: perf_counter_readout */
-	0x10f900f8,
-	0x30f920f9,
-	0x50f940f9,
-	0x70f960f9,
-	0x084180f9,
-	0x0011cf05,
-	0xcf051842,
-	0x28430022,
-	0x0033cf05,
-	0xcf053844,
-	0x48450044,
-	0x0055cf05,
-	0xcf055846,
-	0x68470066,
-	0x0077cf05,
-	0xcf057848,
-	0x00de0088,
-	0x40800000,
-	0x0ef60508,
-	0x4004bd00,
-	0x0ef60518,
-	0x4004bd00,
-	0x0ef60528,
-	0x4004bd00,
-	0x0ef60538,
-	0x4004bd00,
-	0x0ef60548,
-	0x4004bd00,
-	0x0ef60558,
-	0x4004bd00,
-	0x0ef60568,
-	0x4004bd00,
-	0x0ef60578,
-	0xcc04bd00,
-	0x21ffff11,
-	0x3c31ff2c,
-	0xff4c41ff,
-	0x61ff5c51,
-	0x7c71ff6c,
-	0x408c81ff,
-	0x02200cd0,
-	0xd14004bd,
-	0xbd03200c,
-	0x0cd24004,
-	0x04bd0420,
-	0x200cd340,
-	0x4004bd05,
-	0x06200cd4,
-	0xd54004bd,
-	0xbd07200c,
-	0x0cd64004,
-	0x04bd0820,
-	0x70fc80fc,
-	0x50fc60fc,
-	0x30fc40fc,
-	0x10fc20fc,
-/* 0x076a: perf_init */
-	0x030e00f8,
-	0xf6050c40,
+	0x08b4b604,
+	0x180cd340,
+	0x04bd000b,
+/* 0x065b: perf_recv_set_slot */
+	0xf0270ef4,
+	0xc0b710c0,
+	0xcbf60504,
+	0x1e0ef400,
+/* 0x0668: perf_recv_not_host */
+	0x0006857e,
+	0x980ccc40,
 	0x04bd000e,
-	0x1c40020e,
+	0x0001bb7e,
+	0x0001de7e,
+/* 0x067f: perf_recv_host */
+	0x7e070ef4,
+/* 0x0683: perf_recv_exit */
+	0xf800029f,
+/* 0x0685: perf_counter_readout */
+	0xf910f900,
+	0xf930f920,
+	0xf950f940,
+	0xf970f960,
+	0x05084180,
+	0x420011cf,
+	0x22cf0518,
+	0x05284300,
+	0x440033cf,
+	0x44cf0538,
+	0x05484500,
+	0x460055cf,
+	0x66cf0558,
+	0x05684700,
+	0x480077cf,
+	0x88cf0578,
+	0x0000de00,
+	0x08408000,
 	0x000ef605,
-	0x2c4004bd,
+	0x184004bd,
 	0x000ef605,
-	0x3c4004bd,
+	0x284004bd,
 	0x000ef605,
-	0x4c4004bd,
+	0x384004bd,
 	0x000ef605,
-	0x5c4004bd,
+	0x484004bd,
 	0x000ef605,
-	0x6c4004bd,
+	0x584004bd,
 	0x000ef605,
-	0x7c4004bd,
+	0x684004bd,
 	0x000ef605,
-	0x8a7e04bd,
-	0xcc400006,
-	0x000e980c,
-	0x21f504bd,
-	0xde7e01bb,
-	0x00f80001,
-/* 0x07c4: i2c_drive_scl */
-	0xf40036b0,
-	0xe0400d0b,
-	0x0001f607,
-	0x00f804bd,
-/* 0x07d4: i2c_drive_scl_lo */
-	0xf607e440,
-	0x04bd0001,
-/* 0x07de: i2c_drive_sda */
+	0x784004bd,
+	0x000ef605,
+	0x11cc04bd,
+	0x2c21ffff,
+	0xff3c31ff,
+	0x51ff4c41,
+	0x6c61ff5c,
+	0xff7c71ff,
+	0xd0408c81,
+	0xbd02200c,
+	0x0cd14004,
+	0x04bd0320,
+	0x200cd240,
+	0x4004bd04,
+	0x05200cd3,
+	0xd44004bd,
+	0xbd06200c,
+	0x0cd54004,
+	0x04bd0720,
+	0x200cd640,
+	0xfc04bd08,
+	0xfc70fc80,
+	0xfc50fc60,
+	0xfc30fc40,
+	0xf810fc20,
+/* 0x0765: perf_init */
+	0x40030e00,
+	0x0ef6050c,
+	0x0e04bd00,
+	0x051c4002,
+	0xbd000ef6,
+	0x052c4004,
+	0xbd000ef6,
+	0x053c4004,
+	0xbd000ef6,
+	0x054c4004,
+	0xbd000ef6,
+	0x055c4004,
+	0xbd000ef6,
+	0x056c4004,
+	0xbd000ef6,
+	0x057c4004,
+	0xbd000ef6,
+	0x06857e04,
+	0x0ccc4000,
+	0xbd000e98,
+	0x01bbf304,
+	0x0001de7e,
+/* 0x07be: i2c_drive_scl */
 	0x36b000f8,
 	0x0d0bf400,
 	0xf607e040,
-	0x04bd0002,
-/* 0x07ee: i2c_drive_sda_lo */
+	0x04bd0001,
+/* 0x07ce: i2c_drive_scl_lo */
 	0xe44000f8,
+	0x0001f607,
+	0x00f804bd,
+/* 0x07d8: i2c_drive_sda */
+	0xf40036b0,
+	0xe0400d0b,
 	0x0002f607,
 	0x00f804bd,
-/* 0x07f8: i2c_sense_scl */
-	0x430132f4,
-	0x33cf07c4,
-	0x0431fd00,
-	0xf4060bf4,
-/* 0x080a: i2c_sense_scl_done */
-	0x00f80131,
-/* 0x080c: i2c_sense_sda */
-	0x430132f4,
-	0x33cf07c4,
-	0x0432fd00,
-	0xf4060bf4,
-/* 0x081e: i2c_sense_sda_done */
-	0x00f80131,
-/* 0x0820: i2c_raise_scl */
-	0x984440f9,
-	0x7e010308,
-/* 0x082b: i2c_raise_scl_wait */
-	0x4e0007c4,
-	0x587e03e8,
-	0xf87e0000,
-	0x01f40007,
-	0x0142b609,
-/* 0x083f: i2c_raise_scl_done */
-	0xfcef1bf4,
-/* 0x0843: i2c_start */
-	0x7e00f840,
-	0xf40007f8,
-	0x0c7e0d11,
-	0x11f40008,
-	0x2e0ef406,
-/* 0x0854: i2c_start_rep */
-	0xc47e0003,
-	0x01030007,
-	0x0007de7e,
-	0xb60076bb,
-	0x50f90465,
-	0xbb046594,
-	0x50bd0256,
-	0xfc0475fd,
-	0x08207e50,
-	0x0464b600,
-/* 0x087f: i2c_start_send */
-	0x031d11f4,
-	0x07de7e00,
-	0x13884e00,
+/* 0x07e8: i2c_drive_sda_lo */
+	0xf607e440,
+	0x04bd0002,
+/* 0x07f2: i2c_sense_scl */
+	0x32f400f8,
+	0x07c44301,
+	0xfd0033cf,
+	0x0bf40431,
+	0x0131f406,
+/* 0x0804: i2c_sense_scl_done */
+/* 0x0806: i2c_sense_sda */
+	0x32f400f8,
+	0x07c44301,
+	0xfd0033cf,
+	0x0bf40432,
+	0x0131f406,
+/* 0x0818: i2c_sense_sda_done */
+/* 0x081a: i2c_raise_scl */
+	0x40f900f8,
+	0x03089844,
+	0x07be7e01,
+/* 0x0825: i2c_raise_scl_wait */
+	0x03e84e00,
+	0x0000587e,
+	0x0007f27e,
+	0xb60901f4,
+	0x1bf40142,
+/* 0x0839: i2c_raise_scl_done */
+	0xf840fcef,
+/* 0x083d: i2c_start */
+	0x07f27e00,
+	0x0d11f400,
+	0x0008067e,
+	0xf40611f4,
+/* 0x084e: i2c_start_rep */
+	0x00032e0e,
+	0x0007be7e,
+	0xd87e0103,
+	0x76bb0007,
+	0x0465b600,
+	0x659450f9,
+	0x0256bb04,
+	0x75fd50bd,
+	0x7e50fc04,
+	0xb600081a,
+	0x11f40464,
+/* 0x0879: i2c_start_send */
+	0x7e00031d,
+	0x4e0007d8,
+	0x587e1388,
+	0x00030000,
+	0x0007be7e,
+	0x7e13884e,
+/* 0x0893: i2c_start_out */
+	0xf8000058,
+/* 0x0895: i2c_stop */
+	0x7e000300,
+	0x030007be,
+	0x07d87e00,
+	0x03e84e00,
 	0x0000587e,
-	0xc47e0003,
+	0xbe7e0103,
 	0x884e0007,
 	0x00587e13,
-/* 0x0899: i2c_start_out */
-/* 0x089b: i2c_stop */
-	0x0300f800,
-	0x07c47e00,
+	0x7e010300,
+	0x4e0007d8,
+	0x587e1388,
+	0x00f80000,
+/* 0x08c4: i2c_bitw */
+	0x0007d87e,
+	0x7e03e84e,
+	0xbb000058,
+	0x65b60076,
+	0x9450f904,
+	0x56bb0465,
+	0xfd50bd02,
+	0x50fc0475,
+	0x00081a7e,
+	0xf40464b6,
+	0x884e1711,
+	0x00587e13,
 	0x7e000300,
-	0x4e0007de,
-	0x587e03e8,
-	0x01030000,
-	0x0007c47e,
-	0x7e13884e,
-	0x03000058,
-	0x07de7e01,
-	0x13884e00,
-	0x0000587e,
-/* 0x08ca: i2c_bitw */
-	0xde7e00f8,
+	0x4e0007be,
+	0x587e1388,
+/* 0x0902: i2c_bitw_out */
+	0x00f80000,
+/* 0x0904: i2c_bitr */
+	0xd87e0103,
 	0xe84e0007,
 	0x00587e03,
 	0x0076bb00,
@@ -1578,243 +1595,226 @@ uint32_t gk208_pmu_code[] = {
 	0x04659450,
 	0xbd0256bb,
 	0x0475fd50,
-	0x207e50fc,
+	0x1a7e50fc,
 	0x64b60008,
-	0x1711f404,
-	0x7e13884e,
-	0x03000058,
-	0x07c47e00,
-	0x13884e00,
-	0x0000587e,
-/* 0x0908: i2c_bitw_out */
-/* 0x090a: i2c_bitr */
-	0x010300f8,
-	0x0007de7e,
-	0x7e03e84e,
-	0xbb000058,
-	0x65b60076,
-	0x9450f904,
-	0x56bb0465,
-	0xfd50bd02,
-	0x50fc0475,
-	0x0008207e,
-	0xf40464b6,
-	0x0c7e1a11,
-	0x00030008,
-	0x0007c47e,
-	0x7e13884e,
-	0xf0000058,
-	0x31f4013c,
-/* 0x094d: i2c_bitr_done */
-/* 0x094f: i2c_get_byte */
-	0x0500f801,
-/* 0x0953: i2c_get_byte_next */
-	0xb6080400,
-	0x76bb0154,
-	0x0465b600,
-	0x659450f9,
-	0x0256bb04,
-	0x75fd50bd,
-	0x7e50fc04,
-	0xb600090a,
-	0x11f40464,
-	0x0553fd2a,
-	0xf40142b6,
-	0x0103d81b,
+	0x1a11f404,
+	0x0008067e,
+	0xbe7e0003,
+	0x884e0007,
+	0x00587e13,
+	0x013cf000,
+/* 0x0947: i2c_bitr_done */
+	0xf80131f4,
+/* 0x0949: i2c_get_byte */
+	0x04000500,
+/* 0x094d: i2c_get_byte_next */
+	0x0154b608,
 	0xb60076bb,
 	0x50f90465,
 	0xbb046594,
 	0x50bd0256,
 	0xfc0475fd,
-	0x08ca7e50,
+	0x09047e50,
 	0x0464b600,
-/* 0x099c: i2c_get_byte_done */
-/* 0x099e: i2c_put_byte */
-	0x080400f8,
-/* 0x09a0: i2c_put_byte_next */
-	0xff0142b6,
-	0x76bb3854,
+	0xfd2a11f4,
+	0x42b60553,
+	0xd81bf401,
+	0x76bb0103,
 	0x0465b600,
 	0x659450f9,
 	0x0256bb04,
 	0x75fd50bd,
 	0x7e50fc04,
-	0xb60008ca,
-	0x11f40464,
-	0x0046b034,
-	0xbbd81bf4,
-	0x65b60076,
-	0x9450f904,
-	0x56bb0465,
-	0xfd50bd02,
-	0x50fc0475,
-	0x00090a7e,
-	0xf40464b6,
-	0x76bb0f11,
-	0x0136b000,
-	0xf4061bf4,
-/* 0x09f6: i2c_put_byte_done */
-	0x00f80132,
-/* 0x09f8: i2c_addr */
+	0xb60008c4,
+/* 0x0996: i2c_get_byte_done */
+	0x00f80464,
+/* 0x0998: i2c_put_byte */
+/* 0x099a: i2c_put_byte_next */
+	0x42b60804,
+	0x3854ff01,
 	0xb60076bb,
 	0x50f90465,
 	0xbb046594,
 	0x50bd0256,
 	0xfc0475fd,
-	0x08437e50,
+	0x08c47e50,
 	0x0464b600,
-	0xe72911f4,
-	0xb6012ec3,
-	0x53fd0134,
-	0x0076bb05,
+	0xb03411f4,
+	0x1bf40046,
+	0x0076bbd8,
 	0xf90465b6,
 	0x04659450,
 	0xbd0256bb,
 	0x0475fd50,
-	0x9e7e50fc,
+	0x047e50fc,
 	0x64b60009,
-/* 0x0a3d: i2c_addr_done */
-/* 0x0a3f: i2c_acquire_addr */
-	0xc700f804,
-	0xe4b6f8ce,
-	0x14e0b705,
-/* 0x0a4b: i2c_acquire */
-	0x7e00f8d0,
-	0x7e000a3f,
-	0xf0000004,
-	0x2d7e03d9,
-	0x00f80000,
-/* 0x0a5c: i2c_release */
-	0x000a3f7e,
-	0x0000047e,
-	0x7e03daf0,
-	0xf800002d,
-/* 0x0a6d: i2c_recv */
-	0x0132f400,
-	0xb6f8c1c7,
-	0x16b00214,
-	0x341ff528,
-	0x0013b801,
-	0x3298000d,
-	0xd813b800,
-	0x3198000c,
-	0x0231f400,
-	0xe0f9d0f9,
-	0x00d6d0f9,
-	0x92100000,
-	0x76bb0167,
+	0x0f11f404,
+	0xb00076bb,
+	0x1bf40136,
+	0x0132f406,
+/* 0x09f0: i2c_put_byte_done */
+/* 0x09f2: i2c_addr */
+	0x76bb00f8,
 	0x0465b600,
 	0x659450f9,
 	0x0256bb04,
 	0x75fd50bd,
 	0x7e50fc04,
-	0xb6000a4b,
-	0xd0fc0464,
-	0xf500d6b0,
-	0x0500b01b,
-	0x0076bb00,
-	0xf90465b6,
-	0x04659450,
-	0xbd0256bb,
-	0x0475fd50,
-	0xf87e50fc,
-	0x64b60009,
-	0xcc11f504,
-	0xe0c5c700,
+	0xb600083d,
+	0x11f40464,
+	0x2ec3e729,
+	0x0134b601,
+	0xbb0553fd,
+	0x65b60076,
+	0x9450f904,
+	0x56bb0465,
+	0xfd50bd02,
+	0x50fc0475,
+	0x0009987e,
+/* 0x0a37: i2c_addr_done */
+	0xf80464b6,
+/* 0x0a39: i2c_acquire_addr */
+	0xf8cec700,
+	0xb705e4b6,
+	0xf8d014e0,
+/* 0x0a45: i2c_acquire */
+	0x0a397e00,
+	0x00047e00,
+	0x03d9f000,
+	0x00002d7e,
+/* 0x0a56: i2c_release */
+	0x397e00f8,
+	0x047e000a,
+	0xdaf00000,
+	0x002d7e03,
+/* 0x0a67: i2c_recv */
+	0xf400f800,
+	0xc1c70132,
+	0x0214b6f8,
+	0xf52816b0,
+	0xb801341f,
+	0x000d0013,
+	0xb8003298,
+	0x000cd813,
+	0xf4003198,
+	0xd0f90231,
+	0xd0f9e0f9,
+	0x000000d6,
+	0x01679210,
 	0xb60076bb,
 	0x50f90465,
 	0xbb046594,
 	0x50bd0256,
 	0xfc0475fd,
-	0x099e7e50,
+	0x0a457e50,
 	0x0464b600,
-	0x00a911f5,
-	0x76bb0105,
+	0xd6b0d0fc,
+	0xb01bf500,
+	0xbb000500,
+	0x65b60076,
+	0x9450f904,
+	0x56bb0465,
+	0xfd50bd02,
+	0x50fc0475,
+	0x0009f27e,
+	0xf50464b6,
+	0xc700cc11,
+	0x76bbe0c5,
 	0x0465b600,
 	0x659450f9,
 	0x0256bb04,
 	0x75fd50bd,
 	0x7e50fc04,
-	0xb60009f8,
+	0xb6000998,
 	0x11f50464,
-	0x76bb0087,
-	0x0465b600,
-	0x659450f9,
-	0x0256bb04,
-	0x75fd50bd,
-	0x7e50fc04,
-	0xb600094f,
-	0x11f40464,
-	0xe05bcb67,
+	0x010500a9,
 	0xb60076bb,
 	0x50f90465,
 	0xbb046594,
 	0x50bd0256,
 	0xfc0475fd,
-	0x089b7e50,
+	0x09f27e50,
 	0x0464b600,
-	0x74bd5bb2,
-/* 0x0b6f: i2c_recv_not_rd08 */
-	0xb0410ef4,
-	0x1bf401d6,
-	0x7e00053b,
-	0xf40009f8,
-	0xc5c73211,
-	0x099e7ee0,
-	0x2811f400,
-	0xf87e0005,
+	0x008711f5,
+	0xb60076bb,
+	0x50f90465,
+	0xbb046594,
+	0x50bd0256,
+	0xfc0475fd,
+	0x09497e50,
+	0x0464b600,
+	0xcb6711f4,
+	0x76bbe05b,
+	0x0465b600,
+	0x659450f9,
+	0x0256bb04,
+	0x75fd50bd,
+	0x7e50fc04,
+	0xb6000895,
+	0x5bb20464,
+	0x0ef474bd,
+/* 0x0b69: i2c_recv_not_rd08 */
+	0x01d6b041,
+	0x053b1bf4,
+	0x09f27e00,
+	0x3211f400,
+	0x7ee0c5c7,
+	0xf4000998,
+	0x00052811,
+	0x0009f27e,
+	0xc71f11f4,
+	0x987ee0b5,
 	0x11f40009,
-	0xe0b5c71f,
-	0x00099e7e,
-	0x7e1511f4,
-	0xbd00089b,
-	0x08c5c774,
-	0xf4091bf4,
-	0x0ef40232,
-/* 0x0bad: i2c_recv_not_wr08 */
-/* 0x0bad: i2c_recv_done */
-	0xf8cec703,
-	0x000a5c7e,
-	0xd0fce0fc,
-	0xb20912f4,
-	0x029f7e7c,
-/* 0x0bc1: i2c_recv_exit */
-/* 0x0bc3: i2c_init */
-	0xf800f800,
-/* 0x0bc5: test_recv */
-	0x04584100,
-	0xb60011cf,
-	0x58400110,
-	0x0001f604,
-	0x00de04bd,
-	0x7e134fd9,
-	0xf80001de,
-/* 0x0be1: test_init */
-	0x08004e00,
-	0x0001de7e,
-/* 0x0bea: idle_recv */
-	0x00f800f8,
-/* 0x0bec: idle */
-	0x410031f4,
-	0x11cf0454,
+	0x08957e15,
+	0xc774bd00,
+	0x1bf408c5,
+	0x0232f409,
+/* 0x0ba7: i2c_recv_not_wr08 */
+/* 0x0ba7: i2c_recv_done */
+	0xc7030ef4,
+	0x567ef8ce,
+	0xe0fc000a,
+	0x12f4d0fc,
+	0x7e7cb209,
+/* 0x0bbb: i2c_recv_exit */
+	0xf800029f,
+/* 0x0bbd: i2c_init */
+/* 0x0bbf: test_recv */
+	0x4100f800,
+	0x11cf0458,
 	0x0110b600,
-	0xf6045440,
+	0xf6045840,
 	0x04bd0001,
-/* 0x0c00: idle_loop */
-	0x32f45801,
-/* 0x0c05: idle_proc */
-/* 0x0c05: idle_proc_exec */
-	0xb210f902,
-	0x02a87e1e,
-	0xf410fc00,
-	0x31f40911,
-	0xf00ef402,
-/* 0x0c18: idle_proc_next */
-	0xa65810b6,
-	0xe81bf41f,
-	0xf4e002f4,
-	0x0ef40028,
-	0x000000c6,
+	0x4fd900de,
+	0x01de7e13,
+/* 0x0bdb: test_init */
+	0x4e00f800,
+	0xde7e0800,
+	0x00f80001,
+/* 0x0be4: idle_recv */
+/* 0x0be6: idle */
+	0x31f400f8,
+	0x04544100,
+	0xb60011cf,
+	0x54400110,
+	0x0001f604,
+/* 0x0bfa: idle_loop */
+	0x580104bd,
+/* 0x0bff: idle_proc */
+/* 0x0bff: idle_proc_exec */
+	0xf90232f4,
+	0x7e1eb210,
+	0xfc0002a8,
+	0x0911f410,
+	0xf40231f4,
+/* 0x0c12: idle_proc_next */
+	0x10b6f00e,
+	0xf41fa658,
+	0x02f4e81b,
+	0x0028f4e0,
+	0x00c60ef4,
+	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 17be7cb9..e00da62d 100644
--- a/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h
+++ b/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h
@@ -46,8 +46,8 @@ uint32_t gt215_pmu_data[] = {
 	0x00000000,
 	0x00000000,
 	0x584d454d,
-	0x0000083a,
-	0x0000082c,
+	0x00000833,
+	0x00000825,
 	0x00000000,
 	0x00000000,
 	0x00000000,
@@ -68,8 +68,8 @@ uint32_t gt215_pmu_data[] = {
 	0x00000000,
 	0x00000000,
 	0x46524550,
-	0x0000096a,
-	0x0000083c,
+	0x00000963,
+	0x00000835,
 	0x00000000,
 	0x00000000,
 	0x00000000,
@@ -90,8 +90,8 @@ uint32_t gt215_pmu_data[] = {
 	0x00000000,
 	0x00000000,
 	0x5f433249,
-	0x00000df0,
-	0x00000c93,
+	0x00000de9,
+	0x00000c8c,
 	0x00000000,
 	0x00000000,
 	0x00000000,
@@ -112,8 +112,8 @@ uint32_t gt215_pmu_data[] = {
 	0x00000000,
 	0x00000000,
 	0x54534554,
-	0x00000e19,
-	0x00000df2,
+	0x00000e12,
+	0x00000deb,
 	0x00000000,
 	0x00000000,
 	0x00000000,
@@ -134,8 +134,8 @@ uint32_t gt215_pmu_data[] = {
 	0x00000000,
 	0x00000000,
 	0x454c4449,
-	0x00000e25,
-	0x00000e23,
+	0x00000e1e,
+	0x00000e1c,
 	0x00000000,
 	0x00000000,
 	0x00000000,
@@ -233,22 +233,22 @@ uint32_t gt215_pmu_data[] = {
 /* 0x037c: memx_func_next */
 	0x00000002,
 	0x00000000,
-	0x000005a0,
+	0x0000059f,
 	0x00000003,
 	0x00000002,
-	0x00000632,
+	0x0000062f,
 	0x00040004,
 	0x00000000,
-	0x0000064e,
+	0x0000064b,
 	0x00010005,
 	0x00000000,
-	0x0000066b,
+	0x00000668,
 	0x00010006,
 	0x00000000,
-	0x000005f0,
+	0x000005ef,
 	0x00000007,
 	0x00000000,
-	0x00000676,
+	0x00000673,
 /* 0x03c4: memx_func_tail */
 /* 0x03c4: memx_ts_start */
 	0x00000000,
@@ -1308,663 +1308,663 @@ uint32_t gt215_pmu_code[] = {
 	0x67f102d7,
 	0x63f1fffc,
 	0x76fdffff,
-	0x0267f104,
-	0x0576fd00,
-	0x70f980f9,
-	0xe0fcd0fc,
-	0xf04021f4,
+	0x0267f004,
+	0xf90576fd,
+	0xfc70f980,
+	0xf4e0fcd0,
+	0x67f04021,
+	0xe007f104,
+	0x0604b607,
+	0xbd0006d0,
+/* 0x0581: memx_func_enter_wait */
+	0xc067f104,
+	0x0664b607,
+	0xf00066cf,
+	0x0bf40464,
+	0x2c67f0f3,
+	0xcf0664b6,
+	0x06800066,
+/* 0x059f: memx_func_leave */
+	0xf000f8f1,
+	0x64b62c67,
+	0x0066cf06,
+	0xf0f20680,
 	0x07f10467,
-	0x04b607e0,
+	0x04b607e4,
 	0x0006d006,
-/* 0x0582: memx_func_enter_wait */
+/* 0x05ba: memx_func_leave_wait */
 	0x67f104bd,
 	0x64b607c0,
 	0x0066cf06,
 	0xf40464f0,
-	0x67f0f30b,
-	0x0664b62c,
-	0x800066cf,
-	0x00f8f106,
-/* 0x05a0: memx_func_leave */
-	0xb62c67f0,
-	0x66cf0664,
-	0xf2068000,
-	0xf10467f0,
-	0xb607e407,
-	0x06d00604,
-/* 0x05bb: memx_func_leave_wait */
-	0xf104bd00,
-	0xb607c067,
-	0x66cf0664,
-	0x0464f000,
-	0xf1f31bf4,
-	0xb9161087,
-	0x21f4028e,
-	0x02d7b904,
-	0xffcc67f1,
-	0xffff63f1,
-	0xf90476fd,
-	0xfc70f980,
-	0xf4e0fcd0,
-	0x00f84021,
-/* 0x05f0: memx_func_wait_vblank */
-	0xb0001698,
-	0x0bf40066,
-	0x0166b013,
-	0xf4060bf4,
-/* 0x0602: memx_func_wait_vblank_head1 */
-	0x77f12e0e,
-	0x0ef40020,
-/* 0x0609: memx_func_wait_vblank_head0 */
-	0x0877f107,
-/* 0x060d: memx_func_wait_vblank_0 */
-	0xc467f100,
-	0x0664b607,
-	0xfd0066cf,
-	0x1bf40467,
-/* 0x061d: memx_func_wait_vblank_1 */
-	0xc467f1f3,
-	0x0664b607,
-	0xfd0066cf,
-	0x0bf40467,
-/* 0x062d: memx_func_wait_vblank_fini */
-	0x0410b6f3,
-/* 0x0632: memx_func_wr32 */
-	0x169800f8,
-	0x01159800,
-	0xf90810b6,
-	0xfc50f960,
-	0xf4e0fcd0,
-	0x42b64021,
-	0xe91bf402,
-/* 0x064e: memx_func_wait */
-	0x87f000f8,
-	0x0684b62c,
-	0x980088cf,
-	0x1d98001e,
-	0x021c9801,
-	0xb6031b98,
-	0x21f41010,
-/* 0x066b: memx_func_delay */
-	0x9800f8a3,
-	0x10b6001e,
-	0x7e21f404,
-/* 0x0676: memx_func_train */
-	0x57f100f8,
-	0x77f10003,
-	0x97f10000,
-	0x93f00000,
-	0x029eb970,
-	0xb90421f4,
-	0xe7f102d8,
-	0x21f42710,
-/* 0x0695: memx_func_train_loop_outer */
-	0x0158e07e,
-	0x0083f101,
-	0xe097f102,
-	0x1193f011,
-	0x80f990f9,
+	0x87f1f31b,
+	0x8eb91610,
+	0x0421f402,
+	0xf102d7b9,
+	0xf1ffcc67,
+	0xfdffff63,
+	0x80f90476,
+	0xd0fc70f9,
+	0x21f4e0fc,
+/* 0x05ef: memx_func_wait_vblank */
+	0x9800f840,
+	0x66b00016,
+	0x120bf400,
+	0xf40166b0,
+	0x0ef4060b,
+/* 0x0601: memx_func_wait_vblank_head1 */
+	0x2077f02c,
+/* 0x0607: memx_func_wait_vblank_head0 */
+	0xf0060ef4,
+/* 0x060a: memx_func_wait_vblank_0 */
+	0x67f10877,
+	0x64b607c4,
+	0x0066cf06,
+	0xf40467fd,
+/* 0x061a: memx_func_wait_vblank_1 */
+	0x67f1f31b,
+	0x64b607c4,
+	0x0066cf06,
+	0xf40467fd,
+/* 0x062a: memx_func_wait_vblank_fini */
+	0x10b6f30b,
+/* 0x062f: memx_func_wr32 */
+	0x9800f804,
+	0x15980016,
+	0x0810b601,
+	0x50f960f9,
 	0xe0fcd0fc,
-	0xf94021f4,
-	0x0067f150,
-/* 0x06b5: memx_func_train_loop_inner */
-	0x1187f100,
-	0x9068ff11,
-	0xfd109894,
-	0x97f10589,
-	0x93f00720,
-	0xf990f910,
-	0xfcd0fc80,
-	0x4021f4e0,
-	0x008097f1,
-	0xb91093f0,
-	0x21f4029e,
-	0x02d8b904,
-	0xf92088c5,
+	0xb64021f4,
+	0x1bf40242,
+/* 0x064b: memx_func_wait */
+	0xf000f8e9,
+	0x84b62c87,
+	0x0088cf06,
+	0x98001e98,
+	0x1c98011d,
+	0x031b9802,
+	0xf41010b6,
+	0x00f8a321,
+/* 0x0668: memx_func_delay */
+	0xb6001e98,
+	0x21f40410,
+/* 0x0673: memx_func_train */
+	0xf000f87e,
+	0x77f00357,
+	0x0097f100,
+	0x7093f000,
+	0xf4029eb9,
+	0xd8b90421,
+	0x10e7f102,
+	0x7e21f427,
+/* 0x0690: memx_func_train_loop_outer */
+	0x010158e0,
+	0x020083f1,
+	0x11e097f1,
+	0xf91193f0,
+	0xfc80f990,
+	0xf4e0fcd0,
+	0x50f94021,
+/* 0x06af: memx_func_train_loop_inner */
+	0xf10067f0,
+	0xff111187,
+	0x98949068,
+	0x0589fd10,
+	0x072097f1,
+	0xf91093f0,
 	0xfc80f990,
 	0xf4e0fcd0,
 	0x97f14021,
-	0x93f0053c,
-	0x0287f110,
-	0x0083f130,
-	0xf990f980,
+	0x93f00080,
+	0x029eb910,
+	0xb90421f4,
+	0x88c502d8,
+	0xf990f920,
 	0xfcd0fc80,
 	0x4021f4e0,
-	0x0560e7f1,
-	0xf110e3f0,
-	0xf10000d7,
-	0x908000d3,
-	0xb7f100dc,
-	0xb3f08480,
-	0xa321f41e,
-	0x000057f1,
-	0xffff97f1,
-	0x830093f1,
-/* 0x0734: memx_func_train_loop_4x */
-	0x0080a7f1,
-	0xb910a3f0,
-	0x21f402ae,
-	0x02d8b904,
-	0xffdfb7f1,
-	0xffffb3f1,
-	0xf9048bfd,
-	0xfc80f9a0,
+	0x053c97f1,
+	0xf11093f0,
+	0xf1300287,
+	0xf9800083,
+	0xfc80f990,
 	0xf4e0fcd0,
-	0xa7f14021,
-	0xa3f0053c,
-	0x0287f110,
-	0x0083f130,
-	0xf9a0f980,
-	0xfcd0fc80,
-	0x4021f4e0,
-	0x0560e7f1,
-	0xf110e3f0,
-	0xf10000d7,
-	0xb98000d3,
-	0xb7f102dc,
-	0xb3f02710,
-	0xa321f400,
-	0xf402eeb9,
-	0xddb90421,
-	0x949dff02,
+	0xe7f14021,
+	0xe3f00560,
+	0x00d7f110,
+	0x00d3f100,
+	0x00dc9080,
+	0x8480b7f1,
+	0xf41eb3f0,
+	0x57f0a321,
+	0xff97f100,
+	0x0093f1ff,
+/* 0x072d: memx_func_train_loop_4x */
+	0x80a7f183,
+	0x10a3f000,
+	0xf402aeb9,
+	0xd8b90421,
+	0xdfb7f102,
+	0xffb3f1ff,
+	0x048bfdff,
+	0x80f9a0f9,
+	0xe0fcd0fc,
+	0xf14021f4,
+	0xf0053ca7,
+	0x87f110a3,
+	0x83f13002,
+	0xa0f98000,
+	0xd0fc80f9,
+	0x21f4e0fc,
+	0x60e7f140,
+	0x10e3f005,
+	0x0000d7f1,
+	0x8000d3f1,
+	0xf102dcb9,
+	0xf02710b7,
+	0x21f400b3,
+	0x02eeb9a3,
+	0xb90421f4,
+	0x9dff02dd,
+	0x0150b694,
+	0xf4045670,
+	0x7aa0921e,
+	0xa9800bcc,
+	0x0160b600,
+	0x700470b6,
+	0x1ef51066,
+	0x50fcff01,
 	0x700150b6,
-	0x1ef40456,
-	0xcc7aa092,
-	0x00a9800b,
-	0xb60160b6,
-	0x66700470,
-	0x001ef510,
-	0xb650fcff,
-	0x56700150,
-	0xd41ef507,
-/* 0x07c7: memx_exec */
-	0xf900f8fe,
-	0xb9d0f9e0,
-	0xb2b902c1,
-/* 0x07d1: memx_exec_next */
-	0x00139802,
-	0xe70410b6,
-	0xe701f034,
-	0xb601e033,
-	0x30f00132,
-	0xde35980c,
-	0x12b855f9,
-	0xe41ef406,
-	0x98f10b98,
-	0xcbbbf20c,
-	0xc4b7f102,
-	0x06b4b607,
-	0xfc00bbcf,
-	0xf5e0fcd0,
+	0x1ef50756,
+	0x00f8fed6,
+/* 0x07c0: memx_exec */
+	0xd0f9e0f9,
+	0xb902c1b9,
+/* 0x07ca: memx_exec_next */
+	0x139802b2,
+	0x0410b600,
+	0x01f034e7,
+	0x01e033e7,
+	0xf00132b6,
+	0x35980c30,
+	0xb855f9de,
+	0x1ef40612,
+	0xf10b98e4,
+	0xbbf20c98,
+	0xb7f102cb,
+	0xb4b607c4,
+	0x00bbcf06,
+	0xe0fcd0fc,
+	0x033621f5,
+/* 0x0806: memx_info */
+	0xc67000f8,
+	0x0e0bf401,
+/* 0x080c: memx_info_data */
+	0x03ccc7f1,
+	0x0800b7f1,
+/* 0x0817: memx_info_train */
+	0xf10b0ef4,
+	0xf10bccc7,
+/* 0x081f: memx_info_send */
+	0xf50100b7,
 	0xf8033621,
-/* 0x080d: memx_info */
-	0x01c67000,
-/* 0x0813: memx_info_data */
-	0xf10e0bf4,
-	0xf103ccc7,
-	0xf40800b7,
-/* 0x081e: memx_info_train */
-	0xc7f10b0e,
-	0xb7f10bcc,
-/* 0x0826: memx_info_send */
-	0x21f50100,
-	0x00f80336,
-/* 0x082c: memx_recv */
-	0xf401d6b0,
-	0xd6b0980b,
-	0xd80bf400,
-/* 0x083a: memx_init */
-	0x00f800f8,
-/* 0x083c: perf_recv */
-	0x4f48a7f1,
-	0x5453a3f1,
-	0xf406eab8,
-	0xa7f1601b,
-	0xa3f00001,
-	0x06dab800,
-	0xf1130bf4,
-	0xf00002a7,
+/* 0x0825: memx_recv */
+	0x01d6b000,
+	0xb0980bf4,
+	0x0bf400d6,
+/* 0x0833: memx_init */
+	0xf800f8d8,
+/* 0x0835: perf_recv */
+	0x48a7f100,
+	0x53a3f14f,
+	0x06eab854,
+	0xf1601bf4,
+	0xf00001a7,
 	0xdab800a3,
-	0x390bf406,
-/* 0x0867: perf_recv_get_slots */
-	0xf15e0ef4,
-	0xf00cd207,
+	0x130bf406,
+	0x0002a7f1,
+	0xb800a3f0,
+	0x0bf406da,
+	0x5e0ef439,
+/* 0x0860: perf_recv_get_slots */
+	0x0cd207f1,
+	0x180003f0,
+	0x04bd000c,
+	0xf108c4b6,
+	0xf00cd107,
 	0x0c180003,
 	0xb604bd00,
 	0x07f108c4,
-	0x03f00cd1,
+	0x03f00cd0,
 	0x000c1800,
 	0xc4b604bd,
-	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,
-	0x000003f0,
-	0x04bd0002,
-	0x0cd107f1,
-	0x000003f0,
-	0x04bd0003,
-	0x0cd207f1,
-	0x000003f0,
-	0x04bd0004,
-	0x30fc40fc,
-	0x10fc20fc,
-/* 0x096a: perf_init */
-	0xe7f100f8,
-	0xe3f00003,
-	0x0c07f100,
-	0x0604b605,
-	0xbd000ed0,
-	0x02e7f104,
-	0x00e3f000,
-	0x051c07f1,
-	0xd00604b6,
-	0x04bd000e,
-	0x052c07f1,
-	0xd00604b6,
-	0x04bd000e,
-	0x053c07f1,
-	0xd00604b6,
-	0x04bd000e,
-	0x08c821f5,
+	0xffc5f008,
+/* 0x0893: perf_recv_set_slot */
+	0xf02b0ef4,
+	0xc0b710c0,
+	0xcbd00504,
+	0x220ef400,
+/* 0x08a0: perf_recv_not_host */
+	0x08c121f5,
 	0x0ccc07f1,
 	0x980003f0,
 	0x04bd000e,
 	0x022a21f5,
 	0x025621f5,
-/* 0x09c2: i2c_drive_scl */
-	0x36b000f8,
-	0x110bf400,
-	0x07e007f1,
-	0xd00604b6,
-	0x04bd0001,
-/* 0x09d6: i2c_drive_scl_lo */
-	0x07f100f8,
-	0x04b607e4,
-	0x0001d006,
-	0x00f804bd,
-/* 0x09e4: i2c_drive_sda */
-	0xf40036b0,
-	0x07f1110b,
-	0x04b607e0,
-	0x0002d006,
-	0x00f804bd,
-/* 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,
+/* 0x08bb: perf_recv_host */
+	0xf5070ef4,
+/* 0x08bf: perf_recv_exit */
+	0xf8033621,
+/* 0x08c1: perf_counter_readout */
+	0xf910f900,
+	0xf930f920,
+	0x0817f140,
+	0x0614b605,
+	0xf10011cf,
+	0xb6051827,
+	0x22cf0624,
+	0x2837f100,
+	0x0634b605,
+	0xf10033cf,
+	0xb6053847,
+	0x44cf0644,
+	0x00e7f100,
+	0x00e3f100,
+	0x0807f180,
+	0x0604b605,
+	0xbd000ed0,
+	0x1807f104,
+	0x0604b605,
+	0xbd000ed0,
+	0x2807f104,
+	0x0604b605,
+	0xbd000ed0,
+	0x3807f104,
+	0x0604b605,
+	0xbd000ed0,
+	0xff11cc04,
+	0xff2c21ff,
+	0x41ff3c31,
+	0xd007f14c,
+	0x0003f00c,
+	0xbd000200,
+	0xd107f104,
+	0x0003f00c,
+	0xbd000300,
+	0xd207f104,
+	0x0003f00c,
+	0xbd000400,
+	0xfc40fc04,
+	0xfc20fc30,
+/* 0x0963: perf_init */
+	0xf100f810,
+	0xf00003e7,
+	0x07f100e3,
+	0x04b6050c,
+	0x000ed006,
+	0xe7f104bd,
+	0xe3f00002,
+	0x1c07f100,
+	0x0604b605,
+	0xbd000ed0,
+	0x2c07f104,
+	0x0604b605,
+	0xbd000ed0,
+	0x3c07f104,
+	0x0604b605,
+	0xbd000ed0,
+	0xc121f504,
+	0xcc07f108,
+	0x0003f00c,
+	0xbd000e98,
+	0x2a21f504,
+	0x5621f502,
+/* 0x09bb: i2c_drive_scl */
+	0xb000f802,
+	0x0bf40036,
+	0xe007f111,
+	0x0604b607,
+	0xbd0001d0,
+/* 0x09cf: i2c_drive_scl_lo */
+	0xf100f804,
+	0xb607e407,
+	0x01d00604,
+	0xf804bd00,
+/* 0x09dd: i2c_drive_sda */
+	0x0036b000,
+	0xf1110bf4,
+	0xb607e007,
+	0x02d00604,
+	0xf804bd00,
+/* 0x09f1: i2c_drive_sda_lo */
+	0xe407f100,
+	0x0604b607,
+	0xbd0002d0,
+/* 0x09ff: i2c_sense_scl */
+	0xf400f804,
+	0x37f10132,
+	0x34b607c4,
+	0x0033cf06,
+	0xf40431fd,
+	0x31f4060b,
+/* 0x0a15: i2c_sense_scl_done */
+/* 0x0a17: i2c_sense_sda */
+	0xf400f801,
+	0x37f10132,
+	0x34b607c4,
+	0x0033cf06,
+	0xf40432fd,
+	0x31f4060b,
+/* 0x0a2d: i2c_sense_sda_done */
+/* 0x0a2f: i2c_raise_scl */
+	0xf900f801,
+	0x9847f140,
+	0x0137f008,
+	0x09bb21f5,
+/* 0x0a3c: i2c_raise_scl_wait */
+	0x03e8e7f1,
+	0xf57e21f4,
+	0xf409ff21,
+	0x42b60901,
+	0xef1bf401,
+/* 0x0a50: i2c_raise_scl_done */
+	0x00f840fc,
+/* 0x0a54: i2c_start */
+	0x09ff21f5,
+	0xf50d11f4,
+	0xf40a1721,
+	0x0ef40611,
+/* 0x0a65: i2c_start_rep */
+	0x0037f030,
+	0x09bb21f5,
 	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 */
+	0xbb09dd21,
+	0x65b60076,
+	0x9450f904,
+	0x56bb0465,
+	0xfd50bd02,
+	0x50fc0475,
+	0x0a2f21f5,
+	0xf40464b6,
+/* 0x0a92: i2c_start_send */
+	0x37f01f11,
+	0xdd21f500,
+	0x88e7f109,
+	0x7e21f413,
+	0xf50037f0,
+	0xf109bb21,
+	0xf41388e7,
+/* 0x0aae: i2c_start_out */
+	0x00f87e21,
+/* 0x0ab0: i2c_stop */
 	0xf50037f0,
-	0xf009c221,
+	0xf009bb21,
+	0x21f50037,
+	0xe7f109dd,
+	0x21f403e8,
+	0x0137f07e,
+	0x09bb21f5,
+	0x1388e7f1,
+	0xf07e21f4,
 	0x21f50137,
-	0x76bb09e4,
+	0xe7f109dd,
+	0x21f41388,
+/* 0x0ae3: i2c_bitw */
+	0xf500f87e,
+	0xf109dd21,
+	0xf403e8e7,
+	0x76bb7e21,
 	0x0465b600,
 	0x659450f9,
 	0x0256bb04,
 	0x75fd50bd,
 	0xf550fc04,
-	0xb60a3621,
+	0xb60a2f21,
 	0x11f40464,
-/* 0x0a99: i2c_start_send */
-	0x0037f01f,
-	0x09e421f5,
-	0x1388e7f1,
-	0xf07e21f4,
-	0x21f50037,
-	0xe7f109c2,
-	0x21f41388,
-/* 0x0ab5: i2c_start_out */
-/* 0x0ab7: i2c_stop */
-	0xf000f87e,
-	0x21f50037,
-	0x37f009c2,
-	0xe421f500,
-	0xe8e7f109,
-	0x7e21f403,
-	0xf50137f0,
-	0xf109c221,
-	0xf41388e7,
-	0x37f07e21,
-	0xe421f501,
-	0x88e7f109,
+	0x88e7f118,
 	0x7e21f413,
-/* 0x0aea: i2c_bitw */
-	0x21f500f8,
-	0xe7f109e4,
-	0x21f403e8,
-	0x0076bb7e,
-	0xf90465b6,
-	0x04659450,
-	0xbd0256bb,
-	0x0475fd50,
-	0x21f550fc,
-	0x64b60a36,
-	0x1811f404,
-	0x1388e7f1,
-	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,
+	0xf109bb21,
 	0xf41388e7,
-	0x3cf07e21,
-	0x0131f401,
-/* 0x0b70: i2c_bitr_done */
-/* 0x0b72: i2c_get_byte */
-	0x57f000f8,
-	0x0847f000,
-/* 0x0b78: i2c_get_byte_next */
-	0xbb0154b6,
-	0x65b60076,
-	0x9450f904,
-	0x56bb0465,
-	0xfd50bd02,
-	0x50fc0475,
-	0x0b2b21f5,
-	0xf40464b6,
-	0x53fd2b11,
-	0x0142b605,
-	0xf0d81bf4,
-	0x76bb0137,
+/* 0x0b22: i2c_bitw_out */
+	0x00f87e21,
+/* 0x0b24: i2c_bitr */
+	0xf50137f0,
+	0xf109dd21,
+	0xf403e8e7,
+	0x76bb7e21,
 	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,
-	0x64b60aea,
-	0x3411f404,
-	0xf40046b0,
-	0x76bbd81b,
+	0xb60a2f21,
+	0x11f40464,
+	0x1721f51b,
+	0x0037f00a,
+	0x09bb21f5,
+	0x1388e7f1,
+	0xf07e21f4,
+	0x31f4013c,
+/* 0x0b69: i2c_bitr_done */
+/* 0x0b6b: i2c_get_byte */
+	0xf000f801,
+	0x47f00057,
+/* 0x0b71: i2c_get_byte_next */
+	0x0154b608,
+	0xb60076bb,
+	0x50f90465,
+	0xbb046594,
+	0x50bd0256,
+	0xfc0475fd,
+	0x2421f550,
+	0x0464b60b,
+	0xfd2b11f4,
+	0x42b60553,
+	0xd81bf401,
+	0xbb0137f0,
+	0x65b60076,
+	0x9450f904,
+	0x56bb0465,
+	0xfd50bd02,
+	0x50fc0475,
+	0x0ae321f5,
+/* 0x0bbb: i2c_get_byte_done */
+	0xf80464b6,
+/* 0x0bbd: i2c_put_byte */
+	0x0847f000,
+/* 0x0bc0: i2c_put_byte_next */
+	0xff0142b6,
+	0x76bb3854,
 	0x0465b600,
 	0x659450f9,
 	0x0256bb04,
 	0x75fd50bd,
 	0xf550fc04,
-	0xb60b2b21,
+	0xb60ae321,
 	0x11f40464,
-	0x0076bb0f,
-	0xf40136b0,
-	0x32f4061b,
-/* 0x0c1d: i2c_put_byte_done */
-/* 0x0c1f: i2c_addr */
-	0xbb00f801,
+	0x0046b034,
+	0xbbd81bf4,
 	0x65b60076,
 	0x9450f904,
 	0x56bb0465,
 	0xfd50bd02,
 	0x50fc0475,
-	0x0a5b21f5,
+	0x0b2421f5,
 	0xf40464b6,
-	0xc3e72911,
-	0x34b6012e,
-	0x0553fd01,
+	0x76bb0f11,
+	0x0136b000,
+	0xf4061bf4,
+/* 0x0c16: i2c_put_byte_done */
+	0x00f80132,
+/* 0x0c18: i2c_addr */
 	0xb60076bb,
 	0x50f90465,
 	0xbb046594,
 	0x50bd0256,
 	0xfc0475fd,
-	0xc421f550,
-	0x0464b60b,
-/* 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,
+	0x5421f550,
+	0x0464b60a,
+	0xe72911f4,
+	0xb6012ec3,
+	0x53fd0134,
+	0x0076bb05,
 	0xf90465b6,
 	0x04659450,
 	0xbd0256bb,
 	0x0475fd50,
 	0x21f550fc,
-	0x64b60c75,
-	0xb0d0fc04,
-	0x1bf500d6,
-	0x57f000b3,
-	0x0076bb00,
+	0x64b60bbd,
+/* 0x0c5d: i2c_addr_done */
+/* 0x0c5f: i2c_acquire_addr */
+	0xc700f804,
+	0xe4b6f8ce,
+	0x24e0b702,
+	0x00ee980d,
+/* 0x0c6e: i2c_acquire */
+	0x21f500f8,
+	0x21f40c5f,
+	0x03d9f004,
+	0xf84021f4,
+/* 0x0c7d: i2c_release */
+	0x5f21f500,
+	0x0421f40c,
+	0xf403daf0,
+	0x00f84021,
+/* 0x0c8c: i2c_recv */
+	0xc70132f4,
+	0x14b6f8c1,
+	0x2816b002,
+	0x013a1ff5,
+	0x0cfc13a0,
+	0xa0003298,
+	0x980cd413,
+	0x31f40031,
+	0xf9d0f902,
+	0xf1d0f9e0,
+	0xf1000067,
+	0x92100063,
+	0x76bb0167,
+	0x0465b600,
+	0x659450f9,
+	0x0256bb04,
+	0x75fd50bd,
+	0xf550fc04,
+	0xb60c6e21,
+	0xd0fc0464,
+	0xf500d6b0,
+	0xf000b31b,
+	0x76bb0057,
+	0x0465b600,
+	0x659450f9,
+	0x0256bb04,
+	0x75fd50bd,
+	0xf550fc04,
+	0xb60c1821,
+	0x11f50464,
+	0xc5c700d0,
+	0x0076bbe0,
 	0xf90465b6,
 	0x04659450,
 	0xbd0256bb,
 	0x0475fd50,
 	0x21f550fc,
-	0x64b60c1f,
-	0xd011f504,
-	0xe0c5c700,
+	0x64b60bbd,
+	0xad11f504,
+	0x0157f000,
 	0xb60076bb,
 	0x50f90465,
 	0xbb046594,
 	0x50bd0256,
 	0xfc0475fd,
-	0xc421f550,
+	0x1821f550,
+	0x0464b60c,
+	0x008a11f5,
+	0xb60076bb,
+	0x50f90465,
+	0xbb046594,
+	0x50bd0256,
+	0xfc0475fd,
+	0x6b21f550,
 	0x0464b60b,
-	0x00ad11f5,
-	0xbb0157f0,
-	0x65b60076,
-	0x9450f904,
-	0x56bb0465,
-	0xfd50bd02,
-	0x50fc0475,
-	0x0c1f21f5,
-	0xf50464b6,
-	0xbb008a11,
-	0x65b60076,
-	0x9450f904,
-	0x56bb0465,
-	0xfd50bd02,
-	0x50fc0475,
-	0x0b7221f5,
-	0xf40464b6,
-	0x5bcb6a11,
-	0x0076bbe0,
-	0xf90465b6,
-	0x04659450,
-	0xbd0256bb,
-	0x0475fd50,
-	0x21f550fc,
-	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,
-	0xd407f101,
-	0x0604b605,
-	0xbd0001d0,
-/* 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,
+	0xcb6a11f4,
+	0x76bbe05b,
+	0x0465b600,
+	0x659450f9,
+	0x0256bb04,
+	0x75fd50bd,
+	0xf550fc04,
+	0xb60ab021,
+	0x5bb90464,
+	0xf474bd02,
+/* 0x0d92: i2c_recv_not_rd08 */
+	0xd6b0430e,
+	0x3d1bf401,
+	0xf50057f0,
+	0xf40c1821,
+	0xc5c73311,
+	0xbd21f5e0,
+	0x2911f40b,
+	0xf50057f0,
+	0xf40c1821,
+	0xb5c71f11,
+	0xbd21f5e0,
+	0x1511f40b,
+	0x0ab021f5,
+	0xc5c774bd,
+	0x091bf408,
+	0xf40232f4,
+/* 0x0dd2: i2c_recv_not_wr08 */
+/* 0x0dd2: i2c_recv_done */
+	0xcec7030e,
+	0x7d21f5f8,
+	0xfce0fc0c,
+	0x0a12f4d0,
+	0xf5027cb9,
+/* 0x0de7: i2c_recv_exit */
+	0xf8033621,
+/* 0x0de9: i2c_init */
+/* 0x0deb: test_recv */
+	0xf100f800,
+	0xb605d817,
+	0x11cf0614,
+	0x0110b600,
+	0x05d807f1,
+	0xd00604b6,
+	0x04bd0001,
+	0xd900e7f1,
+	0x134fe3f1,
+	0x025621f5,
+/* 0x0e12: test_init */
+	0xe7f100f8,
+	0x21f50800,
+	0x00f80256,
+/* 0x0e1c: idle_recv */
+/* 0x0e1e: idle */
+	0x31f400f8,
+	0xd417f100,
+	0x0614b605,
+	0xb60011cf,
+	0x07f10110,
+	0x04b605d4,
+	0x0001d006,
+/* 0x0e3a: idle_loop */
+	0x17f004bd,
+	0x0232f458,
+/* 0x0e40: idle_proc */
+/* 0x0e40: idle_proc_exec */
+	0x1eb910f9,
+	0x3f21f502,
+	0xf410fc03,
+	0x31f40911,
+	0xef0ef402,
+/* 0x0e54: idle_proc_next */
+	0xb85810b6,
+	0x1bf4061f,
+	0xdd02f4e6,
+	0xf40028f4,
+	0x0000bb0e,
+	0x00000000,
+	0x00000000,
 	0x00000000,
 	0x00000000,
 	0x00000000,
diff --git a/drm/nouveau/nvkm/subdev/pmu/fuc/memx.fuc b/drm/nouveau/nvkm/subdev/pmu/fuc/memx.fuc
index ec03f9a4..1663bf94 100644
--- a/drm/nouveau/nvkm/subdev/pmu/fuc/memx.fuc
+++ b/drm/nouveau/nvkm/subdev/pmu/fuc/memx.fuc
@@ -82,15 +82,15 @@ memx_train_tail:
 // $r0  - zero
 memx_func_enter:
 #if NVKM_PPWR_CHIPSET == GT215
-	movw $r8 0x1610
+	mov $r8 0x1610
 	nv_rd32($r7, $r8)
 	imm32($r6, 0xfffffffc)
 	and $r7 $r6
-	movw $r6 0x2
+	mov $r6 0x2
 	or $r7 $r6
 	nv_wr32($r8, $r7)
 #else
-	movw $r6 0x001620
+	mov $r6 0x001620
 	imm32($r7, ~0x00000aa2);
 	nv_rd32($r8, $r6)
 	and $r8 $r7
@@ -101,7 +101,7 @@ memx_func_enter:
 	and $r8 $r7
 	nv_wr32($r6, $r8)
 
-	movw $r6 0x0026f0
+	mov $r6 0x0026f0
 	nv_rd32($r8, $r6)
 	and $r8 $r7
 	nv_wr32($r6, $r8)
@@ -136,19 +136,19 @@ memx_func_leave:
 		bra nz #memx_func_leave_wait
 
 #if NVKM_PPWR_CHIPSET == GT215
-	movw $r8 0x1610
+	mov $r8 0x1610
 	nv_rd32($r7, $r8)
 	imm32($r6, 0xffffffcc)
 	and $r7 $r6
 	nv_wr32($r8, $r7)
 #else
-	movw $r6 0x0026f0
+	mov $r6 0x0026f0
 	imm32($r7, 0x00000001)
 	nv_rd32($r8, $r6)
 	or $r8 $r7
 	nv_wr32($r6, $r8)
 
-	movw $r6 0x001620
+	mov $r6 0x001620
 	nv_rd32($r8, $r6)
 	or $r8 $r7
 	nv_wr32($r6, $r8)
@@ -177,11 +177,11 @@ memx_func_wait_vblank:
 	bra #memx_func_wait_vblank_fini
 
 	memx_func_wait_vblank_head1:
-	movw $r7 0x20
+	mov $r7 0x20
 	bra #memx_func_wait_vblank_0
 
 	memx_func_wait_vblank_head0:
-	movw $r7 0x8
+	mov $r7 0x8
 
 	memx_func_wait_vblank_0:
 		nv_iord($r6, NV_PPWR_INPUT)
@@ -273,13 +273,13 @@ memx_func_train:
 // $r5 - outer loop counter
 // $r6 - inner loop counter
 // $r7 - entry counter (#memx_train_head + $r7)
-	movw $r5 0x3
-	movw $r7 0x0
+	mov $r5 0x3
+	mov $r7 0x0
 
 // Read random memory to wake up... things
 	imm32($r9, 0x700000)
 	nv_rd32($r8,$r9)
-	movw $r14 0x2710
+	mov $r14 0x2710
 	call(nsec)
 
 	memx_func_train_loop_outer:
@@ -289,9 +289,9 @@ memx_func_train:
 		nv_wr32($r9, $r8)
 		push $r5
 
-		movw $r6 0x0
+		mov $r6 0x0
 		memx_func_train_loop_inner:
-			movw $r8 0x1111
+			mov $r8 0x1111
 			mulu $r9 $r6 $r8
 			shl b32 $r8 $r9 0x10
 			or $r8 $r9
@@ -315,7 +315,7 @@ memx_func_train:
 
 			// $r5 - inner inner loop counter
 			// $r9 - result
-			movw $r5 0
+			mov $r5 0
 			imm32($r9, 0x8300ffff)
 			memx_func_train_loop_4x:
 				imm32($r10, 0x100080)
-- 
2.14.2



More information about the Nouveau mailing list