@@ -73,8 +73,14 @@ static inline void __sysreg_save_el1_state(struct kvm_cpu_context *ctxt)
73
73
ctxt_sys_reg (ctxt , TTBR0_EL1 ) = read_sysreg_el1 (SYS_TTBR0 );
74
74
ctxt_sys_reg (ctxt , TTBR1_EL1 ) = read_sysreg_el1 (SYS_TTBR1 );
75
75
ctxt_sys_reg (ctxt , TCR_EL1 ) = read_sysreg_el1 (SYS_TCR );
76
- if (ctxt_has_tcrx (ctxt ))
76
+ if (ctxt_has_tcrx (ctxt )) {
77
77
ctxt_sys_reg (ctxt , TCR2_EL1 ) = read_sysreg_el1 (SYS_TCR2 );
78
+
79
+ if (ctxt_has_s1pie (ctxt )) {
80
+ ctxt_sys_reg (ctxt , PIR_EL1 ) = read_sysreg_el1 (SYS_PIR );
81
+ ctxt_sys_reg (ctxt , PIRE0_EL1 ) = read_sysreg_el1 (SYS_PIRE0 );
82
+ }
83
+ }
78
84
ctxt_sys_reg (ctxt , ESR_EL1 ) = read_sysreg_el1 (SYS_ESR );
79
85
ctxt_sys_reg (ctxt , AFSR0_EL1 ) = read_sysreg_el1 (SYS_AFSR0 );
80
86
ctxt_sys_reg (ctxt , AFSR1_EL1 ) = read_sysreg_el1 (SYS_AFSR1 );
@@ -84,10 +90,6 @@ static inline void __sysreg_save_el1_state(struct kvm_cpu_context *ctxt)
84
90
ctxt_sys_reg (ctxt , CONTEXTIDR_EL1 ) = read_sysreg_el1 (SYS_CONTEXTIDR );
85
91
ctxt_sys_reg (ctxt , AMAIR_EL1 ) = read_sysreg_el1 (SYS_AMAIR );
86
92
ctxt_sys_reg (ctxt , CNTKCTL_EL1 ) = read_sysreg_el1 (SYS_CNTKCTL );
87
- if (ctxt_has_s1pie (ctxt )) {
88
- ctxt_sys_reg (ctxt , PIR_EL1 ) = read_sysreg_el1 (SYS_PIR );
89
- ctxt_sys_reg (ctxt , PIRE0_EL1 ) = read_sysreg_el1 (SYS_PIRE0 );
90
- }
91
93
ctxt_sys_reg (ctxt , PAR_EL1 ) = read_sysreg_par ();
92
94
ctxt_sys_reg (ctxt , TPIDR_EL1 ) = read_sysreg (tpidr_el1 );
93
95
@@ -149,8 +151,14 @@ static inline void __sysreg_restore_el1_state(struct kvm_cpu_context *ctxt)
149
151
write_sysreg_el1 (ctxt_sys_reg (ctxt , CPACR_EL1 ), SYS_CPACR );
150
152
write_sysreg_el1 (ctxt_sys_reg (ctxt , TTBR0_EL1 ), SYS_TTBR0 );
151
153
write_sysreg_el1 (ctxt_sys_reg (ctxt , TTBR1_EL1 ), SYS_TTBR1 );
152
- if (ctxt_has_tcrx (ctxt ))
154
+ if (ctxt_has_tcrx (ctxt )) {
153
155
write_sysreg_el1 (ctxt_sys_reg (ctxt , TCR2_EL1 ), SYS_TCR2 );
156
+
157
+ if (ctxt_has_s1pie (ctxt )) {
158
+ write_sysreg_el1 (ctxt_sys_reg (ctxt , PIR_EL1 ), SYS_PIR );
159
+ write_sysreg_el1 (ctxt_sys_reg (ctxt , PIRE0_EL1 ), SYS_PIRE0 );
160
+ }
161
+ }
154
162
write_sysreg_el1 (ctxt_sys_reg (ctxt , ESR_EL1 ), SYS_ESR );
155
163
write_sysreg_el1 (ctxt_sys_reg (ctxt , AFSR0_EL1 ), SYS_AFSR0 );
156
164
write_sysreg_el1 (ctxt_sys_reg (ctxt , AFSR1_EL1 ), SYS_AFSR1 );
@@ -160,10 +168,6 @@ static inline void __sysreg_restore_el1_state(struct kvm_cpu_context *ctxt)
160
168
write_sysreg_el1 (ctxt_sys_reg (ctxt , CONTEXTIDR_EL1 ), SYS_CONTEXTIDR );
161
169
write_sysreg_el1 (ctxt_sys_reg (ctxt , AMAIR_EL1 ), SYS_AMAIR );
162
170
write_sysreg_el1 (ctxt_sys_reg (ctxt , CNTKCTL_EL1 ), SYS_CNTKCTL );
163
- if (ctxt_has_s1pie (ctxt )) {
164
- write_sysreg_el1 (ctxt_sys_reg (ctxt , PIR_EL1 ), SYS_PIR );
165
- write_sysreg_el1 (ctxt_sys_reg (ctxt , PIRE0_EL1 ), SYS_PIRE0 );
166
- }
167
171
write_sysreg (ctxt_sys_reg (ctxt , PAR_EL1 ), par_el1 );
168
172
write_sysreg (ctxt_sys_reg (ctxt , TPIDR_EL1 ), tpidr_el1 );
169
173
0 commit comments