Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec6566f3 authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nve0/gr: remove 0x404160 bashing from hub fuc



Triggers PIBUS interrupts due to register not existing anymore, and as
a result HUB_SET_CHAN times out.

After this commit, our fuc loads and can accelerate at least fbcon, X,
glxgears and OA on NVE4.  NVE7 not tested as of yet.

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 1978a2f2
Loading
Loading
Loading
Loading
+0 −26
Original line number Diff line number Diff line
@@ -468,28 +468,6 @@ ih:
	bclr $flags $p0
	iret

// Not real sure, but, MEM_CMD 7 will hang forever if this isn't done
ctx_4160s:
	mov $r14 0x4160
	sethi $r14 0x400000
	mov $r15 1
	call #nv_wr32
	ctx_4160s_wait:
		call #nv_rd32
		xbit $r15 $r15 4
		bra e #ctx_4160s_wait
	ret

// Without clearing again at end of xfer, some things cause PGRAPH
// to hang with STATUS=0x00000007 until it's cleared.. fbcon can
// still function with it set however...
ctx_4160c:
	mov $r14 0x4160
	sethi $r14 0x400000
	clear b32 $r15
	call #nv_wr32
	ret

// Again, not real sure
//
// In: $r15 value to set 0x404170 to
@@ -630,7 +608,6 @@ ctx_load:
// In: $r2 channel address
//
ctx_chan:
	call #ctx_4160s
	call #ctx_load
	mov $r10 12			// DONE_UNK12
	call #wait_donez
@@ -642,7 +619,6 @@ ctx_chan:
		iord $r2 I[$r1 + 0x000]
		or $r2 $r2
		bra ne #ctx_chan_wait
	call #ctx_4160c
	ret

// Execute per-context state overrides list
@@ -709,7 +685,6 @@ ctx_xfer:
	ctx_xfer_pre:
		mov $r15 0x10
		call #ctx_86c
		call #ctx_4160s
		bra not $p1 #ctx_xfer_exec

	ctx_xfer_pre_load:
@@ -798,7 +773,6 @@ ctx_xfer:
			call #ctx_mmio_exec

		ctx_xfer_no_post_mmio:
		call #ctx_4160c

	ctx_xfer_done:
	ret
