lkml.org 
[lkml]   [2018]   [May]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 077/329] drm/nouveau/pmu/fuc: dont use movw directly anymore
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Karol Herbst <kherbst@redhat.com>

    [ Upstream commit fe9748b7b41cee11f8db57fb8b20bc540a33102a ]

    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!
    v3: messed up rebasing, now it should apply

    Signed-off-by: Karol Herbst <kherbst@redhat.com>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h | 746 +++++------
    drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h | 802 +++++------
    drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h | 1006 +++++++--------
    drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/memx.fuc | 30
    4 files changed, 1292 insertions(+), 1292 deletions(-)

    --- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h
    +++ b/drivers/gpu/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,
    - 0x0000075a,
    0x00000758,
    + 0x00000756,
    0x00000000,
    0x00000000,
    0x00000000,
    @@ -90,8 +90,8 @@ uint32_t gf100_pmu_data[] = {
    0x00000000,
    0x00000000,
    0x5f433249,
    - 0x00000b8a,
    - 0x00000a2d,
    + 0x00000b88,
    + 0x00000a2b,
    0x00000000,
    0x00000000,
    0x00000000,
    @@ -112,8 +112,8 @@ uint32_t gf100_pmu_data[] = {
    0x00000000,
    0x00000000,
    0x54534554,
    - 0x00000bb3,
    - 0x00000b8c,
    + 0x00000bb1,
    + 0x00000b8a,
    0x00000000,
    0x00000000,
    0x00000000,
    @@ -134,8 +134,8 @@ uint32_t gf100_pmu_data[] = {
    0x00000000,
    0x00000000,
    0x454c4449,
    - 0x00000bbf,
    0x00000bbd,
    + 0x00000bbb,
    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,
    @@ -1372,432 +1372,432 @@ 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 */
    -/* 0x075a: perf_init */
    + 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 */
    0x00f800f8,
    -/* 0x075c: i2c_drive_scl */
    - 0xf40036b0,
    - 0x07f1110b,
    - 0x04b607e0,
    - 0x0001d006,
    - 0x00f804bd,
    -/* 0x0770: i2c_drive_scl_lo */
    - 0x07e407f1,
    - 0xd00604b6,
    - 0x04bd0001,
    -/* 0x077e: i2c_drive_sda */
    +/* 0x0758: perf_init */
    +/* 0x075a: i2c_drive_scl */
    0x36b000f8,
    0x110bf400,
    0x07e007f1,
    0xd00604b6,
    - 0x04bd0002,
    -/* 0x0792: i2c_drive_sda_lo */
    + 0x04bd0001,
    +/* 0x076e: i2c_drive_scl_lo */
    0x07f100f8,
    0x04b607e4,
    + 0x0001d006,
    + 0x00f804bd,
    +/* 0x077c: i2c_drive_sda */
    + 0xf40036b0,
    + 0x07f1110b,
    + 0x04b607e0,
    0x0002d006,
    0x00f804bd,
    -/* 0x07a0: i2c_sense_scl */
    - 0xf10132f4,
    - 0xb607c437,
    - 0x33cf0634,
    - 0x0431fd00,
    - 0xf4060bf4,
    -/* 0x07b6: i2c_sense_scl_done */
    - 0x00f80131,
    -/* 0x07b8: i2c_sense_sda */
    - 0xf10132f4,
    - 0xb607c437,
    - 0x33cf0634,
    - 0x0432fd00,
    - 0xf4060bf4,
    -/* 0x07ce: i2c_sense_sda_done */
    - 0x00f80131,
    -/* 0x07d0: i2c_raise_scl */
    - 0x47f140f9,
    - 0x37f00898,
    - 0x5c21f501,
    -/* 0x07dd: i2c_raise_scl_wait */
    - 0xe8e7f107,
    - 0x7e21f403,
    - 0x07a021f5,
    - 0xb60901f4,
    - 0x1bf40142,
    -/* 0x07f1: i2c_raise_scl_done */
    - 0xf840fcef,
    -/* 0x07f5: i2c_start */
    - 0xa021f500,
    - 0x0d11f407,
    - 0x07b821f5,
    - 0xf40611f4,
    -/* 0x0806: i2c_start_rep */
    - 0x37f0300e,
    - 0x5c21f500,
    - 0x0137f007,
    - 0x077e21f5,
    - 0xb60076bb,
    - 0x50f90465,
    - 0xbb046594,
    - 0x50bd0256,
    - 0xfc0475fd,
    - 0xd021f550,
    - 0x0464b607,
    -/* 0x0833: i2c_start_send */
    - 0xf01f11f4,
    +/* 0x0790: i2c_drive_sda_lo */
    + 0x07e407f1,
    + 0xd00604b6,
    + 0x04bd0002,
    +/* 0x079e: i2c_sense_scl */
    + 0x32f400f8,
    + 0xc437f101,
    + 0x0634b607,
    + 0xfd0033cf,
    + 0x0bf40431,
    + 0x0131f406,
    +/* 0x07b4: i2c_sense_scl_done */
    +/* 0x07b6: i2c_sense_sda */
    + 0x32f400f8,
    + 0xc437f101,
    + 0x0634b607,
    + 0xfd0033cf,
    + 0x0bf40432,
    + 0x0131f406,
    +/* 0x07cc: i2c_sense_sda_done */
    +/* 0x07ce: i2c_raise_scl */
    + 0x40f900f8,
    + 0x089847f1,
    + 0xf50137f0,
    +/* 0x07db: i2c_raise_scl_wait */
    + 0xf1075a21,
    + 0xf403e8e7,
    + 0x21f57e21,
    + 0x01f4079e,
    + 0x0142b609,
    +/* 0x07ef: i2c_raise_scl_done */
    + 0xfcef1bf4,
    +/* 0x07f3: i2c_start */
    + 0xf500f840,
    + 0xf4079e21,
    + 0x21f50d11,
    + 0x11f407b6,
    + 0x300ef406,
    +/* 0x0804: i2c_start_rep */
    + 0xf50037f0,
    + 0xf0075a21,
    + 0x21f50137,
    + 0x76bb077c,
    + 0x0465b600,
    + 0x659450f9,
    + 0x0256bb04,
    + 0x75fd50bd,
    + 0xf550fc04,
    + 0xb607ce21,
    + 0x11f40464,
    +/* 0x0831: i2c_start_send */
    + 0x0037f01f,
    + 0x077c21f5,
    + 0x1388e7f1,
    + 0xf07e21f4,
    0x21f50037,
    - 0xe7f1077e,
    + 0xe7f1075a,
    0x21f41388,
    - 0x0037f07e,
    - 0x075c21f5,
    - 0x1388e7f1,
    -/* 0x084f: i2c_start_out */
    - 0xf87e21f4,
    -/* 0x0851: i2c_stop */
    - 0x0037f000,
    - 0x075c21f5,
    - 0xf50037f0,
    - 0xf1077e21,
    - 0xf403e8e7,
    - 0x37f07e21,
    - 0x5c21f501,
    - 0x88e7f107,
    - 0x7e21f413,
    +/* 0x084d: i2c_start_out */
    +/* 0x084f: i2c_stop */
    + 0xf000f87e,
    + 0x21f50037,
    + 0x37f0075a,
    + 0x7c21f500,
    + 0xe8e7f107,
    + 0x7e21f403,
    0xf50137f0,
    - 0xf1077e21,
    + 0xf1075a21,
    0xf41388e7,
    - 0x00f87e21,
    -/* 0x0884: i2c_bitw */
    - 0x077e21f5,
    - 0x03e8e7f1,
    - 0xbb7e21f4,
    - 0x65b60076,
    - 0x9450f904,
    - 0x56bb0465,
    - 0xfd50bd02,
    - 0x50fc0475,
    - 0x07d021f5,
    - 0xf40464b6,
    - 0xe7f11811,
    - 0x21f41388,
    - 0x0037f07e,
    - 0x075c21f5,
    - 0x1388e7f1,
    -/* 0x08c3: i2c_bitw_out */
    - 0xf87e21f4,
    -/* 0x08c5: i2c_bitr */
    - 0x0137f000,
    - 0x077e21f5,
    - 0x03e8e7f1,
    - 0xbb7e21f4,
    - 0x65b60076,
    - 0x9450f904,
    - 0x56bb0465,
    - 0xfd50bd02,
    - 0x50fc0475,
    - 0x07d021f5,
    - 0xf40464b6,
    - 0x21f51b11,
    - 0x37f007b8,
    - 0x5c21f500,
    + 0x37f07e21,
    + 0x7c21f501,
    0x88e7f107,
    0x7e21f413,
    - 0xf4013cf0,
    -/* 0x090a: i2c_bitr_done */
    - 0x00f80131,
    -/* 0x090c: i2c_get_byte */
    - 0xf00057f0,
    -/* 0x0912: i2c_get_byte_next */
    - 0x54b60847,
    - 0x0076bb01,
    +/* 0x0882: i2c_bitw */
    + 0x21f500f8,
    + 0xe7f1077c,
    + 0x21f403e8,
    + 0x0076bb7e,
    0xf90465b6,
    0x04659450,
    0xbd0256bb,
    0x0475fd50,
    0x21f550fc,
    - 0x64b608c5,
    - 0x2b11f404,
    - 0xb60553fd,
    - 0x1bf40142,
    - 0x0137f0d8,
    - 0xb60076bb,
    - 0x50f90465,
    - 0xbb046594,
    - 0x50bd0256,
    - 0xfc0475fd,
    - 0x8421f550,
    - 0x0464b608,
    -/* 0x095c: i2c_get_byte_done */
    -/* 0x095e: i2c_put_byte */
    - 0x47f000f8,
    -/* 0x0961: i2c_put_byte_next */
    - 0x0142b608,
    - 0xbb3854ff,
    + 0x64b607ce,
    + 0x1811f404,
    + 0x1388e7f1,
    + 0xf07e21f4,
    + 0x21f50037,
    + 0xe7f1075a,
    + 0x21f41388,
    +/* 0x08c1: i2c_bitw_out */
    +/* 0x08c3: i2c_bitr */
    + 0xf000f87e,
    + 0x21f50137,
    + 0xe7f1077c,
    + 0x21f403e8,
    + 0x0076bb7e,
    + 0xf90465b6,
    + 0x04659450,
    + 0xbd0256bb,
    + 0x0475fd50,
    + 0x21f550fc,
    + 0x64b607ce,
    + 0x1b11f404,
    + 0x07b621f5,
    + 0xf50037f0,
    + 0xf1075a21,
    + 0xf41388e7,
    + 0x3cf07e21,
    + 0x0131f401,
    +/* 0x0908: i2c_bitr_done */
    +/* 0x090a: i2c_get_byte */
    + 0x57f000f8,
    + 0x0847f000,
    +/* 0x0910: i2c_get_byte_next */
    + 0xbb0154b6,
    0x65b60076,
    0x9450f904,
    0x56bb0465,
    0xfd50bd02,
    0x50fc0475,
    - 0x088421f5,
    + 0x08c321f5,
    0xf40464b6,
    - 0x46b03411,
    - 0xd81bf400,
    - 0xb60076bb,
    - 0x50f90465,
    - 0xbb046594,
    - 0x50bd0256,
    - 0xfc0475fd,
    - 0xc521f550,
    - 0x0464b608,
    - 0xbb0f11f4,
    - 0x36b00076,
    - 0x061bf401,
    -/* 0x09b7: i2c_put_byte_done */
    - 0xf80132f4,
    -/* 0x09b9: i2c_addr */
    - 0x0076bb00,
    + 0x53fd2b11,
    + 0x0142b605,
    + 0xf0d81bf4,
    + 0x76bb0137,
    + 0x0465b600,
    + 0x659450f9,
    + 0x0256bb04,
    + 0x75fd50bd,
    + 0xf550fc04,
    + 0xb6088221,
    +/* 0x095a: i2c_get_byte_done */
    + 0x00f80464,
    +/* 0x095c: i2c_put_byte */
    +/* 0x095f: i2c_put_byte_next */
    + 0xb60847f0,
    + 0x54ff0142,
    + 0x0076bb38,
    0xf90465b6,
    0x04659450,
    0xbd0256bb,
    0x0475fd50,
    0x21f550fc,
    - 0x64b607f5,
    - 0x2911f404,
    - 0x012ec3e7,
    - 0xfd0134b6,
    - 0x76bb0553,
    + 0x64b60882,
    + 0x3411f404,
    + 0xf40046b0,
    + 0x76bbd81b,
    0x0465b600,
    0x659450f9,
    0x0256bb04,
    0x75fd50bd,
    0xf550fc04,
    - 0xb6095e21,
    -/* 0x09fe: i2c_addr_done */
    - 0x00f80464,
    -/* 0x0a00: i2c_acquire_addr */
    - 0xb6f8cec7,
    - 0xe0b702e4,
    - 0xee980d1c,
    -/* 0x0a0f: i2c_acquire */
    - 0xf500f800,
    - 0xf40a0021,
    - 0xd9f00421,
    - 0x4021f403,
    -/* 0x0a1e: i2c_release */
    - 0x21f500f8,
    - 0x21f40a00,
    - 0x03daf004,
    - 0xf84021f4,
    -/* 0x0a2d: i2c_recv */
    - 0x0132f400,
    - 0xb6f8c1c7,
    - 0x16b00214,
    - 0x3a1ff528,
    - 0xf413a001,
    - 0x0032980c,
    - 0x0ccc13a0,
    - 0xf4003198,
    - 0xd0f90231,
    - 0xd0f9e0f9,
    - 0x000067f1,
    - 0x100063f1,
    - 0xbb016792,
    + 0xb608c321,
    + 0x11f40464,
    + 0x0076bb0f,
    + 0xf40136b0,
    + 0x32f4061b,
    +/* 0x09b5: i2c_put_byte_done */
    +/* 0x09b7: i2c_addr */
    + 0xbb00f801,
    0x65b60076,
    0x9450f904,
    0x56bb0465,
    0xfd50bd02,
    0x50fc0475,
    - 0x0a0f21f5,
    - 0xfc0464b6,
    - 0x00d6b0d0,
    - 0x00b31bf5,
    - 0xbb0057f0,
    - 0x65b60076,
    - 0x9450f904,
    - 0x56bb0465,
    - 0xfd50bd02,
    - 0x50fc0475,
    - 0x09b921f5,
    - 0xf50464b6,
    - 0xc700d011,
    - 0x76bbe0c5,
    - 0x0465b600,
    - 0x659450f9,
    - 0x0256bb04,
    - 0x75fd50bd,
    - 0xf550fc04,
    - 0xb6095e21,
    - 0x11f50464,
    - 0x57f000ad,
    + 0x07f321f5,
    + 0xf40464b6,
    + 0xc3e72911,
    + 0x34b6012e,
    + 0x0553fd01,
    + 0xb60076bb,
    + 0x50f90465,
    + 0xbb046594,
    + 0x50bd0256,
    + 0xfc0475fd,
    + 0x5c21f550,
    + 0x0464b609,
    +/* 0x09fc: i2c_addr_done */
    +/* 0x09fe: i2c_acquire_addr */
    + 0xcec700f8,
    + 0x02e4b6f8,
    + 0x0d1ce0b7,
    + 0xf800ee98,
    +/* 0x0a0d: i2c_acquire */
    + 0xfe21f500,
    + 0x0421f409,
    + 0xf403d9f0,
    + 0x00f84021,
    +/* 0x0a1c: i2c_release */
    + 0x09fe21f5,
    + 0xf00421f4,
    + 0x21f403da,
    +/* 0x0a2b: i2c_recv */
    + 0xf400f840,
    + 0xc1c70132,
    + 0x0214b6f8,
    + 0xf52816b0,
    + 0xa0013a1f,
    + 0x980cf413,
    + 0x13a00032,
    + 0x31980ccc,
    + 0x0231f400,
    + 0xe0f9d0f9,
    + 0x67f1d0f9,
    + 0x63f10000,
    + 0x67921000,
    0x0076bb01,
    0xf90465b6,
    0x04659450,
    0xbd0256bb,
    0x0475fd50,
    0x21f550fc,
    - 0x64b609b9,
    - 0x8a11f504,
    + 0x64b60a0d,
    + 0xb0d0fc04,
    + 0x1bf500d6,
    + 0x57f000b3,
    0x0076bb00,
    0xf90465b6,
    0x04659450,
    0xbd0256bb,
    0x0475fd50,
    0x21f550fc,
    - 0x64b6090c,
    - 0x6a11f404,
    - 0xbbe05bcb,
    + 0x64b609b7,
    + 0xd011f504,
    + 0xe0c5c700,
    + 0xb60076bb,
    + 0x50f90465,
    + 0xbb046594,
    + 0x50bd0256,
    + 0xfc0475fd,
    + 0x5c21f550,
    + 0x0464b609,
    + 0x00ad11f5,
    + 0xbb0157f0,
    0x65b60076,
    0x9450f904,
    0x56bb0465,
    0xfd50bd02,
    0x50fc0475,
    - 0x085121f5,
    - 0xb90464b6,
    - 0x74bd025b,
    -/* 0x0b33: i2c_recv_not_rd08 */
    - 0xb0430ef4,
    - 0x1bf401d6,
    - 0x0057f03d,
    - 0x09b921f5,
    - 0xc73311f4,
    - 0x21f5e0c5,
    - 0x11f4095e,
    - 0x0057f029,
    - 0x09b921f5,
    - 0xc71f11f4,
    - 0x21f5e0b5,
    - 0x11f4095e,
    - 0x5121f515,
    - 0xc774bd08,
    - 0x1bf408c5,
    - 0x0232f409,
    -/* 0x0b73: i2c_recv_not_wr08 */
    -/* 0x0b73: i2c_recv_done */
    - 0xc7030ef4,
    - 0x21f5f8ce,
    - 0xe0fc0a1e,
    - 0x12f4d0fc,
    - 0x027cb90a,
    - 0x033621f5,
    -/* 0x0b88: i2c_recv_exit */
    -/* 0x0b8a: i2c_init */
    - 0x00f800f8,
    -/* 0x0b8c: test_recv */
    - 0x05d817f1,
    + 0x09b721f5,
    + 0xf50464b6,
    + 0xbb008a11,
    + 0x65b60076,
    + 0x9450f904,
    + 0x56bb0465,
    + 0xfd50bd02,
    + 0x50fc0475,
    + 0x090a21f5,
    + 0xf40464b6,
    + 0x5bcb6a11,
    + 0x0076bbe0,
    + 0xf90465b6,
    + 0x04659450,
    + 0xbd0256bb,
    + 0x0475fd50,
    + 0x21f550fc,
    + 0x64b6084f,
    + 0x025bb904,
    + 0x0ef474bd,
    +/* 0x0b31: i2c_recv_not_rd08 */
    + 0x01d6b043,
    + 0xf03d1bf4,
    + 0x21f50057,
    + 0x11f409b7,
    + 0xe0c5c733,
    + 0x095c21f5,
    + 0xf02911f4,
    + 0x21f50057,
    + 0x11f409b7,
    + 0xe0b5c71f,
    + 0x095c21f5,
    + 0xf51511f4,
    + 0xbd084f21,
    + 0x08c5c774,
    + 0xf4091bf4,
    + 0x0ef40232,
    +/* 0x0b71: i2c_recv_not_wr08 */
    +/* 0x0b71: i2c_recv_done */
    + 0xf8cec703,
    + 0x0a1c21f5,
    + 0xd0fce0fc,
    + 0xb90a12f4,
    + 0x21f5027c,
    +/* 0x0b86: i2c_recv_exit */
    + 0x00f80336,
    +/* 0x0b88: i2c_init */
    +/* 0x0b8a: test_recv */
    + 0x17f100f8,
    + 0x14b605d8,
    + 0x0011cf06,
    + 0xf10110b6,
    + 0xb605d807,
    + 0x01d00604,
    + 0xf104bd00,
    + 0xf1d900e7,
    + 0xf5134fe3,
    + 0xf8025621,
    +/* 0x0bb1: test_init */
    + 0x00e7f100,
    + 0x5621f508,
    +/* 0x0bbb: idle_recv */
    + 0xf800f802,
    +/* 0x0bbd: idle */
    + 0x0031f400,
    + 0x05d417f1,
    0xcf0614b6,
    0x10b60011,
    - 0xd807f101,
    + 0xd407f101,
    0x0604b605,
    0xbd0001d0,
    - 0x00e7f104,
    - 0x4fe3f1d9,
    - 0x5621f513,
    -/* 0x0bb3: test_init */
    - 0xf100f802,
    - 0xf50800e7,
    - 0xf8025621,
    -/* 0x0bbd: idle_recv */
    -/* 0x0bbf: idle */
    - 0xf400f800,
    - 0x17f10031,
    - 0x14b605d4,
    - 0x0011cf06,
    - 0xf10110b6,
    - 0xb605d407,
    - 0x01d00604,
    -/* 0x0bdb: idle_loop */
    - 0xf004bd00,
    - 0x32f45817,
    -/* 0x0be1: idle_proc */
    -/* 0x0be1: idle_proc_exec */
    - 0xb910f902,
    - 0x21f5021e,
    - 0x10fc033f,
    - 0xf40911f4,
    - 0x0ef40231,
    -/* 0x0bf5: idle_proc_next */
    - 0x5810b6ef,
    - 0xf4061fb8,
    - 0x02f4e61b,
    - 0x0028f4dd,
    - 0x00bb0ef4,
    +/* 0x0bd9: idle_loop */
    + 0x5817f004,
    +/* 0x0bdf: idle_proc */
    +/* 0x0bdf: idle_proc_exec */
    + 0xf90232f4,
    + 0x021eb910,
    + 0x033f21f5,
    + 0x11f410fc,
    + 0x0231f409,
    +/* 0x0bf3: idle_proc_next */
    + 0xb6ef0ef4,
    + 0x1fb85810,
    + 0xe61bf406,
    + 0xf4dd02f4,
    + 0x0ef40028,
    + 0x000000bb,
    0x00000000,
    0x00000000,
    0x00000000,
    --- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h
    +++ b/drivers/gpu/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,
    - 0x000005f7,
    - 0x000005f5,
    + 0x000005f2,
    + 0x000005f0,
    0x00000000,
    0x00000000,
    0x00000000,
    @@ -90,8 +90,8 @@ uint32_t gk208_pmu_data[] = {
    0x00000000,
    0x00000000,
    0x5f433249,
    - 0x000009f8,
    - 0x000008a2,
    + 0x000009f3,
    + 0x0000089d,
    0x00000000,
    0x00000000,
    0x00000000,
    @@ -112,8 +112,8 @@ uint32_t gk208_pmu_data[] = {
    0x00000000,
    0x00000000,
    0x54534554,
    - 0x00000a16,
    - 0x000009fa,
    + 0x00000a11,
    + 0x000009f5,
    0x00000000,
    0x00000000,
    0x00000000,
    @@ -134,8 +134,8 @@ uint32_t gk208_pmu_data[] = {
    0x00000000,
    0x00000000,
    0x454c4449,
    - 0x00000a21,
    - 0x00000a1f,
    + 0x00000a1c,
    + 0x00000a1a,
    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,
    @@ -1238,454 +1238,454 @@ 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 */
    -/* 0x05f7: perf_init */
    - 0xf800f800,
    -/* 0x05f9: i2c_drive_scl */
    - 0x0036b000,
    - 0x400d0bf4,
    - 0x01f607e0,
    - 0xf804bd00,
    -/* 0x0609: i2c_drive_scl_lo */
    - 0x07e44000,
    - 0xbd0001f6,
    -/* 0x0613: i2c_drive_sda */
    - 0xb000f804,
    - 0x0bf40036,
    - 0x07e0400d,
    - 0xbd0002f6,
    -/* 0x0623: i2c_drive_sda_lo */
    - 0x4000f804,
    - 0x02f607e4,
    - 0xf804bd00,
    -/* 0x062d: i2c_sense_scl */
    - 0x0132f400,
    - 0xcf07c443,
    - 0x31fd0033,
    - 0x060bf404,
    -/* 0x063f: i2c_sense_scl_done */
    - 0xf80131f4,
    -/* 0x0641: i2c_sense_sda */
    - 0x0132f400,
    - 0xcf07c443,
    - 0x32fd0033,
    - 0x060bf404,
    -/* 0x0653: i2c_sense_sda_done */
    - 0xf80131f4,
    -/* 0x0655: i2c_raise_scl */
    - 0x4440f900,
    - 0x01030898,
    - 0x0005f97e,
    -/* 0x0660: i2c_raise_scl_wait */
    - 0x7e03e84e,
    - 0x7e000058,
    - 0xf400062d,
    - 0x42b60901,
    - 0xef1bf401,
    -/* 0x0674: i2c_raise_scl_done */
    - 0x00f840fc,
    -/* 0x0678: i2c_start */
    - 0x00062d7e,
    - 0x7e0d11f4,
    - 0xf4000641,
    - 0x0ef40611,
    -/* 0x0689: i2c_start_rep */
    - 0x7e00032e,
    - 0x030005f9,
    - 0x06137e01,
    +/* 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 */
    +/* 0x05f2: perf_init */
    + 0x00f800f8,
    +/* 0x05f4: i2c_drive_scl */
    + 0xf40036b0,
    + 0xe0400d0b,
    + 0x0001f607,
    + 0x00f804bd,
    +/* 0x0604: i2c_drive_scl_lo */
    + 0xf607e440,
    + 0x04bd0001,
    +/* 0x060e: i2c_drive_sda */
    + 0x36b000f8,
    + 0x0d0bf400,
    + 0xf607e040,
    + 0x04bd0002,
    +/* 0x061e: i2c_drive_sda_lo */
    + 0xe44000f8,
    + 0x0002f607,
    + 0x00f804bd,
    +/* 0x0628: i2c_sense_scl */
    + 0x430132f4,
    + 0x33cf07c4,
    + 0x0431fd00,
    + 0xf4060bf4,
    +/* 0x063a: i2c_sense_scl_done */
    + 0x00f80131,
    +/* 0x063c: i2c_sense_sda */
    + 0x430132f4,
    + 0x33cf07c4,
    + 0x0432fd00,
    + 0xf4060bf4,
    +/* 0x064e: i2c_sense_sda_done */
    + 0x00f80131,
    +/* 0x0650: i2c_raise_scl */
    + 0x984440f9,
    + 0x7e010308,
    +/* 0x065b: i2c_raise_scl_wait */
    + 0x4e0005f4,
    + 0x587e03e8,
    + 0x287e0000,
    + 0x01f40006,
    + 0x0142b609,
    +/* 0x066f: i2c_raise_scl_done */
    + 0xfcef1bf4,
    +/* 0x0673: i2c_start */
    + 0x7e00f840,
    + 0xf4000628,
    + 0x3c7e0d11,
    + 0x11f40006,
    + 0x2e0ef406,
    +/* 0x0684: i2c_start_rep */
    + 0xf47e0003,
    + 0x01030005,
    + 0x00060e7e,
    + 0xb60076bb,
    + 0x50f90465,
    + 0xbb046594,
    + 0x50bd0256,
    + 0xfc0475fd,
    + 0x06507e50,
    + 0x0464b600,
    +/* 0x06af: i2c_start_send */
    + 0x031d11f4,
    + 0x060e7e00,
    + 0x13884e00,
    + 0x0000587e,
    + 0xf47e0003,
    + 0x884e0005,
    + 0x00587e13,
    +/* 0x06c9: i2c_start_out */
    +/* 0x06cb: i2c_stop */
    + 0x0300f800,
    + 0x05f47e00,
    + 0x7e000300,
    + 0x4e00060e,
    + 0x587e03e8,
    + 0x01030000,
    + 0x0005f47e,
    + 0x7e13884e,
    + 0x03000058,
    + 0x060e7e01,
    + 0x13884e00,
    + 0x0000587e,
    +/* 0x06fa: i2c_bitw */
    + 0x0e7e00f8,
    + 0xe84e0006,
    + 0x00587e03,
    0x0076bb00,
    0xf90465b6,
    0x04659450,
    0xbd0256bb,
    0x0475fd50,
    - 0x557e50fc,
    + 0x507e50fc,
    0x64b60006,
    - 0x1d11f404,
    -/* 0x06b4: i2c_start_send */
    - 0x137e0003,
    - 0x884e0006,
    - 0x00587e13,
    - 0x7e000300,
    - 0x4e0005f9,
    - 0x587e1388,
    -/* 0x06ce: i2c_start_out */
    - 0x00f80000,
    -/* 0x06d0: i2c_stop */
    - 0xf97e0003,
    - 0x00030005,
    - 0x0006137e,
    - 0x7e03e84e,
    + 0x1711f404,
    + 0x7e13884e,
    0x03000058,
    - 0x05f97e01,
    + 0x05f47e00,
    0x13884e00,
    0x0000587e,
    - 0x137e0103,
    - 0x884e0006,
    - 0x00587e13,
    -/* 0x06ff: i2c_bitw */
    - 0x7e00f800,
    - 0x4e000613,
    - 0x587e03e8,
    - 0x76bb0000,
    +/* 0x0738: i2c_bitw_out */
    +/* 0x073a: i2c_bitr */
    + 0x010300f8,
    + 0x00060e7e,
    + 0x7e03e84e,
    + 0xbb000058,
    + 0x65b60076,
    + 0x9450f904,
    + 0x56bb0465,
    + 0xfd50bd02,
    + 0x50fc0475,
    + 0x0006507e,
    + 0xf40464b6,
    + 0x3c7e1a11,
    + 0x00030006,
    + 0x0005f47e,
    + 0x7e13884e,
    + 0xf0000058,
    + 0x31f4013c,
    +/* 0x077d: i2c_bitr_done */
    +/* 0x077f: i2c_get_byte */
    + 0x0500f801,
    +/* 0x0783: i2c_get_byte_next */
    + 0xb6080400,
    + 0x76bb0154,
    0x0465b600,
    0x659450f9,
    0x0256bb04,
    0x75fd50bd,
    0x7e50fc04,
    - 0xb6000655,
    + 0xb600073a,
    0x11f40464,
    - 0x13884e17,
    - 0x0000587e,
    - 0xf97e0003,
    - 0x884e0005,
    - 0x00587e13,
    -/* 0x073d: i2c_bitw_out */
    -/* 0x073f: i2c_bitr */
    - 0x0300f800,
    - 0x06137e01,
    - 0x03e84e00,
    - 0x0000587e,
    + 0x0553fd2a,
    + 0xf40142b6,
    + 0x0103d81b,
    0xb60076bb,
    0x50f90465,
    0xbb046594,
    0x50bd0256,
    0xfc0475fd,
    - 0x06557e50,
    + 0x06fa7e50,
    0x0464b600,
    - 0x7e1a11f4,
    - 0x03000641,
    - 0x05f97e00,
    - 0x13884e00,
    - 0x0000587e,
    - 0xf4013cf0,
    -/* 0x0782: i2c_bitr_done */
    - 0x00f80131,
    -/* 0x0784: i2c_get_byte */
    - 0x08040005,
    -/* 0x0788: i2c_get_byte_next */
    - 0xbb0154b6,
    - 0x65b60076,
    - 0x9450f904,
    - 0x56bb0465,
    - 0xfd50bd02,
    - 0x50fc0475,
    - 0x00073f7e,
    - 0xf40464b6,
    - 0x53fd2a11,
    - 0x0142b605,
    - 0x03d81bf4,
    - 0x0076bb01,
    - 0xf90465b6,
    - 0x04659450,
    - 0xbd0256bb,
    - 0x0475fd50,
    - 0xff7e50fc,
    - 0x64b60006,
    -/* 0x07d1: i2c_get_byte_done */
    -/* 0x07d3: i2c_put_byte */
    - 0x0400f804,
    -/* 0x07d5: i2c_put_byte_next */
    - 0x0142b608,
    - 0xbb3854ff,
    +/* 0x07cc: i2c_get_byte_done */
    +/* 0x07ce: i2c_put_byte */
    + 0x080400f8,
    +/* 0x07d0: i2c_put_byte_next */
    + 0xff0142b6,
    + 0x76bb3854,
    + 0x0465b600,
    + 0x659450f9,
    + 0x0256bb04,
    + 0x75fd50bd,
    + 0x7e50fc04,
    + 0xb60006fa,
    + 0x11f40464,
    + 0x0046b034,
    + 0xbbd81bf4,
    0x65b60076,
    0x9450f904,
    0x56bb0465,
    0xfd50bd02,
    0x50fc0475,
    - 0x0006ff7e,
    + 0x00073a7e,
    0xf40464b6,
    - 0x46b03411,
    - 0xd81bf400,
    + 0x76bb0f11,
    + 0x0136b000,
    + 0xf4061bf4,
    +/* 0x0826: i2c_put_byte_done */
    + 0x00f80132,
    +/* 0x0828: i2c_addr */
    0xb60076bb,
    0x50f90465,
    0xbb046594,
    0x50bd0256,
    0xfc0475fd,
    - 0x073f7e50,
    + 0x06737e50,
    0x0464b600,
    - 0xbb0f11f4,
    - 0x36b00076,
    - 0x061bf401,
    -/* 0x082b: i2c_put_byte_done */
    - 0xf80132f4,
    -/* 0x082d: i2c_addr */
    - 0x0076bb00,
    + 0xe72911f4,
    + 0xb6012ec3,
    + 0x53fd0134,
    + 0x0076bb05,
    0xf90465b6,
    0x04659450,
    0xbd0256bb,
    0x0475fd50,
    - 0x787e50fc,
    - 0x64b60006,
    - 0x2911f404,
    - 0x012ec3e7,
    - 0xfd0134b6,
    - 0x76bb0553,
    - 0x0465b600,
    - 0x659450f9,
    - 0x0256bb04,
    - 0x75fd50bd,
    - 0x7e50fc04,
    - 0xb60007d3,
    -/* 0x0872: i2c_addr_done */
    - 0x00f80464,
    -/* 0x0874: i2c_acquire_addr */
    - 0xb6f8cec7,
    - 0xe0b705e4,
    - 0x00f8d014,
    -/* 0x0880: i2c_acquire */
    - 0x0008747e,
    + 0xce7e50fc,
    + 0x64b60007,
    +/* 0x086d: i2c_addr_done */
    +/* 0x086f: i2c_acquire_addr */
    + 0xc700f804,
    + 0xe4b6f8ce,
    + 0x14e0b705,
    +/* 0x087b: i2c_acquire */
    + 0x7e00f8d0,
    + 0x7e00086f,
    + 0xf0000004,
    + 0x2d7e03d9,
    + 0x00f80000,
    +/* 0x088c: i2c_release */
    + 0x00086f7e,
    0x0000047e,
    - 0x7e03d9f0,
    + 0x7e03daf0,
    0xf800002d,
    -/* 0x0891: i2c_release */
    - 0x08747e00,
    - 0x00047e00,
    - 0x03daf000,
    - 0x00002d7e,
    -/* 0x08a2: i2c_recv */
    - 0x32f400f8,
    - 0xf8c1c701,
    - 0xb00214b6,
    - 0x1ff52816,
    - 0x13b80134,
    - 0x98000cf4,
    - 0x13b80032,
    - 0x98000ccc,
    - 0x31f40031,
    - 0xf9d0f902,
    - 0xd6d0f9e0,
    - 0x10000000,
    - 0xbb016792,
    - 0x65b60076,
    - 0x9450f904,
    - 0x56bb0465,
    - 0xfd50bd02,
    - 0x50fc0475,
    - 0x0008807e,
    - 0xfc0464b6,
    - 0x00d6b0d0,
    - 0x00b01bf5,
    - 0x76bb0005,
    +/* 0x089d: i2c_recv */
    + 0x0132f400,
    + 0xb6f8c1c7,
    + 0x16b00214,
    + 0x341ff528,
    + 0xf413b801,
    + 0x3298000c,
    + 0xcc13b800,
    + 0x3198000c,
    + 0x0231f400,
    + 0xe0f9d0f9,
    + 0x00d6d0f9,
    + 0x92100000,
    + 0x76bb0167,
    0x0465b600,
    0x659450f9,
    0x0256bb04,
    0x75fd50bd,
    0x7e50fc04,
    - 0xb600082d,
    - 0x11f50464,
    - 0xc5c700cc,
    - 0x0076bbe0,
    - 0xf90465b6,
    - 0x04659450,
    - 0xbd0256bb,
    - 0x0475fd50,
    - 0xd37e50fc,
    - 0x64b60007,
    - 0xa911f504,
    - 0xbb010500,
    - 0x65b60076,
    - 0x9450f904,
    - 0x56bb0465,
    - 0xfd50bd02,
    - 0x50fc0475,
    - 0x00082d7e,
    - 0xf50464b6,
    - 0xbb008711,
    - 0x65b60076,
    - 0x9450f904,
    - 0x56bb0465,
    - 0xfd50bd02,
    - 0x50fc0475,
    - 0x0007847e,
    - 0xf40464b6,
    - 0x5bcb6711,
    - 0x0076bbe0,
    + 0xb600087b,
    + 0xd0fc0464,
    + 0xf500d6b0,
    + 0x0500b01b,
    + 0x0076bb00,
    0xf90465b6,
    0x04659450,
    0xbd0256bb,
    0x0475fd50,
    - 0xd07e50fc,
    - 0x64b60006,
    - 0xbd5bb204,
    - 0x410ef474,
    -/* 0x09a4: i2c_recv_not_rd08 */
    - 0xf401d6b0,
    - 0x00053b1b,
    - 0x00082d7e,
    - 0xc73211f4,
    - 0xd37ee0c5,
    - 0x11f40007,
    - 0x7e000528,
    - 0xf400082d,
    - 0xb5c71f11,
    - 0x07d37ee0,
    - 0x1511f400,
    - 0x0006d07e,
    - 0xc5c774bd,
    - 0x091bf408,
    - 0xf40232f4,
    -/* 0x09e2: i2c_recv_not_wr08 */
    -/* 0x09e2: i2c_recv_done */
    - 0xcec7030e,
    - 0x08917ef8,
    - 0xfce0fc00,
    - 0x0912f4d0,
    - 0x9f7e7cb2,
    -/* 0x09f6: i2c_recv_exit */
    - 0x00f80002,
    -/* 0x09f8: i2c_init */
    -/* 0x09fa: test_recv */
    - 0x584100f8,
    - 0x0011cf04,
    - 0x400110b6,
    - 0x01f60458,
    - 0xde04bd00,
    - 0x134fd900,
    - 0x0001de7e,
    -/* 0x0a16: test_init */
    - 0x004e00f8,
    - 0x01de7e08,
    -/* 0x0a1f: idle_recv */
    + 0x287e50fc,
    + 0x64b60008,
    + 0xcc11f504,
    + 0xe0c5c700,
    + 0xb60076bb,
    + 0x50f90465,
    + 0xbb046594,
    + 0x50bd0256,
    + 0xfc0475fd,
    + 0x07ce7e50,
    + 0x0464b600,
    + 0x00a911f5,
    + 0x76bb0105,
    + 0x0465b600,
    + 0x659450f9,
    + 0x0256bb04,
    + 0x75fd50bd,
    + 0x7e50fc04,
    + 0xb6000828,
    + 0x11f50464,
    + 0x76bb0087,
    + 0x0465b600,
    + 0x659450f9,
    + 0x0256bb04,
    + 0x75fd50bd,
    + 0x7e50fc04,
    + 0xb600077f,
    + 0x11f40464,
    + 0xe05bcb67,
    + 0xb60076bb,
    + 0x50f90465,
    + 0xbb046594,
    + 0x50bd0256,
    + 0xfc0475fd,
    + 0x06cb7e50,
    + 0x0464b600,
    + 0x74bd5bb2,
    +/* 0x099f: i2c_recv_not_rd08 */
    + 0xb0410ef4,
    + 0x1bf401d6,
    + 0x7e00053b,
    + 0xf4000828,
    + 0xc5c73211,
    + 0x07ce7ee0,
    + 0x2811f400,
    + 0x287e0005,
    + 0x11f40008,
    + 0xe0b5c71f,
    + 0x0007ce7e,
    + 0x7e1511f4,
    + 0xbd0006cb,
    + 0x08c5c774,
    + 0xf4091bf4,
    + 0x0ef40232,
    +/* 0x09dd: i2c_recv_not_wr08 */
    +/* 0x09dd: i2c_recv_done */
    + 0xf8cec703,
    + 0x00088c7e,
    + 0xd0fce0fc,
    + 0xb20912f4,
    + 0x029f7e7c,
    +/* 0x09f1: i2c_recv_exit */
    +/* 0x09f3: i2c_init */
    0xf800f800,
    -/* 0x0a21: idle */
    - 0x0031f400,
    - 0xcf045441,
    - 0x10b60011,
    - 0x04544001,
    - 0xbd0001f6,
    -/* 0x0a35: idle_loop */
    - 0xf4580104,
    -/* 0x0a3a: idle_proc */
    -/* 0x0a3a: idle_proc_exec */
    - 0x10f90232,
    - 0xa87e1eb2,
    - 0x10fc0002,
    - 0xf40911f4,
    - 0x0ef40231,
    -/* 0x0a4d: idle_proc_next */
    - 0x5810b6f0,
    - 0x1bf41fa6,
    - 0xe002f4e8,
    - 0xf40028f4,
    - 0x0000c60e,
    +/* 0x09f5: test_recv */
    + 0x04584100,
    + 0xb60011cf,
    + 0x58400110,
    + 0x0001f604,
    + 0x00de04bd,
    + 0x7e134fd9,
    + 0xf80001de,
    +/* 0x0a11: test_init */
    + 0x08004e00,
    + 0x0001de7e,
    +/* 0x0a1a: idle_recv */
    + 0x00f800f8,
    +/* 0x0a1c: idle */
    + 0x410031f4,
    + 0x11cf0454,
    + 0x0110b600,
    + 0xf6045440,
    + 0x04bd0001,
    +/* 0x0a30: idle_loop */
    + 0x32f45801,
    +/* 0x0a35: idle_proc */
    +/* 0x0a35: idle_proc_exec */
    + 0xb210f902,
    + 0x02a87e1e,
    + 0xf410fc00,
    + 0x31f40911,
    + 0xf00ef402,
    +/* 0x0a48: idle_proc_next */
    + 0xa65810b6,
    + 0xe81bf41f,
    + 0xf4e002f4,
    + 0x0ef40028,
    + 0x000000c6,
    + 0x00000000,
    0x00000000,
    0x00000000,
    0x00000000,
    --- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h
    +++ b/drivers/gpu/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,
    - 0x0000083e,
    - 0x0000083c,
    + 0x00000837,
    + 0x00000835,
    0x00000000,
    0x00000000,
    0x00000000,
    @@ -90,8 +90,8 @@ uint32_t gt215_pmu_data[] = {
    0x00000000,
    0x00000000,
    0x5f433249,
    - 0x00000c6e,
    - 0x00000b11,
    + 0x00000c67,
    + 0x00000b0a,
    0x00000000,
    0x00000000,
    0x00000000,
    @@ -112,8 +112,8 @@ uint32_t gt215_pmu_data[] = {
    0x00000000,
    0x00000000,
    0x54534554,
    - 0x00000c97,
    - 0x00000c70,
    + 0x00000c90,
    + 0x00000c69,
    0x00000000,
    0x00000000,
    0x00000000,
    @@ -134,8 +134,8 @@ uint32_t gt215_pmu_data[] = {
    0x00000000,
    0x00000000,
    0x454c4449,
    - 0x00000ca3,
    - 0x00000ca1,
    + 0x00000c9c,
    + 0x00000c9a,
    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,
    @@ -1304,560 +1304,560 @@ 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 */
    -/* 0x083e: perf_init */
    - 0x00f800f8,
    -/* 0x0840: i2c_drive_scl */
    - 0xf40036b0,
    - 0x07f1110b,
    - 0x04b607e0,
    - 0x0001d006,
    - 0x00f804bd,
    -/* 0x0854: i2c_drive_scl_lo */
    - 0x07e407f1,
    - 0xd00604b6,
    - 0x04bd0001,
    -/* 0x0862: i2c_drive_sda */
    - 0x36b000f8,
    - 0x110bf400,
    - 0x07e007f1,
    - 0xd00604b6,
    - 0x04bd0002,
    -/* 0x0876: i2c_drive_sda_lo */
    - 0x07f100f8,
    - 0x04b607e4,
    - 0x0002d006,
    - 0x00f804bd,
    -/* 0x0884: i2c_sense_scl */
    - 0xf10132f4,
    - 0xb607c437,
    - 0x33cf0634,
    - 0x0431fd00,
    - 0xf4060bf4,
    -/* 0x089a: i2c_sense_scl_done */
    - 0x00f80131,
    -/* 0x089c: i2c_sense_sda */
    - 0xf10132f4,
    - 0xb607c437,
    - 0x33cf0634,
    - 0x0432fd00,
    - 0xf4060bf4,
    -/* 0x08b2: i2c_sense_sda_done */
    - 0x00f80131,
    -/* 0x08b4: i2c_raise_scl */
    - 0x47f140f9,
    - 0x37f00898,
    - 0x4021f501,
    -/* 0x08c1: i2c_raise_scl_wait */
    +/* 0x0825: memx_recv */
    + 0x01d6b000,
    + 0xb0980bf4,
    + 0x0bf400d6,
    +/* 0x0833: memx_init */
    + 0xf800f8d8,
    +/* 0x0835: perf_recv */
    +/* 0x0837: perf_init */
    + 0xf800f800,
    +/* 0x0839: i2c_drive_scl */
    + 0x0036b000,
    + 0xf1110bf4,
    + 0xb607e007,
    + 0x01d00604,
    + 0xf804bd00,
    +/* 0x084d: i2c_drive_scl_lo */
    + 0xe407f100,
    + 0x0604b607,
    + 0xbd0001d0,
    +/* 0x085b: i2c_drive_sda */
    + 0xb000f804,
    + 0x0bf40036,
    + 0xe007f111,
    + 0x0604b607,
    + 0xbd0002d0,
    +/* 0x086f: i2c_drive_sda_lo */
    + 0xf100f804,
    + 0xb607e407,
    + 0x02d00604,
    + 0xf804bd00,
    +/* 0x087d: i2c_sense_scl */
    + 0x0132f400,
    + 0x07c437f1,
    + 0xcf0634b6,
    + 0x31fd0033,
    + 0x060bf404,
    +/* 0x0893: i2c_sense_scl_done */
    + 0xf80131f4,
    +/* 0x0895: i2c_sense_sda */
    + 0x0132f400,
    + 0x07c437f1,
    + 0xcf0634b6,
    + 0x32fd0033,
    + 0x060bf404,
    +/* 0x08ab: i2c_sense_sda_done */
    + 0xf80131f4,
    +/* 0x08ad: i2c_raise_scl */
    + 0xf140f900,
    + 0xf0089847,
    + 0x21f50137,
    +/* 0x08ba: i2c_raise_scl_wait */
    + 0xe7f10839,
    + 0x21f403e8,
    + 0x7d21f57e,
    + 0x0901f408,
    + 0xf40142b6,
    +/* 0x08ce: i2c_raise_scl_done */
    + 0x40fcef1b,
    +/* 0x08d2: i2c_start */
    + 0x21f500f8,
    + 0x11f4087d,
    + 0x9521f50d,
    + 0x0611f408,
    +/* 0x08e3: i2c_start_rep */
    + 0xf0300ef4,
    + 0x21f50037,
    + 0x37f00839,
    + 0x5b21f501,
    + 0x0076bb08,
    + 0xf90465b6,
    + 0x04659450,
    + 0xbd0256bb,
    + 0x0475fd50,
    + 0x21f550fc,
    + 0x64b608ad,
    + 0x1f11f404,
    +/* 0x0910: i2c_start_send */
    + 0xf50037f0,
    + 0xf1085b21,
    + 0xf41388e7,
    + 0x37f07e21,
    + 0x3921f500,
    + 0x88e7f108,
    + 0x7e21f413,
    +/* 0x092c: i2c_start_out */
    +/* 0x092e: i2c_stop */
    + 0x37f000f8,
    + 0x3921f500,
    + 0x0037f008,
    + 0x085b21f5,
    + 0x03e8e7f1,
    + 0xf07e21f4,
    + 0x21f50137,
    + 0xe7f10839,
    + 0x21f41388,
    + 0x0137f07e,
    + 0x085b21f5,
    + 0x1388e7f1,
    + 0xf87e21f4,
    +/* 0x0961: i2c_bitw */
    + 0x5b21f500,
    0xe8e7f108,
    0x7e21f403,
    - 0x088421f5,
    - 0xb60901f4,
    - 0x1bf40142,
    -/* 0x08d5: i2c_raise_scl_done */
    - 0xf840fcef,
    -/* 0x08d9: i2c_start */
    - 0x8421f500,
    - 0x0d11f408,
    - 0x089c21f5,
    - 0xf40611f4,
    -/* 0x08ea: i2c_start_rep */
    - 0x37f0300e,
    - 0x4021f500,
    - 0x0137f008,
    - 0x086221f5,
    0xb60076bb,
    0x50f90465,
    0xbb046594,
    0x50bd0256,
    0xfc0475fd,
    - 0xb421f550,
    + 0xad21f550,
    0x0464b608,
    -/* 0x0917: i2c_start_send */
    - 0xf01f11f4,
    - 0x21f50037,
    - 0xe7f10862,
    - 0x21f41388,
    - 0x0037f07e,
    - 0x084021f5,
    - 0x1388e7f1,
    -/* 0x0933: i2c_start_out */
    - 0xf87e21f4,
    -/* 0x0935: i2c_stop */
    - 0x0037f000,
    - 0x084021f5,
    - 0xf50037f0,
    - 0xf1086221,
    - 0xf403e8e7,
    + 0xf11811f4,
    + 0xf41388e7,
    0x37f07e21,
    - 0x4021f501,
    + 0x3921f500,
    0x88e7f108,
    0x7e21f413,
    - 0xf50137f0,
    - 0xf1086221,
    - 0xf41388e7,
    - 0x00f87e21,
    -/* 0x0968: i2c_bitw */
    - 0x086221f5,
    - 0x03e8e7f1,
    - 0xbb7e21f4,
    - 0x65b60076,
    - 0x9450f904,
    - 0x56bb0465,
    - 0xfd50bd02,
    - 0x50fc0475,
    - 0x08b421f5,
    - 0xf40464b6,
    - 0xe7f11811,
    +/* 0x09a0: i2c_bitw_out */
    +/* 0x09a2: i2c_bitr */
    + 0x37f000f8,
    + 0x5b21f501,
    + 0xe8e7f108,
    + 0x7e21f403,
    + 0xb60076bb,
    + 0x50f90465,
    + 0xbb046594,
    + 0x50bd0256,
    + 0xfc0475fd,
    + 0xad21f550,
    + 0x0464b608,
    + 0xf51b11f4,
    + 0xf0089521,
    + 0x21f50037,
    + 0xe7f10839,
    0x21f41388,
    - 0x0037f07e,
    - 0x084021f5,
    - 0x1388e7f1,
    -/* 0x09a7: i2c_bitw_out */
    - 0xf87e21f4,
    -/* 0x09a9: i2c_bitr */
    - 0x0137f000,
    - 0x086221f5,
    - 0x03e8e7f1,
    - 0xbb7e21f4,
    - 0x65b60076,
    - 0x9450f904,
    - 0x56bb0465,
    - 0xfd50bd02,
    - 0x50fc0475,
    - 0x08b421f5,
    - 0xf40464b6,
    - 0x21f51b11,
    - 0x37f0089c,
    - 0x4021f500,
    - 0x88e7f108,
    - 0x7e21f413,
    - 0xf4013cf0,
    -/* 0x09ee: i2c_bitr_done */
    - 0x00f80131,
    -/* 0x09f0: i2c_get_byte */
    - 0xf00057f0,
    -/* 0x09f6: i2c_get_byte_next */
    - 0x54b60847,
    + 0x013cf07e,
    +/* 0x09e7: i2c_bitr_done */
    + 0xf80131f4,
    +/* 0x09e9: i2c_get_byte */
    + 0x0057f000,
    +/* 0x09ef: i2c_get_byte_next */
    + 0xb60847f0,
    + 0x76bb0154,
    + 0x0465b600,
    + 0x659450f9,
    + 0x0256bb04,
    + 0x75fd50bd,
    + 0xf550fc04,
    + 0xb609a221,
    + 0x11f40464,
    + 0x0553fd2b,
    + 0xf40142b6,
    + 0x37f0d81b,
    0x0076bb01,
    0xf90465b6,
    0x04659450,
    0xbd0256bb,
    0x0475fd50,
    0x21f550fc,
    - 0x64b609a9,
    - 0x2b11f404,
    - 0xb60553fd,
    - 0x1bf40142,
    - 0x0137f0d8,
    - 0xb60076bb,
    - 0x50f90465,
    - 0xbb046594,
    - 0x50bd0256,
    - 0xfc0475fd,
    - 0x6821f550,
    - 0x0464b609,
    -/* 0x0a40: i2c_get_byte_done */
    -/* 0x0a42: i2c_put_byte */
    - 0x47f000f8,
    -/* 0x0a45: i2c_put_byte_next */
    - 0x0142b608,
    - 0xbb3854ff,
    - 0x65b60076,
    - 0x9450f904,
    - 0x56bb0465,
    - 0xfd50bd02,
    - 0x50fc0475,
    - 0x096821f5,
    - 0xf40464b6,
    - 0x46b03411,
    - 0xd81bf400,
    + 0x64b60961,
    +/* 0x0a39: i2c_get_byte_done */
    +/* 0x0a3b: i2c_put_byte */
    + 0xf000f804,
    +/* 0x0a3e: i2c_put_byte_next */
    + 0x42b60847,
    + 0x3854ff01,
    0xb60076bb,
    0x50f90465,
    0xbb046594,
    0x50bd0256,
    0xfc0475fd,
    - 0xa921f550,
    + 0x6121f550,
    0x0464b609,
    - 0xbb0f11f4,
    - 0x36b00076,
    - 0x061bf401,
    -/* 0x0a9b: i2c_put_byte_done */
    - 0xf80132f4,
    -/* 0x0a9d: i2c_addr */
    - 0x0076bb00,
    + 0xb03411f4,
    + 0x1bf40046,
    + 0x0076bbd8,
    0xf90465b6,
    0x04659450,
    0xbd0256bb,
    0x0475fd50,
    0x21f550fc,
    - 0x64b608d9,
    - 0x2911f404,
    - 0x012ec3e7,
    - 0xfd0134b6,
    - 0x76bb0553,
    + 0x64b609a2,
    + 0x0f11f404,
    + 0xb00076bb,
    + 0x1bf40136,
    + 0x0132f406,
    +/* 0x0a94: i2c_put_byte_done */
    +/* 0x0a96: i2c_addr */
    + 0x76bb00f8,
    0x0465b600,
    0x659450f9,
    0x0256bb04,
    0x75fd50bd,
    0xf550fc04,
    - 0xb60a4221,
    -/* 0x0ae2: i2c_addr_done */
    - 0x00f80464,
    -/* 0x0ae4: i2c_acquire_addr */
    - 0xb6f8cec7,
    - 0xe0b702e4,
    - 0xee980d1c,
    -/* 0x0af3: i2c_acquire */
    - 0xf500f800,
    - 0xf40ae421,
    - 0xd9f00421,
    - 0x4021f403,
    -/* 0x0b02: i2c_release */
    - 0x21f500f8,
    - 0x21f40ae4,
    - 0x03daf004,
    - 0xf84021f4,
    -/* 0x0b11: i2c_recv */
    - 0x0132f400,
    - 0xb6f8c1c7,
    - 0x16b00214,
    - 0x3a1ff528,
    - 0xf413a001,
    - 0x0032980c,
    - 0x0ccc13a0,
    - 0xf4003198,
    - 0xd0f90231,
    - 0xd0f9e0f9,
    - 0x000067f1,
    - 0x100063f1,
    - 0xbb016792,
    + 0xb608d221,
    + 0x11f40464,
    + 0x2ec3e729,
    + 0x0134b601,
    + 0xbb0553fd,
    0x65b60076,
    0x9450f904,
    0x56bb0465,
    0xfd50bd02,
    0x50fc0475,
    - 0x0af321f5,
    - 0xfc0464b6,
    - 0x00d6b0d0,
    - 0x00b31bf5,
    - 0xbb0057f0,
    + 0x0a3b21f5,
    +/* 0x0adb: i2c_addr_done */
    + 0xf80464b6,
    +/* 0x0add: i2c_acquire_addr */
    + 0xf8cec700,
    + 0xb702e4b6,
    + 0x980d1ce0,
    + 0x00f800ee,
    +/* 0x0aec: i2c_acquire */
    + 0x0add21f5,
    + 0xf00421f4,
    + 0x21f403d9,
    +/* 0x0afb: i2c_release */
    + 0xf500f840,
    + 0xf40add21,
    + 0xdaf00421,
    + 0x4021f403,
    +/* 0x0b0a: i2c_recv */
    + 0x32f400f8,
    + 0xf8c1c701,
    + 0xb00214b6,
    + 0x1ff52816,
    + 0x13a0013a,
    + 0x32980cf4,
    + 0xcc13a000,
    + 0x0031980c,
    + 0xf90231f4,
    + 0xf9e0f9d0,
    + 0x0067f1d0,
    + 0x0063f100,
    + 0x01679210,
    + 0xb60076bb,
    + 0x50f90465,
    + 0xbb046594,
    + 0x50bd0256,
    + 0xfc0475fd,
    + 0xec21f550,
    + 0x0464b60a,
    + 0xd6b0d0fc,
    + 0xb31bf500,
    + 0x0057f000,
    + 0xb60076bb,
    + 0x50f90465,
    + 0xbb046594,
    + 0x50bd0256,
    + 0xfc0475fd,
    + 0x9621f550,
    + 0x0464b60a,
    + 0x00d011f5,
    + 0xbbe0c5c7,
    0x65b60076,
    0x9450f904,
    0x56bb0465,
    0xfd50bd02,
    0x50fc0475,
    - 0x0a9d21f5,
    + 0x0a3b21f5,
    0xf50464b6,
    - 0xc700d011,
    - 0x76bbe0c5,
    + 0xf000ad11,
    + 0x76bb0157,
    0x0465b600,
    0x659450f9,
    0x0256bb04,
    0x75fd50bd,
    0xf550fc04,
    - 0xb60a4221,
    + 0xb60a9621,
    0x11f50464,
    - 0x57f000ad,
    - 0x0076bb01,
    - 0xf90465b6,
    - 0x04659450,
    - 0xbd0256bb,
    - 0x0475fd50,
    - 0x21f550fc,
    - 0x64b60a9d,
    - 0x8a11f504,
    - 0x0076bb00,
    - 0xf90465b6,
    - 0x04659450,
    - 0xbd0256bb,
    - 0x0475fd50,
    - 0x21f550fc,
    - 0x64b609f0,
    - 0x6a11f404,
    - 0xbbe05bcb,
    - 0x65b60076,
    - 0x9450f904,
    - 0x56bb0465,
    - 0xfd50bd02,
    - 0x50fc0475,
    - 0x093521f5,
    - 0xb90464b6,
    - 0x74bd025b,
    -/* 0x0c17: i2c_recv_not_rd08 */
    - 0xb0430ef4,
    - 0x1bf401d6,
    - 0x0057f03d,
    - 0x0a9d21f5,
    - 0xc73311f4,
    - 0x21f5e0c5,
    - 0x11f40a42,
    - 0x0057f029,
    - 0x0a9d21f5,
    - 0xc71f11f4,
    - 0x21f5e0b5,
    - 0x11f40a42,
    - 0x3521f515,
    - 0xc774bd09,
    - 0x1bf408c5,
    - 0x0232f409,
    -/* 0x0c57: i2c_recv_not_wr08 */
    -/* 0x0c57: i2c_recv_done */
    - 0xc7030ef4,
    - 0x21f5f8ce,
    - 0xe0fc0b02,
    - 0x12f4d0fc,
    - 0x027cb90a,
    - 0x033621f5,
    -/* 0x0c6c: i2c_recv_exit */
    -/* 0x0c6e: i2c_init */
    + 0x76bb008a,
    + 0x0465b600,
    + 0x659450f9,
    + 0x0256bb04,
    + 0x75fd50bd,
    + 0xf550fc04,
    + 0xb609e921,
    + 0x11f40464,
    + 0xe05bcb6a,
    + 0xb60076bb,
    + 0x50f90465,
    + 0xbb046594,
    + 0x50bd0256,
    + 0xfc0475fd,
    + 0x2e21f550,
    + 0x0464b609,
    + 0xbd025bb9,
    + 0x430ef474,
    +/* 0x0c10: i2c_recv_not_rd08 */
    + 0xf401d6b0,
    + 0x57f03d1b,
    + 0x9621f500,
    + 0x3311f40a,
    + 0xf5e0c5c7,
    + 0xf40a3b21,
    + 0x57f02911,
    + 0x9621f500,
    + 0x1f11f40a,
    + 0xf5e0b5c7,
    + 0xf40a3b21,
    + 0x21f51511,
    + 0x74bd092e,
    + 0xf408c5c7,
    + 0x32f4091b,
    + 0x030ef402,
    +/* 0x0c50: i2c_recv_not_wr08 */
    +/* 0x0c50: i2c_recv_done */
    + 0xf5f8cec7,
    + 0xfc0afb21,
    + 0xf4d0fce0,
    + 0x7cb90a12,
    + 0x3621f502,
    +/* 0x0c65: i2c_recv_exit */
    +/* 0x0c67: i2c_init */
    + 0xf800f803,
    +/* 0x0c69: test_recv */
    + 0xd817f100,
    + 0x0614b605,
    + 0xb60011cf,
    + 0x07f10110,
    + 0x04b605d8,
    + 0x0001d006,
    + 0xe7f104bd,
    + 0xe3f1d900,
    + 0x21f5134f,
    + 0x00f80256,
    +/* 0x0c90: test_init */
    + 0x0800e7f1,
    + 0x025621f5,
    +/* 0x0c9a: idle_recv */
    0x00f800f8,
    -/* 0x0c70: test_recv */
    - 0x05d817f1,
    - 0xcf0614b6,
    - 0x10b60011,
    - 0xd807f101,
    - 0x0604b605,
    - 0xbd0001d0,
    - 0x00e7f104,
    - 0x4fe3f1d9,
    - 0x5621f513,
    -/* 0x0c97: test_init */
    - 0xf100f802,
    - 0xf50800e7,
    - 0xf8025621,
    -/* 0x0ca1: idle_recv */
    -/* 0x0ca3: idle */
    - 0xf400f800,
    - 0x17f10031,
    - 0x14b605d4,
    - 0x0011cf06,
    - 0xf10110b6,
    - 0xb605d407,
    - 0x01d00604,
    -/* 0x0cbf: idle_loop */
    - 0xf004bd00,
    - 0x32f45817,
    -/* 0x0cc5: idle_proc */
    -/* 0x0cc5: idle_proc_exec */
    - 0xb910f902,
    - 0x21f5021e,
    - 0x10fc033f,
    - 0xf40911f4,
    - 0x0ef40231,
    -/* 0x0cd9: idle_proc_next */
    - 0x5810b6ef,
    - 0xf4061fb8,
    - 0x02f4e61b,
    - 0x0028f4dd,
    - 0x00bb0ef4,
    +/* 0x0c9c: idle */
    + 0xf10031f4,
    + 0xb605d417,
    + 0x11cf0614,
    + 0x0110b600,
    + 0x05d407f1,
    + 0xd00604b6,
    + 0x04bd0001,
    +/* 0x0cb8: idle_loop */
    + 0xf45817f0,
    +/* 0x0cbe: idle_proc */
    +/* 0x0cbe: idle_proc_exec */
    + 0x10f90232,
    + 0xf5021eb9,
    + 0xfc033f21,
    + 0x0911f410,
    + 0xf40231f4,
    +/* 0x0cd2: idle_proc_next */
    + 0x10b6ef0e,
    + 0x061fb858,
    + 0xf4e61bf4,
    + 0x28f4dd02,
    + 0xbb0ef400,
    + 0x00000000,
    + 0x00000000,
    0x00000000,
    0x00000000,
    0x00000000,
    --- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/memx.fuc
    +++ b/drivers/gpu/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)

    \
     
     \ /
      Last update: 2018-05-28 16:46    [W:7.718 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site