@@ -800,20 +800,93 @@ static int kvmppc_get_one_reg_hv(struct kvm_vcpu *vcpu, u64 id,
800800 case KVM_REG_PPC_UAMOR :
801801 * val = get_reg_val (id , vcpu -> arch .uamor );
802802 break ;
803- case KVM_REG_PPC_MMCR0 ... KVM_REG_PPC_MMCRA :
803+ case KVM_REG_PPC_MMCR0 ... KVM_REG_PPC_MMCRS :
804804 i = id - KVM_REG_PPC_MMCR0 ;
805805 * val = get_reg_val (id , vcpu -> arch .mmcr [i ]);
806806 break ;
807807 case KVM_REG_PPC_PMC1 ... KVM_REG_PPC_PMC8 :
808808 i = id - KVM_REG_PPC_PMC1 ;
809809 * val = get_reg_val (id , vcpu -> arch .pmc [i ]);
810810 break ;
811+ case KVM_REG_PPC_SPMC1 ... KVM_REG_PPC_SPMC2 :
812+ i = id - KVM_REG_PPC_SPMC1 ;
813+ * val = get_reg_val (id , vcpu -> arch .spmc [i ]);
814+ break ;
811815 case KVM_REG_PPC_SIAR :
812816 * val = get_reg_val (id , vcpu -> arch .siar );
813817 break ;
814818 case KVM_REG_PPC_SDAR :
815819 * val = get_reg_val (id , vcpu -> arch .sdar );
816820 break ;
821+ case KVM_REG_PPC_SIER :
822+ * val = get_reg_val (id , vcpu -> arch .sier );
823+ break ;
824+ case KVM_REG_PPC_IAMR :
825+ * val = get_reg_val (id , vcpu -> arch .iamr );
826+ break ;
827+ case KVM_REG_PPC_TFHAR :
828+ * val = get_reg_val (id , vcpu -> arch .tfhar );
829+ break ;
830+ case KVM_REG_PPC_TFIAR :
831+ * val = get_reg_val (id , vcpu -> arch .tfiar );
832+ break ;
833+ case KVM_REG_PPC_TEXASR :
834+ * val = get_reg_val (id , vcpu -> arch .texasr );
835+ break ;
836+ case KVM_REG_PPC_FSCR :
837+ * val = get_reg_val (id , vcpu -> arch .fscr );
838+ break ;
839+ case KVM_REG_PPC_PSPB :
840+ * val = get_reg_val (id , vcpu -> arch .pspb );
841+ break ;
842+ case KVM_REG_PPC_EBBHR :
843+ * val = get_reg_val (id , vcpu -> arch .ebbhr );
844+ break ;
845+ case KVM_REG_PPC_EBBRR :
846+ * val = get_reg_val (id , vcpu -> arch .ebbrr );
847+ break ;
848+ case KVM_REG_PPC_BESCR :
849+ * val = get_reg_val (id , vcpu -> arch .bescr );
850+ break ;
851+ case KVM_REG_PPC_TAR :
852+ * val = get_reg_val (id , vcpu -> arch .tar );
853+ break ;
854+ case KVM_REG_PPC_DPDES :
855+ * val = get_reg_val (id , vcpu -> arch .vcore -> dpdes );
856+ break ;
857+ case KVM_REG_PPC_DAWR :
858+ * val = get_reg_val (id , vcpu -> arch .dawr );
859+ break ;
860+ case KVM_REG_PPC_DAWRX :
861+ * val = get_reg_val (id , vcpu -> arch .dawrx );
862+ break ;
863+ case KVM_REG_PPC_CIABR :
864+ * val = get_reg_val (id , vcpu -> arch .ciabr );
865+ break ;
866+ case KVM_REG_PPC_IC :
867+ * val = get_reg_val (id , vcpu -> arch .ic );
868+ break ;
869+ case KVM_REG_PPC_VTB :
870+ * val = get_reg_val (id , vcpu -> arch .vtb );
871+ break ;
872+ case KVM_REG_PPC_CSIGR :
873+ * val = get_reg_val (id , vcpu -> arch .csigr );
874+ break ;
875+ case KVM_REG_PPC_TACR :
876+ * val = get_reg_val (id , vcpu -> arch .tacr );
877+ break ;
878+ case KVM_REG_PPC_TCSCR :
879+ * val = get_reg_val (id , vcpu -> arch .tcscr );
880+ break ;
881+ case KVM_REG_PPC_PID :
882+ * val = get_reg_val (id , vcpu -> arch .pid );
883+ break ;
884+ case KVM_REG_PPC_ACOP :
885+ * val = get_reg_val (id , vcpu -> arch .acop );
886+ break ;
887+ case KVM_REG_PPC_WORT :
888+ * val = get_reg_val (id , vcpu -> arch .wort );
889+ break ;
817890 case KVM_REG_PPC_VPA_ADDR :
818891 spin_lock (& vcpu -> arch .vpa_update_lock );
819892 * val = get_reg_val (id , vcpu -> arch .vpa .next_gpa );
@@ -882,20 +955,96 @@ static int kvmppc_set_one_reg_hv(struct kvm_vcpu *vcpu, u64 id,
882955 case KVM_REG_PPC_UAMOR :
883956 vcpu -> arch .uamor = set_reg_val (id , * val );
884957 break ;
885- case KVM_REG_PPC_MMCR0 ... KVM_REG_PPC_MMCRA :
958+ case KVM_REG_PPC_MMCR0 ... KVM_REG_PPC_MMCRS :
886959 i = id - KVM_REG_PPC_MMCR0 ;
887960 vcpu -> arch .mmcr [i ] = set_reg_val (id , * val );
888961 break ;
889962 case KVM_REG_PPC_PMC1 ... KVM_REG_PPC_PMC8 :
890963 i = id - KVM_REG_PPC_PMC1 ;
891964 vcpu -> arch .pmc [i ] = set_reg_val (id , * val );
892965 break ;
966+ case KVM_REG_PPC_SPMC1 ... KVM_REG_PPC_SPMC2 :
967+ i = id - KVM_REG_PPC_SPMC1 ;
968+ vcpu -> arch .spmc [i ] = set_reg_val (id , * val );
969+ break ;
893970 case KVM_REG_PPC_SIAR :
894971 vcpu -> arch .siar = set_reg_val (id , * val );
895972 break ;
896973 case KVM_REG_PPC_SDAR :
897974 vcpu -> arch .sdar = set_reg_val (id , * val );
898975 break ;
976+ case KVM_REG_PPC_SIER :
977+ vcpu -> arch .sier = set_reg_val (id , * val );
978+ break ;
979+ case KVM_REG_PPC_IAMR :
980+ vcpu -> arch .iamr = set_reg_val (id , * val );
981+ break ;
982+ case KVM_REG_PPC_TFHAR :
983+ vcpu -> arch .tfhar = set_reg_val (id , * val );
984+ break ;
985+ case KVM_REG_PPC_TFIAR :
986+ vcpu -> arch .tfiar = set_reg_val (id , * val );
987+ break ;
988+ case KVM_REG_PPC_TEXASR :
989+ vcpu -> arch .texasr = set_reg_val (id , * val );
990+ break ;
991+ case KVM_REG_PPC_FSCR :
992+ vcpu -> arch .fscr = set_reg_val (id , * val );
993+ break ;
994+ case KVM_REG_PPC_PSPB :
995+ vcpu -> arch .pspb = set_reg_val (id , * val );
996+ break ;
997+ case KVM_REG_PPC_EBBHR :
998+ vcpu -> arch .ebbhr = set_reg_val (id , * val );
999+ break ;
1000+ case KVM_REG_PPC_EBBRR :
1001+ vcpu -> arch .ebbrr = set_reg_val (id , * val );
1002+ break ;
1003+ case KVM_REG_PPC_BESCR :
1004+ vcpu -> arch .bescr = set_reg_val (id , * val );
1005+ break ;
1006+ case KVM_REG_PPC_TAR :
1007+ vcpu -> arch .tar = set_reg_val (id , * val );
1008+ break ;
1009+ case KVM_REG_PPC_DPDES :
1010+ vcpu -> arch .vcore -> dpdes = set_reg_val (id , * val );
1011+ break ;
1012+ case KVM_REG_PPC_DAWR :
1013+ vcpu -> arch .dawr = set_reg_val (id , * val );
1014+ break ;
1015+ case KVM_REG_PPC_DAWRX :
1016+ vcpu -> arch .dawrx = set_reg_val (id , * val ) & ~DAWRX_HYP ;
1017+ break ;
1018+ case KVM_REG_PPC_CIABR :
1019+ vcpu -> arch .ciabr = set_reg_val (id , * val );
1020+ /* Don't allow setting breakpoints in hypervisor code */
1021+ if ((vcpu -> arch .ciabr & CIABR_PRIV ) == CIABR_PRIV_HYPER )
1022+ vcpu -> arch .ciabr &= ~CIABR_PRIV ; /* disable */
1023+ break ;
1024+ case KVM_REG_PPC_IC :
1025+ vcpu -> arch .ic = set_reg_val (id , * val );
1026+ break ;
1027+ case KVM_REG_PPC_VTB :
1028+ vcpu -> arch .vtb = set_reg_val (id , * val );
1029+ break ;
1030+ case KVM_REG_PPC_CSIGR :
1031+ vcpu -> arch .csigr = set_reg_val (id , * val );
1032+ break ;
1033+ case KVM_REG_PPC_TACR :
1034+ vcpu -> arch .tacr = set_reg_val (id , * val );
1035+ break ;
1036+ case KVM_REG_PPC_TCSCR :
1037+ vcpu -> arch .tcscr = set_reg_val (id , * val );
1038+ break ;
1039+ case KVM_REG_PPC_PID :
1040+ vcpu -> arch .pid = set_reg_val (id , * val );
1041+ break ;
1042+ case KVM_REG_PPC_ACOP :
1043+ vcpu -> arch .acop = set_reg_val (id , * val );
1044+ break ;
1045+ case KVM_REG_PPC_WORT :
1046+ vcpu -> arch .wort = set_reg_val (id , * val );
1047+ break ;
8991048 case KVM_REG_PPC_VPA_ADDR :
9001049 addr = set_reg_val (id , * val );
9011050 r = - EINVAL ;
0 commit comments