+189 −256
Original line number Diff line number Diff line
@@ -553,7 +553,7 @@ uint32_t nve0_grhub_code[] = {
	0xd00799f0,
	0x32f40089,
	0x0231f401,
	0x082921f5,
	0x07fb21f5,
	0x085c87f1,
	0xbd0684b6,
	0x0799f094,
@@ -563,7 +563,7 @@ uint32_t nve0_grhub_code[] = {
	0x99f094bd,
	0x0089d006,
	0xf50131f4,
	0xf1082921,
	0xf107fb21,
	0xb6085c87,
	0x94bd0684,
	0xd00699f0,
@@ -572,7 +572,7 @@ uint32_t nve0_grhub_code[] = {
	0xb920f931,
	0x32f40212,
	0x0232f401,
	0x082921f5,
	0x07fb21f5,
	0x17f120fc,
	0x14b60b00,
	0x0012d006,
@@ -582,7 +582,7 @@ uint32_t nve0_grhub_code[] = {
	0x0131f40d,
	0xf50232f4,
/* 0x0537: chsw_done */
	0xf1082921,
	0xf107fb21,
	0xb60b0c17,
	0x27f00614,
	0x0012d001,
@@ -594,7 +594,7 @@ uint32_t nve0_grhub_code[] = {
	0xb0ff200e,
	0x1bf401e4,
	0x02f2b90d,
	0x07b521f5,
	0x078f21f5,
/* 0x0567: main_not_ctx_chan */
	0xb0420ef4,
	0x1bf402e4,
@@ -604,7 +604,7 @@ uint32_t nve0_grhub_code[] = {
	0x0089d007,
	0xf40132f4,
	0x21f50232,
	0x87f10829,
	0x87f107fb,
	0x84b6085c,
	0xf094bd06,
	0x89d00799,
@@ -653,267 +653,200 @@ uint32_t nve0_grhub_code[] = {
	0xfe80fc90,
	0x80fc0088,
	0xf80032f4,
/* 0x0631: ctx_4160s */
	0x60e7f101,
/* 0x0631: ctx_4170s */
	0x70e7f101,
	0x40e3f041,
	0xf401f7f0,
/* 0x063e: ctx_4160s_wait */
	0x21f48d21,
	0x04ffc868,
	0xf8fa0bf4,
/* 0x0649: ctx_4160c */
	0x60e7f100,
	0x40e3f041,
	0x21f4f4bd,
/* 0x0657: ctx_4170s */
	0xf100f88d,
	0xf04170e7,
	0xf5f040e3,
	0x8d21f410,
/* 0x0666: ctx_4170w */
	0xe7f100f8,
	0xe3f04170,
	0x6821f440,
	0xf410f4f0,
	0x00f8f31b,
/* 0x0678: ctx_redswitch */
	0x0614e7f1,
	0xf106e4b6,
	0xd00270f7,
	0xf7f000ef,
/* 0x0689: ctx_redswitch_delay */
	0x01f2b608,
	0xf1fd1bf4,
	0xd00770f7,
	0x00f800ef,
/* 0x0698: ctx_86c */
	0x086ce7f1,
	0xd006e4b6,
	0xe7f100ef,
	0xe3f08a14,
	0x8d21f440,
	0xa86ce7f1,
	0xf441e3f0,
	0xf410f5f0,
	0x00f88d21,
/* 0x06b8: ctx_load */
	0x083c87f1,
	0xbd0684b6,
	0x0599f094,
	0xf00089d0,
	0x21f40ca7,
	0x2417f1c9,
	0x0614b60a,
	0xf10010d0,
	0xb60b0037,
	0x32d00634,
	0x0c17f140,
	0x0614b60a,
	0xd00747f0,
	0x14d00012,
/* 0x06f1: ctx_chan_wait_0 */
	0x4014cf40,
	0xf41f44f0,
	0x32d0fa1b,
	0x000bfe00,
	0xb61f2af0,
	0x20b60424,
	0x3c87f102,
	0x0684b608,
	0x99f094bd,
	0x0089d008,
	0x0a0417f1,
	0xd00614b6,
	0x17f10012,
	0x14b60a20,
	0x0227f006,
	0x800023f1,
	0xf00012d0,
	0x27f11017,
	0x23f00300,
	0x0512fa02,
	0x87f103f8,
	0x84b6085c,
/* 0x0640: ctx_4170w */
	0x4170e7f1,
	0xf440e3f0,
	0xf4f06821,
	0xf31bf410,
/* 0x0652: ctx_redswitch */
	0xe7f100f8,
	0xe4b60614,
	0x70f7f106,
	0x00efd002,
/* 0x0663: ctx_redswitch_delay */
	0xb608f7f0,
	0x1bf401f2,
	0x70f7f1fd,
	0x00efd007,
/* 0x0672: ctx_86c */
	0xe7f100f8,
	0xe4b6086c,
	0x00efd006,
	0x8a14e7f1,
	0xf440e3f0,
	0xe7f18d21,
	0xe3f0a86c,
	0x8d21f441,
/* 0x0692: ctx_load */
	0x87f100f8,
	0x84b6083c,
	0xf094bd06,
	0x89d00899,
	0xc1019800,
	0x981814b6,
	0x25b6c002,
	0x0512fd08,
	0xf1160180,
	0x89d00599,
	0x0ca7f000,
	0xf1c921f4,
	0xb60a2417,
	0x10d00614,
	0x0037f100,
	0x0634b60b,
	0xf14032d0,
	0xb60a0c17,
	0x47f00614,
	0x0012d007,
/* 0x06cb: ctx_chan_wait_0 */
	0xcf4014d0,
	0x44f04014,
	0xfa1bf41f,
	0xfe0032d0,
	0x2af0000b,
	0x0424b61f,
	0xf10220b6,
	0xb6083c87,
	0x94bd0684,
	0xd00999f0,
	0x27f10089,
	0x24b60a04,
	0x0021d006,
	0xf10127f0,
	0xb60a2017,
	0x12d00614,
	0x0017f100,
	0x0613f002,
	0xf80501fa,
	0x5c87f103,
	0xd00899f0,
	0x17f10089,
	0x14b60a04,
	0x0012d006,
	0x0a2017f1,
	0xf00614b6,
	0x23f10227,
	0x12d08000,
	0x1017f000,
	0x030027f1,
	0xfa0223f0,
	0x03f80512,
	0x085c87f1,
	0xbd0684b6,
	0x0899f094,
	0x980089d0,
	0x14b6c101,
	0xc0029818,
	0xfd0825b6,
	0x01800512,
	0x3c87f116,
	0x0684b608,
	0x99f094bd,
	0x0089d009,
	0x085c87f1,
	0xbd0684b6,
	0x0599f094,
	0xf80089d0,
/* 0x07b5: ctx_chan */
	0x3121f500,
	0xb821f506,
	0x0ca7f006,
	0xf1c921f4,
	0xb60a1017,
	0x27f00614,
	0x0012d005,
/* 0x07d0: ctx_chan_wait */
	0xfd0012cf,
	0x1bf40522,
	0x4921f5fa,
/* 0x07df: ctx_mmio_exec */
	0x9800f806,
	0x27f18103,
	0x24b60a04,
	0x0023d006,
/* 0x07ee: ctx_mmio_loop */
	0x34c434bd,
	0x0f1bf4ff,
	0x030057f1,
	0xfa0653f0,
	0x03f80535,
/* 0x0800: ctx_mmio_pull */
	0x98c04e98,
	0x21f4c14f,
	0x0830b68d,
	0xf40112b6,
/* 0x0812: ctx_mmio_done */
	0x0398df1b,
	0x0023d016,
	0xf1800080,
	0x0a0427f1,
	0xd00624b6,
	0x27f00021,
	0x2017f101,
	0x0614b60a,
	0xf10012d0,
	0xf0020017,
	0x01fa0613,
	0xf803f806,
/* 0x0829: ctx_xfer */
	0x0611f400,
/* 0x082f: ctx_xfer_pre */
	0xf01102f4,
	0x21f510f7,
	0x21f50698,
	0x11f40631,
/* 0x083d: ctx_xfer_pre_load */
	0x02f7f01c,
	0x065721f5,
	0x066621f5,
	0x067821f5,
	0x21f5f4bd,
	0x21f50657,
/* 0x0856: ctx_xfer_exec */
	0x019806b8,
	0x1427f116,
	0x0624b604,
	0xf10020d0,
	0xf0a500e7,
	0x1fb941e3,
	0x8d21f402,
	0xf004e0b6,
	0x2cf001fc,
	0x0124b602,
	0xf405f2fd,
	0x17f18d21,
	0x13f04afc,
	0x0c27f002,
	0xf50012d0,
	0xf1020721,
	0xf047fc27,
	0x20d00223,
	0x012cf000,
	0xd00320b6,
	0xacf00012,
	0x06a5f001,
	0x9800b7f0,
	0x0d98140c,
	0x00e7f015,
	0x015c21f5,
	0xf508a7f0,
	0xf5010321,
	0xf4020721,
	0xa7f02201,
	0xc921f40c,
	0x0a1017f1,
	0xf00614b6,
	0x12d00527,
/* 0x08dd: ctx_xfer_post_save_wait */
	0x0012cf00,
	0xf40522fd,
	0x02f4fa1b,
/* 0x08e9: ctx_xfer_post */
	0x02f7f032,
	0x065721f5,
	0xf103f805,
	0xb6085c87,
	0x94bd0684,
	0xd00999f0,
	0x87f10089,
	0x84b6085c,
	0xf094bd06,
	0x89d00599,
/* 0x078f: ctx_chan */
	0xf500f800,
	0xf0069221,
	0x21f40ca7,
	0x1017f1c9,
	0x0614b60a,
	0xd00527f0,
/* 0x07a6: ctx_chan_wait */
	0x12cf0012,
	0x0522fd00,
	0xf8fa1bf4,
/* 0x07b1: ctx_mmio_exec */
	0x81039800,
	0x0a0427f1,
	0xd00624b6,
	0x34bd0023,
/* 0x07c0: ctx_mmio_loop */
	0xf4ff34c4,
	0x57f10f1b,
	0x53f00300,
	0x0535fa06,
/* 0x07d2: ctx_mmio_pull */
	0x4e9803f8,
	0xc14f98c0,
	0xb68d21f4,
	0x12b60830,
	0xdf1bf401,
/* 0x07e4: ctx_mmio_done */
	0xd0160398,
	0x00800023,
	0x0017f180,
	0x0613f002,
	0xf80601fa,
/* 0x07fb: ctx_xfer */
	0xf400f803,
	0x02f40611,
/* 0x0801: ctx_xfer_pre */
	0x10f7f00d,
	0x067221f5,
/* 0x080b: ctx_xfer_pre_load */
	0xf01c11f4,
	0x21f502f7,
	0x21f50631,
	0x21f50640,
	0xf4bd0652,
	0x063121f5,
	0x069221f5,
/* 0x0824: ctx_xfer_exec */
	0xf1160198,
	0xb6041427,
	0x20d00624,
	0x00e7f100,
	0x41e3f0a5,
	0xf4021fb9,
	0xe0b68d21,
	0x01fcf004,
	0xb6022cf0,
	0xf2fd0124,
	0x8d21f405,
	0x4afc17f1,
	0xf00213f0,
	0x12d00c27,
	0x0721f500,
	0xfc27f102,
	0x0223f047,
	0xf00020d0,
	0x20b6012c,
	0x0012d003,
	0xf001acf0,
	0xb7f006a5,
	0x140c9800,
	0xf0150d98,
	0x21f500e7,
	0xa7f0015c,
	0x0321f508,
	0x0721f501,
	0x2201f402,
	0xf40ca7f0,
	0x17f1c921,
	0x14b60a10,
	0x0527f006,
/* 0x08ab: ctx_xfer_post_save_wait */
	0xcf0012d0,
	0x22fd0012,
	0xfa1bf405,
/* 0x08b7: ctx_xfer_post */
	0xf02e02f4,
	0x21f502f7,
	0xf4bd0631,
	0x067221f5,
	0x022621f5,
	0x064021f5,
	0x21f5f4bd,
	0x21f50698,
	0x21f50226,
	0xf4bd0666,
	0x065721f5,
	0x981011f4,
	0x11fd8001,
	0x070bf405,
	0x07df21f5,
/* 0x0914: ctx_xfer_no_post_mmio */
	0x064921f5,
/* 0x0918: ctx_xfer_done */
	0x000000f8,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x11f40631,
	0x80019810,
	0xf40511fd,
	0x21f5070b,
/* 0x08e2: ctx_xfer_no_post_mmio */
/* 0x08e2: ctx_xfer_done */
	0x00f807b1,
	0x00000000,
	0x00000000,
	0x00000000,