@@ -791,15 +791,15 @@ static u64 reset_pmu_reg(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r)
791791 mask |= GENMASK (n - 1 , 0 );
792792
793793 reset_unknown (vcpu , r );
794- __vcpu_sys_reg (vcpu , r -> reg ) &= mask ;
794+ __vcpu_rmw_sys_reg (vcpu , r -> reg , & = , mask ) ;
795795
796796 return __vcpu_sys_reg (vcpu , r -> reg );
797797}
798798
799799static u64 reset_pmevcntr (struct kvm_vcpu * vcpu , const struct sys_reg_desc * r )
800800{
801801 reset_unknown (vcpu , r );
802- __vcpu_sys_reg (vcpu , r -> reg ) &= GENMASK (31 , 0 );
802+ __vcpu_rmw_sys_reg (vcpu , r -> reg , & = , GENMASK (31 , 0 ) );
803803
804804 return __vcpu_sys_reg (vcpu , r -> reg );
805805}
@@ -811,15 +811,15 @@ static u64 reset_pmevtyper(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r)
811811 return 0 ;
812812
813813 reset_unknown (vcpu , r );
814- __vcpu_sys_reg (vcpu , r -> reg ) &= kvm_pmu_evtyper_mask (vcpu -> kvm );
814+ __vcpu_rmw_sys_reg (vcpu , r -> reg , & = , kvm_pmu_evtyper_mask (vcpu -> kvm ) );
815815
816816 return __vcpu_sys_reg (vcpu , r -> reg );
817817}
818818
819819static u64 reset_pmselr (struct kvm_vcpu * vcpu , const struct sys_reg_desc * r )
820820{
821821 reset_unknown (vcpu , r );
822- __vcpu_sys_reg (vcpu , r -> reg ) &= PMSELR_EL0_SEL_MASK ;
822+ __vcpu_rmw_sys_reg (vcpu , r -> reg , & = , PMSELR_EL0_SEL_MASK ) ;
823823
824824 return __vcpu_sys_reg (vcpu , r -> reg );
825825}
@@ -1103,10 +1103,10 @@ static bool access_pmcnten(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
11031103 val = p -> regval & mask ;
11041104 if (r -> Op2 & 0x1 )
11051105 /* accessing PMCNTENSET_EL0 */
1106- __vcpu_sys_reg (vcpu , PMCNTENSET_EL0 ) |= val ;
1106+ __vcpu_rmw_sys_reg (vcpu , PMCNTENSET_EL0 , |=, val ) ;
11071107 else
11081108 /* accessing PMCNTENCLR_EL0 */
1109- __vcpu_sys_reg (vcpu , PMCNTENSET_EL0 ) &= ~val ;
1109+ __vcpu_rmw_sys_reg (vcpu , PMCNTENSET_EL0 , & = , ~val ) ;
11101110
11111111 kvm_pmu_reprogram_counter_mask (vcpu , val );
11121112 } else {
@@ -1129,10 +1129,10 @@ static bool access_pminten(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
11291129
11301130 if (r -> Op2 & 0x1 )
11311131 /* accessing PMINTENSET_EL1 */
1132- __vcpu_sys_reg (vcpu , PMINTENSET_EL1 ) |= val ;
1132+ __vcpu_rmw_sys_reg (vcpu , PMINTENSET_EL1 , |=, val ) ;
11331133 else
11341134 /* accessing PMINTENCLR_EL1 */
1135- __vcpu_sys_reg (vcpu , PMINTENSET_EL1 ) &= ~val ;
1135+ __vcpu_rmw_sys_reg (vcpu , PMINTENSET_EL1 , & = , ~val ) ;
11361136 } else {
11371137 p -> regval = __vcpu_sys_reg (vcpu , PMINTENSET_EL1 );
11381138 }
@@ -1151,10 +1151,10 @@ static bool access_pmovs(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
11511151 if (p -> is_write ) {
11521152 if (r -> CRm & 0x2 )
11531153 /* accessing PMOVSSET_EL0 */
1154- __vcpu_sys_reg (vcpu , PMOVSSET_EL0 ) |= (p -> regval & mask );
1154+ __vcpu_rmw_sys_reg (vcpu , PMOVSSET_EL0 , |=, (p -> regval & mask ) );
11551155 else
11561156 /* accessing PMOVSCLR_EL0 */
1157- __vcpu_sys_reg (vcpu , PMOVSSET_EL0 ) &= ~(p -> regval & mask );
1157+ __vcpu_rmw_sys_reg (vcpu , PMOVSSET_EL0 , & = , ~(p -> regval & mask ) );
11581158 } else {
11591159 p -> regval = __vcpu_sys_reg (vcpu , PMOVSSET_EL0 );
11601160 }
@@ -4786,7 +4786,7 @@ void kvm_reset_sys_regs(struct kvm_vcpu *vcpu)
47864786 r -> reset (vcpu , r );
47874787
47884788 if (r -> reg >= __SANITISED_REG_START__ && r -> reg < NR_SYS_REGS )
4789- ( void ) __vcpu_sys_reg ( vcpu , r -> reg );
4789+ __vcpu_rmw_sys_reg ( vcpu , r -> reg , |=, 0 );
47904790 }
47914791
47924792 set_bit (KVM_ARCH_FLAG_ID_REGS_INITIALIZED , & kvm -> arch .flags );
0 commit comments