aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_util.c23
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_util.h4
-rw-r--r--drivers/gpu/drm/nouveau/nv50_graph.c92
3 files changed, 66 insertions, 53 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_util.c b/drivers/gpu/drm/nouveau/nouveau_util.c
index fbe0fb13bc1e..e51b51503baa 100644
--- a/drivers/gpu/drm/nouveau/nouveau_util.c
+++ b/drivers/gpu/drm/nouveau/nouveau_util.c
@@ -47,18 +47,27 @@ nouveau_bitfield_print(const struct nouveau_bitfield *bf, u32 value)
47 printk(" (unknown bits 0x%08x)", value); 47 printk(" (unknown bits 0x%08x)", value);
48} 48}
49 49
50void 50const struct nouveau_enum *
51nouveau_enum_print(const struct nouveau_enum *en, u32 value) 51nouveau_enum_find(const struct nouveau_enum *en, u32 value)
52{ 52{
53 while (en->name) { 53 while (en->name) {
54 if (value == en->value) { 54 if (en->value == value)
55 printk("%s", en->name); 55 return en;
56 return;
57 }
58
59 en++; 56 en++;
60 } 57 }
61 58
59 return NULL;
60}
61
62void
63nouveau_enum_print(const struct nouveau_enum *en, u32 value)
64{
65 en = nouveau_enum_find(en, value);
66 if (en) {
67 printk("%s", en->name);
68 return;
69 }
70
62 printk("(unknown enum 0x%08x)", value); 71 printk("(unknown enum 0x%08x)", value);
63} 72}
64 73
diff --git a/drivers/gpu/drm/nouveau/nouveau_util.h b/drivers/gpu/drm/nouveau/nouveau_util.h
index d9ceaea26f4b..b97719fbb739 100644
--- a/drivers/gpu/drm/nouveau/nouveau_util.h
+++ b/drivers/gpu/drm/nouveau/nouveau_util.h
@@ -36,10 +36,14 @@ struct nouveau_bitfield {
36struct nouveau_enum { 36struct nouveau_enum {
37 u32 value; 37 u32 value;
38 const char *name; 38 const char *name;
39 void *data;
39}; 40};
40 41
41void nouveau_bitfield_print(const struct nouveau_bitfield *, u32 value); 42void nouveau_bitfield_print(const struct nouveau_bitfield *, u32 value);
42void nouveau_enum_print(const struct nouveau_enum *, u32 value); 43void nouveau_enum_print(const struct nouveau_enum *, u32 value);
44const struct nouveau_enum *
45nouveau_enum_find(const struct nouveau_enum *, u32 value);
46
43int nouveau_ratelimit(void); 47int nouveau_ratelimit(void);
44 48
45#endif 49#endif
diff --git a/drivers/gpu/drm/nouveau/nv50_graph.c b/drivers/gpu/drm/nouveau/nv50_graph.c
index e1267a1f6d10..a8be5184477a 100644
--- a/drivers/gpu/drm/nouveau/nv50_graph.c
+++ b/drivers/gpu/drm/nouveau/nv50_graph.c
@@ -550,11 +550,11 @@ nv86_graph_tlb_flush(struct drm_device *dev)
550 550
551static struct nouveau_enum nv50_mp_exec_error_names[] = 551static struct nouveau_enum nv50_mp_exec_error_names[] =
552{ 552{
553 { 3, "STACK_UNDERFLOW" }, 553 { 3, "STACK_UNDERFLOW", NULL },
554 { 4, "QUADON_ACTIVE" }, 554 { 4, "QUADON_ACTIVE", NULL },
555 { 8, "TIMEOUT" }, 555 { 8, "TIMEOUT", NULL },
556 { 0x10, "INVALID_OPCODE" }, 556 { 0x10, "INVALID_OPCODE", NULL },
557 { 0x40, "BREAKPOINT" }, 557 { 0x40, "BREAKPOINT", NULL },
558 {} 558 {}
559}; 559};
560 560
@@ -582,47 +582,47 @@ static struct nouveau_bitfield nv50_graph_trap_ccache[] = {
582 582
583/* There must be a *lot* of these. Will take some time to gather them up. */ 583/* There must be a *lot* of these. Will take some time to gather them up. */
584struct nouveau_enum nv50_data_error_names[] = { 584struct nouveau_enum nv50_data_error_names[] = {
585 { 0x00000003, "INVALID_QUERY_OR_TEXTURE" }, 585 { 0x00000003, "INVALID_QUERY_OR_TEXTURE", NULL },
586 { 0x00000004, "INVALID_VALUE" }, 586 { 0x00000004, "INVALID_VALUE", NULL },
587 { 0x00000005, "INVALID_ENUM" }, 587 { 0x00000005, "INVALID_ENUM", NULL },
588 { 0x00000008, "INVALID_OBJECT" }, 588 { 0x00000008, "INVALID_OBJECT", NULL },
589 { 0x00000009, "READ_ONLY_OBJECT" }, 589 { 0x00000009, "READ_ONLY_OBJECT", NULL },
590 { 0x0000000a, "SUPERVISOR_OBJECT" }, 590 { 0x0000000a, "SUPERVISOR_OBJECT", NULL },
591 { 0x0000000b, "INVALID_ADDRESS_ALIGNMENT" }, 591 { 0x0000000b, "INVALID_ADDRESS_ALIGNMENT", NULL },
592 { 0x0000000c, "INVALID_BITFIELD" }, 592 { 0x0000000c, "INVALID_BITFIELD", NULL },
593 { 0x0000000d, "BEGIN_END_ACTIVE" }, 593 { 0x0000000d, "BEGIN_END_ACTIVE", NULL },
594 { 0x0000000e, "SEMANTIC_COLOR_BACK_OVER_LIMIT" }, 594 { 0x0000000e, "SEMANTIC_COLOR_BACK_OVER_LIMIT", NULL },
595 { 0x0000000f, "VIEWPORT_ID_NEEDS_GP" }, 595 { 0x0000000f, "VIEWPORT_ID_NEEDS_GP", NULL },
596 { 0x00000010, "RT_DOUBLE_BIND" }, 596 { 0x00000010, "RT_DOUBLE_BIND", NULL },
597 { 0x00000011, "RT_TYPES_MISMATCH" }, 597 { 0x00000011, "RT_TYPES_MISMATCH", NULL },
598 { 0x00000012, "RT_LINEAR_WITH_ZETA" }, 598 { 0x00000012, "RT_LINEAR_WITH_ZETA", NULL },
599 { 0x00000015, "FP_TOO_FEW_REGS" }, 599 { 0x00000015, "FP_TOO_FEW_REGS", NULL },
600 { 0x00000016, "ZETA_FORMAT_CSAA_MISMATCH" }, 600 { 0x00000016, "ZETA_FORMAT_CSAA_MISMATCH", NULL },
601 { 0x00000017, "RT_LINEAR_WITH_MSAA" }, 601 { 0x00000017, "RT_LINEAR_WITH_MSAA", NULL },
602 { 0x00000018, "FP_INTERPOLANT_START_OVER_LIMIT" }, 602 { 0x00000018, "FP_INTERPOLANT_START_OVER_LIMIT", NULL },
603 { 0x00000019, "SEMANTIC_LAYER_OVER_LIMIT" }, 603 { 0x00000019, "SEMANTIC_LAYER_OVER_LIMIT", NULL },
604 { 0x0000001a, "RT_INVALID_ALIGNMENT" }, 604 { 0x0000001a, "RT_INVALID_ALIGNMENT", NULL },
605 { 0x0000001b, "SAMPLER_OVER_LIMIT" }, 605 { 0x0000001b, "SAMPLER_OVER_LIMIT", NULL },
606 { 0x0000001c, "TEXTURE_OVER_LIMIT" }, 606 { 0x0000001c, "TEXTURE_OVER_LIMIT", NULL },
607 { 0x0000001e, "GP_TOO_MANY_OUTPUTS" }, 607 { 0x0000001e, "GP_TOO_MANY_OUTPUTS", NULL },
608 { 0x0000001f, "RT_BPP128_WITH_MS8" }, 608 { 0x0000001f, "RT_BPP128_WITH_MS8", NULL },
609 { 0x00000021, "Z_OUT_OF_BOUNDS" }, 609 { 0x00000021, "Z_OUT_OF_BOUNDS", NULL },
610 { 0x00000023, "XY_OUT_OF_BOUNDS" }, 610 { 0x00000023, "XY_OUT_OF_BOUNDS", NULL },
611 { 0x00000027, "CP_MORE_PARAMS_THAN_SHARED" }, 611 { 0x00000027, "CP_MORE_PARAMS_THAN_SHARED", NULL },
612 { 0x00000028, "CP_NO_REG_SPACE_STRIPED" }, 612 { 0x00000028, "CP_NO_REG_SPACE_STRIPED", NULL },
613 { 0x00000029, "CP_NO_REG_SPACE_PACKED" }, 613 { 0x00000029, "CP_NO_REG_SPACE_PACKED", NULL },
614 { 0x0000002a, "CP_NOT_ENOUGH_WARPS" }, 614 { 0x0000002a, "CP_NOT_ENOUGH_WARPS", NULL },
615 { 0x0000002b, "CP_BLOCK_SIZE_MISMATCH" }, 615 { 0x0000002b, "CP_BLOCK_SIZE_MISMATCH", NULL },
616 { 0x0000002c, "CP_NOT_ENOUGH_LOCAL_WARPS" }, 616 { 0x0000002c, "CP_NOT_ENOUGH_LOCAL_WARPS", NULL },
617 { 0x0000002d, "CP_NOT_ENOUGH_STACK_WARPS" }, 617 { 0x0000002d, "CP_NOT_ENOUGH_STACK_WARPS", NULL },
618 { 0x0000002e, "CP_NO_BLOCKDIM_LATCH" }, 618 { 0x0000002e, "CP_NO_BLOCKDIM_LATCH", NULL },
619 { 0x00000031, "ENG2D_FORMAT_MISMATCH" }, 619 { 0x00000031, "ENG2D_FORMAT_MISMATCH", NULL },
620 { 0x0000003f, "PRIMITIVE_ID_NEEDS_GP" }, 620 { 0x0000003f, "PRIMITIVE_ID_NEEDS_GP", NULL },
621 { 0x00000044, "SEMANTIC_VIEWPORT_OVER_LIMIT" }, 621 { 0x00000044, "SEMANTIC_VIEWPORT_OVER_LIMIT", NULL },
622 { 0x00000045, "SEMANTIC_COLOR_FRONT_OVER_LIMIT" }, 622 { 0x00000045, "SEMANTIC_COLOR_FRONT_OVER_LIMIT", NULL },
623 { 0x00000046, "LAYER_ID_NEEDS_GP" }, 623 { 0x00000046, "LAYER_ID_NEEDS_GP", NULL },
624 { 0x00000047, "SEMANTIC_CLIP_OVER_LIMIT" }, 624 { 0x00000047, "SEMANTIC_CLIP_OVER_LIMIT", NULL },
625 { 0x00000048, "SEMANTIC_PTSZ_OVER_LIMIT" }, 625 { 0x00000048, "SEMANTIC_PTSZ_OVER_LIMIT", NULL },
626 {} 626 {}
627}; 627};
628 628