Commit 3baa24f0 authored by Oak Zeng's avatar Oak Zeng Committed by Alex Deucher
Browse files

drm/amdkfd: Add arcturus CWSR trap handler



CWSR (compute wave save/restore) is used for
preempting compute queues.

Signed-off-by: default avatarOak Zeng <Oak.Zeng@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 54bd77f3
Loading
Loading
Loading
Loading
+198 −0
Original line number Diff line number Diff line
@@ -860,3 +860,201 @@ static const uint32_t cwsr_trap_gfx10_hex[] = {
	0xbf9f0000, 0xbf9f0000,
	0xbf9f0000, 0x00000000,
};
static const uint32_t cwsr_trap_arcturus_hex[] = {
	0xbf820001, 0xbf8200ca,
	0xb8f0f802, 0x89708670,
	0xb8f1f803, 0x8671ff71,
	0x00000400, 0xbf850008,
	0xb8f1f803, 0x8671ff71,
	0x000001ff, 0xbf850001,
	0x806c846c, 0x866dff6d,
	0x0000ffff, 0xbe801f6c,
	0xb8f1f803, 0x8671ff71,
	0x00000100, 0xbf840006,
	0xbef60080, 0xb9760203,
	0x866dff6d, 0x0000ffff,
	0x80ec886c, 0x82ed806d,
	0xbef60080, 0xb9760283,
	0xbef20068, 0xbef30069,
	0xb8f62407, 0x8e769b76,
	0x876d766d, 0xb8f603c7,
	0x8e769a76, 0x876d766d,
	0xb8f6f807, 0x8676ff76,
	0x00007fff, 0xb976f807,
	0xbeee007e, 0xbeef007f,
	0xbefe0180, 0xbf900004,
	0xbf8e0002, 0xbf88fffe,
	0xbef4007e, 0x8675ff7f,
	0x0000ffff, 0x8775ff75,
	0x00040000, 0xbef60080,
	0xbef700ff, 0x00807fac,
	0x8676ff7f, 0x08000000,
	0x8f768376, 0x87777677,
	0x8676ff7f, 0x70000000,
	0x8f768176, 0x87777677,
	0xbefb007c, 0xbefa0080,
	0xbf8a0000, 0x8676ff7f,
	0x04000000, 0xbf840012,
	0xbefe00c1, 0xbeff00c1,
	0xb8f14306, 0x8671c171,
	0xbf84000d, 0x8e718671,
	0x8e718271, 0xbef60071,
	0xbef600ff, 0x01000000,
	0xbefc0080, 0xbf800000,
	0x807cff7c, 0x00000100,
	0x807aff7a, 0x00000100,
	0xbf0a717c, 0xbf85fffa,
	0xbefe00c1, 0xbeff00c1,
	0xb8f12a05, 0x80718171,
	0x8e718271, 0x8e768871,
	0xbef600ff, 0x01000000,
	0xbefc0080, 0xbf11017c,
	0x8071ff71, 0x00001000,
	0x7e000300, 0xe0724000,
	0x7a1d0000, 0x807c817c,
	0x807aff7a, 0x00000100,
	0xbf0a717c, 0xbf85fff8,
	0xbf9c0000, 0xbefe00c1,
	0xbeff00c1, 0xb8f12a05,
	0x80718171, 0x8e718271,
	0x8e768871, 0xbef600ff,
	0x01000000, 0xbefc0080,
	0xbf11017c, 0x8071ff71,
	0x00001000, 0xd3d84000,
	0x18000100, 0x7e000000,
	0x7e000000, 0xe0724000,
	0x7a1d0000, 0x807c817c,
	0x807aff7a, 0x00000100,
	0xbf0a717c, 0xbf85fff5,
	0xbf9c0000, 0xb8f11605,
	0x80718171, 0x8e718471,
	0x8e768871, 0xbef600ff,
	0x01000000, 0xbefc0080,
	0xbf800000, 0xbe802a00,
	0x7e000200, 0xe0724000,
	0x7a1d0000, 0x807aff7a,
	0x00000100, 0x807c817c,
	0xbf0a717c, 0xbf85fff7,
	0xbef60084, 0xbef600ff,
	0x01000000, 0x7e00027b,
	0xe0724000, 0x7a1d0000,
	0x807aff7a, 0x00000100,
	0x7e00026c, 0xe0724000,
	0x7a1d0000, 0x807aff7a,
	0x00000100, 0x7e00026d,
	0xe0724000, 0x7a1d0000,
	0x807aff7a, 0x00000100,
	0x7e00026e, 0xe0724000,
	0x7a1d0000, 0x807aff7a,
	0x00000100, 0x7e00026f,
	0xe0724000, 0x7a1d0000,
	0x807aff7a, 0x00000100,
	0x7e000270, 0xe0724000,
	0x7a1d0000, 0x807aff7a,
	0x00000100, 0xb8f1f803,
	0x7e000271, 0xe0724000,
	0x7a1d0000, 0x807aff7a,
	0x00000100, 0x7e000272,
	0xe0724000, 0x7a1d0000,
	0x807aff7a, 0x00000100,
	0x7e000273, 0xe0724000,
	0x7a1d0000, 0x807aff7a,
	0x00000100, 0xb8fbf801,
	0x7e00027b, 0xe0724000,
	0x7a1d0000, 0x807aff7a,
	0x00000100, 0xbf8200bb,
	0xbef4007e, 0x8675ff7f,
	0x0000ffff, 0x8775ff75,
	0x00040000, 0xbef60080,
	0xbef700ff, 0x00807fac,
	0x8672ff7f, 0x08000000,
	0x8f728372, 0x87777277,
	0x8672ff7f, 0x70000000,
	0x8f728172, 0x87777277,
	0xbef80080, 0x8672ff7f,
	0x04000000, 0xbf840011,
	0xbefe00c1, 0xbeff00c1,
	0xb8ef4306, 0x866fc16f,
	0xbf84000c, 0x8e6f866f,
	0x8e6f826f, 0xbef6006f,
	0xbef600ff, 0x01000000,
	0xbefc0080, 0x807cff7c,
	0x00000100, 0x8078ff78,
	0x00000100, 0xbf0a6f7c,
	0xbf85fffa, 0xbefe00c1,
	0xbeff00c1, 0xb8ef2a05,
	0x806f816f, 0x8e6f826f,
	0x8e76886f, 0xbef600ff,
	0x01000000, 0xbef20078,
	0x8078ff78, 0x00000100,
	0xbefc0081, 0xbf11087c,
	0x806fff6f, 0x00008000,
	0xe0524000, 0x781d0000,
	0xbf8c0f70, 0x7e000300,
	0x807c817c, 0x8078ff78,
	0x00000100, 0xbf0a6f7c,
	0xbf85fff7, 0xbf9c0000,
	0xbefe00c1, 0xbeff00c1,
	0xb8ef2a05, 0x806f816f,
	0x8e6f826f, 0x8e76886f,
	0xbef600ff, 0x01000000,
	0xbefc0080, 0xbf11087c,
	0x806fff6f, 0x00008000,
	0xe0524000, 0x781d0000,
	0xbf8c0f70, 0xd3d94000,
	0x18000100, 0x807c817c,
	0x8078ff78, 0x00000100,
	0xbf0a6f7c, 0xbf85fff6,
	0xbf9c0000, 0xe0524000,
	0x721d0000, 0xb8ef1605,
	0x806f816f, 0x8e6f846f,
	0x8e76886f, 0xbef600ff,
	0x01000000, 0xc0211cba,
	0x00000078, 0x8078ff78,
	0x00000100, 0xbefc0081,
	0xc021003a, 0x00000078,
	0x8078ff78, 0x00000100,
	0xbf8cc07f, 0xbe802c00,
	0xbf800000, 0x807c817c,
	0xbf0a6f7c, 0xbf85fff6,
	0xbe800072, 0xbef60084,
	0xbef600ff, 0x01000000,
	0xc0211bfa, 0x00000078,
	0x8078ff78, 0x00000100,
	0xc0211b3a, 0x00000078,
	0x8078ff78, 0x00000100,
	0xc0211b7a, 0x00000078,
	0x8078ff78, 0x00000100,
	0xc0211eba, 0x00000078,
	0x8078ff78, 0x00000100,
	0xc0211efa, 0x00000078,
	0x8078ff78, 0x00000100,
	0xc0211c3a, 0x00000078,
	0x8078ff78, 0x00000100,
	0xc0211c7a, 0x00000078,
	0x8078ff78, 0x00000100,
	0xc0211a3a, 0x00000078,
	0x8078ff78, 0x00000100,
	0xc0211a7a, 0x00000078,
	0x8078ff78, 0x00000100,
	0xc0211cfa, 0x00000078,
	0x8078ff78, 0x00000100,
	0xbf8cc07f, 0xbef2006d,
	0x866dff72, 0x0000ffff,
	0xbefc006f, 0xbefe007a,
	0xbeff007b, 0x866f71ff,
	0x000003ff, 0xb96f4803,
	0x866f71ff, 0xfffff800,
	0x8f6f8b6f, 0xb96fa2c3,
	0xb973f801, 0x866fff72,
	0xf8000000, 0x8f6f9b6f,
	0x8e6f906f, 0xbef30080,
	0x87736f73, 0x866fff72,
	0x04000000, 0x8f6f9a6f,
	0x8e6f8f6f, 0x87736f73,
	0x866fff70, 0x00800000,
	0x8f6f976f, 0xb973f807,
	0x86fe7e7e, 0x86ea6a6a,
	0xb970f802, 0xbf8a0000,
	0x95806f6c, 0xbf810000,
};
+746 −0

File added.

Preview size limit exceeded, changes collapsed.

+4 −0
Original line number Diff line number Diff line
@@ -553,6 +553,10 @@ static void kfd_cwsr_init(struct kfd_dev *kfd)
			BUILD_BUG_ON(sizeof(cwsr_trap_gfx8_hex) > PAGE_SIZE);
			kfd->cwsr_isa = cwsr_trap_gfx8_hex;
			kfd->cwsr_isa_size = sizeof(cwsr_trap_gfx8_hex);
		} else if (kfd->device_info->asic_family == CHIP_ARCTURUS) {
			BUILD_BUG_ON(sizeof(cwsr_trap_arcturus_hex) > PAGE_SIZE);
			kfd->cwsr_isa = cwsr_trap_arcturus_hex;
			kfd->cwsr_isa_size = sizeof(cwsr_trap_arcturus_hex);
		} else if (kfd->device_info->asic_family < CHIP_NAVI10) {
			BUILD_BUG_ON(sizeof(cwsr_trap_gfx9_hex) > PAGE_SIZE);
			kfd->cwsr_isa = cwsr_trap_gfx9_hex;