aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2012-08-23 01:32:38 -0400
committerBen Skeggs <bskeggs@redhat.com>2012-10-02 23:13:08 -0400
commitec6566f3230474131f6bd6d1503a7eeeda4657b9 (patch)
tree7515cd83d8be96c0a9b93f7e6a13d8fd00fe3ad3
parent1978a2f280563427bb675b3197391745aef73424 (diff)
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: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r--drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc26
-rw-r--r--drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h445
2 files changed, 189 insertions, 282 deletions
diff --git a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc
index 816ae57343f8..138eeaa28665 100644
--- a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc
+++ b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc
@@ -468,28 +468,6 @@ ih:
468 bclr $flags $p0 468 bclr $flags $p0
469 iret 469 iret
470 470
471// Not real sure, but, MEM_CMD 7 will hang forever if this isn't done
472ctx_4160s:
473 mov $r14 0x4160
474 sethi $r14 0x400000
475 mov $r15 1
476 call #nv_wr32
477 ctx_4160s_wait:
478 call #nv_rd32
479 xbit $r15 $r15 4
480 bra e #ctx_4160s_wait
481 ret
482
483// Without clearing again at end of xfer, some things cause PGRAPH
484// to hang with STATUS=0x00000007 until it's cleared.. fbcon can
485// still function with it set however...
486ctx_4160c:
487 mov $r14 0x4160
488 sethi $r14 0x400000
489 clear b32 $r15
490 call #nv_wr32
491 ret
492
493// Again, not real sure 471// Again, not real sure
494// 472//
495// In: $r15 value to set 0x404170 to 473// In: $r15 value to set 0x404170 to
@@ -630,7 +608,6 @@ ctx_load:
630// In: $r2 channel address 608// In: $r2 channel address
631// 609//
632ctx_chan: 610ctx_chan:
633 call #ctx_4160s
634 call #ctx_load 611 call #ctx_load
635 mov $r10 12 // DONE_UNK12 612 mov $r10 12 // DONE_UNK12
636 call #wait_donez 613 call #wait_donez
@@ -642,7 +619,6 @@ ctx_chan:
642 iord $r2 I[$r1 + 0x000] 619 iord $r2 I[$r1 + 0x000]
643 or $r2 $r2 620 or $r2 $r2
644 bra ne #ctx_chan_wait 621 bra ne #ctx_chan_wait
645 call #ctx_4160c
646 ret 622 ret
647 623
648// Execute per-context state overrides list 624// Execute per-context state overrides list
@@ -709,7 +685,6 @@ ctx_xfer:
709 ctx_xfer_pre: 685 ctx_xfer_pre:
710 mov $r15 0x10 686 mov $r15 0x10
711 call #ctx_86c 687 call #ctx_86c
712 call #ctx_4160s
713 bra not $p1 #ctx_xfer_exec 688 bra not $p1 #ctx_xfer_exec
714 689
715 ctx_xfer_pre_load: 690 ctx_xfer_pre_load:
@@ -798,7 +773,6 @@ ctx_xfer:
798 call #ctx_mmio_exec 773 call #ctx_mmio_exec
799 774
800 ctx_xfer_no_post_mmio: 775 ctx_xfer_no_post_mmio:
801 call #ctx_4160c
802 776
803 ctx_xfer_done: 777 ctx_xfer_done:
804 ret 778 ret
diff --git a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
index 05c3995639a3..decf0c60ca3b 100644
--- a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
+++ b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
@@ -553,7 +553,7 @@ uint32_t nve0_grhub_code[] = {
553 0xd00799f0, 553 0xd00799f0,
554 0x32f40089, 554 0x32f40089,
555 0x0231f401, 555 0x0231f401,
556 0x082921f5, 556 0x07fb21f5,
557 0x085c87f1, 557 0x085c87f1,
558 0xbd0684b6, 558 0xbd0684b6,
559 0x0799f094, 559 0x0799f094,
@@ -563,7 +563,7 @@ uint32_t nve0_grhub_code[] = {
563 0x99f094bd, 563 0x99f094bd,
564 0x0089d006, 564 0x0089d006,
565 0xf50131f4, 565 0xf50131f4,
566 0xf1082921, 566 0xf107fb21,
567 0xb6085c87, 567 0xb6085c87,
568 0x94bd0684, 568 0x94bd0684,
569 0xd00699f0, 569 0xd00699f0,
@@ -572,7 +572,7 @@ uint32_t nve0_grhub_code[] = {
572 0xb920f931, 572 0xb920f931,
573 0x32f40212, 573 0x32f40212,
574 0x0232f401, 574 0x0232f401,
575 0x082921f5, 575 0x07fb21f5,
576 0x17f120fc, 576 0x17f120fc,
577 0x14b60b00, 577 0x14b60b00,
578 0x0012d006, 578 0x0012d006,
@@ -582,7 +582,7 @@ uint32_t nve0_grhub_code[] = {
582 0x0131f40d, 582 0x0131f40d,
583 0xf50232f4, 583 0xf50232f4,
584/* 0x0537: chsw_done */ 584/* 0x0537: chsw_done */
585 0xf1082921, 585 0xf107fb21,
586 0xb60b0c17, 586 0xb60b0c17,
587 0x27f00614, 587 0x27f00614,
588 0x0012d001, 588 0x0012d001,
@@ -594,7 +594,7 @@ uint32_t nve0_grhub_code[] = {
594 0xb0ff200e, 594 0xb0ff200e,
595 0x1bf401e4, 595 0x1bf401e4,
596 0x02f2b90d, 596 0x02f2b90d,
597 0x07b521f5, 597 0x078f21f5,
598/* 0x0567: main_not_ctx_chan */ 598/* 0x0567: main_not_ctx_chan */
599 0xb0420ef4, 599 0xb0420ef4,
600 0x1bf402e4, 600 0x1bf402e4,
@@ -604,7 +604,7 @@ uint32_t nve0_grhub_code[] = {
604 0x0089d007, 604 0x0089d007,
605 0xf40132f4, 605 0xf40132f4,
606 0x21f50232, 606 0x21f50232,
607 0x87f10829, 607 0x87f107fb,
608 0x84b6085c, 608 0x84b6085c,
609 0xf094bd06, 609 0xf094bd06,
610 0x89d00799, 610 0x89d00799,
@@ -653,267 +653,200 @@ uint32_t nve0_grhub_code[] = {
653 0xfe80fc90, 653 0xfe80fc90,
654 0x80fc0088, 654 0x80fc0088,
655 0xf80032f4, 655 0xf80032f4,
656/* 0x0631: ctx_4160s */ 656/* 0x0631: ctx_4170s */
657 0x60e7f101, 657 0x70e7f101,
658 0x40e3f041, 658 0x40e3f041,
659 0xf401f7f0, 659 0xf410f5f0,
660/* 0x063e: ctx_4160s_wait */
661 0x21f48d21,
662 0x04ffc868,
663 0xf8fa0bf4,
664/* 0x0649: ctx_4160c */
665 0x60e7f100,
666 0x40e3f041,
667 0x21f4f4bd,
668/* 0x0657: ctx_4170s */
669 0xf100f88d,
670 0xf04170e7,
671 0xf5f040e3,
672 0x8d21f410,
673/* 0x0666: ctx_4170w */
674 0xe7f100f8,
675 0xe3f04170,
676 0x6821f440,
677 0xf410f4f0,
678 0x00f8f31b,
679/* 0x0678: ctx_redswitch */
680 0x0614e7f1,
681 0xf106e4b6,
682 0xd00270f7,
683 0xf7f000ef,
684/* 0x0689: ctx_redswitch_delay */
685 0x01f2b608,
686 0xf1fd1bf4,
687 0xd00770f7,
688 0x00f800ef,
689/* 0x0698: ctx_86c */
690 0x086ce7f1,
691 0xd006e4b6,
692 0xe7f100ef,
693 0xe3f08a14,
694 0x8d21f440,
695 0xa86ce7f1,
696 0xf441e3f0,
697 0x00f88d21, 660 0x00f88d21,
698/* 0x06b8: ctx_load */ 661/* 0x0640: ctx_4170w */
699 0x083c87f1, 662 0x4170e7f1,
700 0xbd0684b6, 663 0xf440e3f0,
701 0x0599f094, 664 0xf4f06821,
702 0xf00089d0, 665 0xf31bf410,
703 0x21f40ca7, 666/* 0x0652: ctx_redswitch */
704 0x2417f1c9, 667 0xe7f100f8,
705 0x0614b60a, 668 0xe4b60614,
706 0xf10010d0, 669 0x70f7f106,
707 0xb60b0037, 670 0x00efd002,
708 0x32d00634, 671/* 0x0663: ctx_redswitch_delay */
709 0x0c17f140, 672 0xb608f7f0,
710 0x0614b60a, 673 0x1bf401f2,
711 0xd00747f0, 674 0x70f7f1fd,
712 0x14d00012, 675 0x00efd007,
713/* 0x06f1: ctx_chan_wait_0 */ 676/* 0x0672: ctx_86c */
714 0x4014cf40, 677 0xe7f100f8,
715 0xf41f44f0, 678 0xe4b6086c,
716 0x32d0fa1b, 679 0x00efd006,
717 0x000bfe00, 680 0x8a14e7f1,
718 0xb61f2af0, 681 0xf440e3f0,
719 0x20b60424, 682 0xe7f18d21,
720 0x3c87f102, 683 0xe3f0a86c,
721 0x0684b608, 684 0x8d21f441,
722 0x99f094bd, 685/* 0x0692: ctx_load */
723 0x0089d008, 686 0x87f100f8,
724 0x0a0417f1, 687 0x84b6083c,
725 0xd00614b6,
726 0x17f10012,
727 0x14b60a20,
728 0x0227f006,
729 0x800023f1,
730 0xf00012d0,
731 0x27f11017,
732 0x23f00300,
733 0x0512fa02,
734 0x87f103f8,
735 0x84b6085c,
736 0xf094bd06, 688 0xf094bd06,
737 0x89d00899, 689 0x89d00599,
738 0xc1019800, 690 0x0ca7f000,
739 0x981814b6, 691 0xf1c921f4,
740 0x25b6c002, 692 0xb60a2417,
741 0x0512fd08, 693 0x10d00614,
742 0xf1160180, 694 0x0037f100,
695 0x0634b60b,
696 0xf14032d0,
697 0xb60a0c17,
698 0x47f00614,
699 0x0012d007,
700/* 0x06cb: ctx_chan_wait_0 */
701 0xcf4014d0,
702 0x44f04014,
703 0xfa1bf41f,
704 0xfe0032d0,
705 0x2af0000b,
706 0x0424b61f,
707 0xf10220b6,
743 0xb6083c87, 708 0xb6083c87,
744 0x94bd0684, 709 0x94bd0684,
745 0xd00999f0, 710 0xd00899f0,
746 0x27f10089, 711 0x17f10089,
747 0x24b60a04, 712 0x14b60a04,
748 0x0021d006, 713 0x0012d006,
749 0xf10127f0, 714 0x0a2017f1,
750 0xb60a2017, 715 0xf00614b6,
751 0x12d00614, 716 0x23f10227,
752 0x0017f100, 717 0x12d08000,
753 0x0613f002, 718 0x1017f000,
754 0xf80501fa, 719 0x030027f1,
755 0x5c87f103, 720 0xfa0223f0,
721 0x03f80512,
722 0x085c87f1,
723 0xbd0684b6,
724 0x0899f094,
725 0x980089d0,
726 0x14b6c101,
727 0xc0029818,
728 0xfd0825b6,
729 0x01800512,
730 0x3c87f116,
756 0x0684b608, 731 0x0684b608,
757 0x99f094bd, 732 0x99f094bd,
758 0x0089d009, 733 0x0089d009,
759 0x085c87f1, 734 0x0a0427f1,
760 0xbd0684b6, 735 0xd00624b6,
761 0x0599f094, 736 0x27f00021,
762 0xf80089d0, 737 0x2017f101,
763/* 0x07b5: ctx_chan */ 738 0x0614b60a,
764 0x3121f500, 739 0xf10012d0,
765 0xb821f506,
766 0x0ca7f006,
767 0xf1c921f4,
768 0xb60a1017,
769 0x27f00614,
770 0x0012d005,
771/* 0x07d0: ctx_chan_wait */
772 0xfd0012cf,
773 0x1bf40522,
774 0x4921f5fa,
775/* 0x07df: ctx_mmio_exec */
776 0x9800f806,
777 0x27f18103,
778 0x24b60a04,
779 0x0023d006,
780/* 0x07ee: ctx_mmio_loop */
781 0x34c434bd,
782 0x0f1bf4ff,
783 0x030057f1,
784 0xfa0653f0,
785 0x03f80535,
786/* 0x0800: ctx_mmio_pull */
787 0x98c04e98,
788 0x21f4c14f,
789 0x0830b68d,
790 0xf40112b6,
791/* 0x0812: ctx_mmio_done */
792 0x0398df1b,
793 0x0023d016,
794 0xf1800080,
795 0xf0020017, 740 0xf0020017,
796 0x01fa0613, 741 0x01fa0613,
797 0xf803f806, 742 0xf103f805,
798/* 0x0829: ctx_xfer */ 743 0xb6085c87,
799 0x0611f400, 744 0x94bd0684,
800/* 0x082f: ctx_xfer_pre */ 745 0xd00999f0,
801 0xf01102f4, 746 0x87f10089,
802 0x21f510f7, 747 0x84b6085c,
803 0x21f50698, 748 0xf094bd06,
804 0x11f40631, 749 0x89d00599,
805/* 0x083d: ctx_xfer_pre_load */ 750/* 0x078f: ctx_chan */
806 0x02f7f01c, 751 0xf500f800,
807 0x065721f5, 752 0xf0069221,
808 0x066621f5, 753 0x21f40ca7,
809 0x067821f5, 754 0x1017f1c9,
810 0x21f5f4bd, 755 0x0614b60a,
811 0x21f50657, 756 0xd00527f0,
812/* 0x0856: ctx_xfer_exec */ 757/* 0x07a6: ctx_chan_wait */
813 0x019806b8, 758 0x12cf0012,
814 0x1427f116, 759 0x0522fd00,
815 0x0624b604, 760 0xf8fa1bf4,
816 0xf10020d0, 761/* 0x07b1: ctx_mmio_exec */
817 0xf0a500e7, 762 0x81039800,
818 0x1fb941e3, 763 0x0a0427f1,
819 0x8d21f402, 764 0xd00624b6,
820 0xf004e0b6, 765 0x34bd0023,
821 0x2cf001fc, 766/* 0x07c0: ctx_mmio_loop */
822 0x0124b602, 767 0xf4ff34c4,
823 0xf405f2fd, 768 0x57f10f1b,
824 0x17f18d21, 769 0x53f00300,
825 0x13f04afc, 770 0x0535fa06,
826 0x0c27f002, 771/* 0x07d2: ctx_mmio_pull */
827 0xf50012d0, 772 0x4e9803f8,
828 0xf1020721, 773 0xc14f98c0,
829 0xf047fc27, 774 0xb68d21f4,
830 0x20d00223, 775 0x12b60830,
831 0x012cf000, 776 0xdf1bf401,
832 0xd00320b6, 777/* 0x07e4: ctx_mmio_done */
833 0xacf00012, 778 0xd0160398,
834 0x06a5f001, 779 0x00800023,
835 0x9800b7f0, 780 0x0017f180,
836 0x0d98140c, 781 0x0613f002,
837 0x00e7f015, 782 0xf80601fa,
838 0x015c21f5, 783/* 0x07fb: ctx_xfer */
839 0xf508a7f0, 784 0xf400f803,
840 0xf5010321, 785 0x02f40611,
841 0xf4020721, 786/* 0x0801: ctx_xfer_pre */
842 0xa7f02201, 787 0x10f7f00d,
843 0xc921f40c, 788 0x067221f5,
844 0x0a1017f1, 789/* 0x080b: ctx_xfer_pre_load */
845 0xf00614b6, 790 0xf01c11f4,
846 0x12d00527, 791 0x21f502f7,
847/* 0x08dd: ctx_xfer_post_save_wait */ 792 0x21f50631,
848 0x0012cf00, 793 0x21f50640,
849 0xf40522fd, 794 0xf4bd0652,
850 0x02f4fa1b, 795 0x063121f5,
851/* 0x08e9: ctx_xfer_post */ 796 0x069221f5,
852 0x02f7f032, 797/* 0x0824: ctx_xfer_exec */
853 0x065721f5, 798 0xf1160198,
799 0xb6041427,
800 0x20d00624,
801 0x00e7f100,
802 0x41e3f0a5,
803 0xf4021fb9,
804 0xe0b68d21,
805 0x01fcf004,
806 0xb6022cf0,
807 0xf2fd0124,
808 0x8d21f405,
809 0x4afc17f1,
810 0xf00213f0,
811 0x12d00c27,
812 0x0721f500,
813 0xfc27f102,
814 0x0223f047,
815 0xf00020d0,
816 0x20b6012c,
817 0x0012d003,
818 0xf001acf0,
819 0xb7f006a5,
820 0x140c9800,
821 0xf0150d98,
822 0x21f500e7,
823 0xa7f0015c,
824 0x0321f508,
825 0x0721f501,
826 0x2201f402,
827 0xf40ca7f0,
828 0x17f1c921,
829 0x14b60a10,
830 0x0527f006,
831/* 0x08ab: ctx_xfer_post_save_wait */
832 0xcf0012d0,
833 0x22fd0012,
834 0xfa1bf405,
835/* 0x08b7: ctx_xfer_post */
836 0xf02e02f4,
837 0x21f502f7,
838 0xf4bd0631,
839 0x067221f5,
840 0x022621f5,
841 0x064021f5,
854 0x21f5f4bd, 842 0x21f5f4bd,
855 0x21f50698, 843 0x11f40631,
856 0x21f50226, 844 0x80019810,
857 0xf4bd0666, 845 0xf40511fd,
858 0x065721f5, 846 0x21f5070b,
859 0x981011f4, 847/* 0x08e2: ctx_xfer_no_post_mmio */
860 0x11fd8001, 848/* 0x08e2: ctx_xfer_done */
861 0x070bf405, 849 0x00f807b1,
862 0x07df21f5,
863/* 0x0914: ctx_xfer_no_post_mmio */
864 0x064921f5,
865/* 0x0918: ctx_xfer_done */
866 0x000000f8,
867 0x00000000,
868 0x00000000,
869 0x00000000,
870 0x00000000,
871 0x00000000,
872 0x00000000,
873 0x00000000,
874 0x00000000,
875 0x00000000,
876 0x00000000,
877 0x00000000,
878 0x00000000,
879 0x00000000,
880 0x00000000,
881 0x00000000,
882 0x00000000,
883 0x00000000,
884 0x00000000,
885 0x00000000,
886 0x00000000,
887 0x00000000,
888 0x00000000,
889 0x00000000,
890 0x00000000,
891 0x00000000,
892 0x00000000,
893 0x00000000,
894 0x00000000,
895 0x00000000,
896 0x00000000,
897 0x00000000,
898 0x00000000,
899 0x00000000,
900 0x00000000,
901 0x00000000,
902 0x00000000,
903 0x00000000,
904 0x00000000,
905 0x00000000,
906 0x00000000,
907 0x00000000,
908 0x00000000,
909 0x00000000,
910 0x00000000,
911 0x00000000,
912 0x00000000,
913 0x00000000,
914 0x00000000,
915 0x00000000,
916 0x00000000,
917 0x00000000, 850 0x00000000,
918 0x00000000, 851 0x00000000,
919 0x00000000, 852 0x00000000,