diff options
Diffstat (limited to 'drivers/gpu/drm/nouveau/nv50_graph.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nv50_graph.c | 95 |
1 files changed, 47 insertions, 48 deletions
diff --git a/drivers/gpu/drm/nouveau/nv50_graph.c b/drivers/gpu/drm/nouveau/nv50_graph.c index e1267a1f6d10..8675b00caf18 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 | ||
551 | static struct nouveau_enum nv50_mp_exec_error_names[] = | 551 | static 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. */ |
584 | struct nouveau_enum nv50_data_error_names[] = { | 584 | struct 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 | ||
@@ -702,7 +702,6 @@ nv50_pgraph_tp_trap(struct drm_device *dev, int type, uint32_t ustatus_old, | |||
702 | tps++; | 702 | tps++; |
703 | switch (type) { | 703 | switch (type) { |
704 | case 6: /* texture error... unknown for now */ | 704 | case 6: /* texture error... unknown for now */ |
705 | nv50_fb_vm_trap(dev, display, name); | ||
706 | if (display) { | 705 | if (display) { |
707 | NV_ERROR(dev, "magic set %d:\n", i); | 706 | NV_ERROR(dev, "magic set %d:\n", i); |
708 | for (r = ustatus_addr + 4; r <= ustatus_addr + 0x10; r += 4) | 707 | for (r = ustatus_addr + 4; r <= ustatus_addr + 0x10; r += 4) |
@@ -725,7 +724,6 @@ nv50_pgraph_tp_trap(struct drm_device *dev, int type, uint32_t ustatus_old, | |||
725 | uint32_t e1c = nv_rd32(dev, ustatus_addr + 0x14); | 724 | uint32_t e1c = nv_rd32(dev, ustatus_addr + 0x14); |
726 | uint32_t e20 = nv_rd32(dev, ustatus_addr + 0x18); | 725 | uint32_t e20 = nv_rd32(dev, ustatus_addr + 0x18); |
727 | uint32_t e24 = nv_rd32(dev, ustatus_addr + 0x1c); | 726 | uint32_t e24 = nv_rd32(dev, ustatus_addr + 0x1c); |
728 | nv50_fb_vm_trap(dev, display, name); | ||
729 | /* 2d engine destination */ | 727 | /* 2d engine destination */ |
730 | if (ustatus & 0x00000010) { | 728 | if (ustatus & 0x00000010) { |
731 | if (display) { | 729 | if (display) { |
@@ -1068,6 +1066,7 @@ nv50_graph_isr(struct drm_device *dev) | |||
1068 | NV_INFO(dev, "PGRAPH - ch %d (0x%010llx) subc %d " | 1066 | NV_INFO(dev, "PGRAPH - ch %d (0x%010llx) subc %d " |
1069 | "class 0x%04x mthd 0x%04x data 0x%08x\n", | 1067 | "class 0x%04x mthd 0x%04x data 0x%08x\n", |
1070 | chid, inst, subc, class, mthd, data); | 1068 | chid, inst, subc, class, mthd, data); |
1069 | nv50_fb_vm_trap(dev, 1); | ||
1071 | } | 1070 | } |
1072 | } | 1071 | } |
1073 | 1072 | ||