Skip to content

Commit 0e85b7d

Browse files
iamjpnmpe
authored andcommitted
KVM: PPC: Always use the GPR accessors
Always use the GPR accessor functions. This will be important later for Nested APIv2 support which requires additional functionality for accessing and modifying VCPU state. Signed-off-by: Jordan Niethe <jniethe5@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://msgid.link/20230914030600.16993-2-jniethe5@gmail.com
1 parent 0bb80ec commit 0e85b7d

File tree

6 files changed

+21
-13
lines changed

6 files changed

+21
-13
lines changed

arch/powerpc/kvm/book3s_64_vio.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -786,12 +786,12 @@ long kvmppc_h_get_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
786786
idx = (ioba >> stt->page_shift) - stt->offset;
787787
page = stt->pages[idx / TCES_PER_PAGE];
788788
if (!page) {
789-
vcpu->arch.regs.gpr[4] = 0;
789+
kvmppc_set_gpr(vcpu, 4, 0);
790790
return H_SUCCESS;
791791
}
792792
tbl = (u64 *)page_address(page);
793793

794-
vcpu->arch.regs.gpr[4] = tbl[idx % TCES_PER_PAGE];
794+
kvmppc_set_gpr(vcpu, 4, tbl[idx % TCES_PER_PAGE]);
795795

796796
return H_SUCCESS;
797797
}

arch/powerpc/kvm/book3s_hv.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1267,10 +1267,14 @@ int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu)
12671267
return RESUME_HOST;
12681268
break;
12691269
#endif
1270-
case H_RANDOM:
1271-
if (!arch_get_random_seed_longs(&vcpu->arch.regs.gpr[4], 1))
1270+
case H_RANDOM: {
1271+
unsigned long rand;
1272+
1273+
if (!arch_get_random_seed_longs(&rand, 1))
12721274
ret = H_HARDWARE;
1275+
kvmppc_set_gpr(vcpu, 4, rand);
12731276
break;
1277+
}
12741278
case H_RPT_INVALIDATE:
12751279
ret = kvmppc_h_rpt_invalidate(vcpu, kvmppc_get_gpr(vcpu, 4),
12761280
kvmppc_get_gpr(vcpu, 5),

arch/powerpc/kvm/book3s_hv_builtin.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,13 @@ EXPORT_SYMBOL_GPL(kvmppc_hwrng_present);
182182

183183
long kvmppc_rm_h_random(struct kvm_vcpu *vcpu)
184184
{
185+
unsigned long rand;
186+
185187
if (ppc_md.get_random_seed &&
186-
ppc_md.get_random_seed(&vcpu->arch.regs.gpr[4]))
188+
ppc_md.get_random_seed(&rand)) {
189+
kvmppc_set_gpr(vcpu, 4, rand);
187190
return H_SUCCESS;
191+
}
188192

189193
return H_HARDWARE;
190194
}

arch/powerpc/kvm/book3s_hv_rm_mmu.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -776,8 +776,8 @@ long kvmppc_h_read(struct kvm_vcpu *vcpu, unsigned long flags,
776776
r = rev[i].guest_rpte | (r & (HPTE_R_R | HPTE_R_C));
777777
r &= ~HPTE_GR_RESERVED;
778778
}
779-
vcpu->arch.regs.gpr[4 + i * 2] = v;
780-
vcpu->arch.regs.gpr[5 + i * 2] = r;
779+
kvmppc_set_gpr(vcpu, 4 + i * 2, v);
780+
kvmppc_set_gpr(vcpu, 5 + i * 2, r);
781781
}
782782
return H_SUCCESS;
783783
}
@@ -824,7 +824,7 @@ long kvmppc_h_clear_ref(struct kvm_vcpu *vcpu, unsigned long flags,
824824
}
825825
}
826826
}
827-
vcpu->arch.regs.gpr[4] = gr;
827+
kvmppc_set_gpr(vcpu, 4, gr);
828828
ret = H_SUCCESS;
829829
out:
830830
unlock_hpte(hpte, v & ~HPTE_V_HVLOCK);
@@ -872,7 +872,7 @@ long kvmppc_h_clear_mod(struct kvm_vcpu *vcpu, unsigned long flags,
872872
kvmppc_set_dirty_from_hpte(kvm, v, gr);
873873
}
874874
}
875-
vcpu->arch.regs.gpr[4] = gr;
875+
kvmppc_set_gpr(vcpu, 4, gr);
876876
ret = H_SUCCESS;
877877
out:
878878
unlock_hpte(hpte, v & ~HPTE_V_HVLOCK);

arch/powerpc/kvm/book3s_hv_rm_xics.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ static void icp_rm_down_cppr(struct kvmppc_xics *xics, struct kvmppc_icp *icp,
481481

482482
unsigned long xics_rm_h_xirr_x(struct kvm_vcpu *vcpu)
483483
{
484-
vcpu->arch.regs.gpr[5] = get_tb();
484+
kvmppc_set_gpr(vcpu, 5, get_tb());
485485
return xics_rm_h_xirr(vcpu);
486486
}
487487

@@ -518,7 +518,7 @@ unsigned long xics_rm_h_xirr(struct kvm_vcpu *vcpu)
518518
} while (!icp_rm_try_update(icp, old_state, new_state));
519519

520520
/* Return the result in GPR4 */
521-
vcpu->arch.regs.gpr[4] = xirr;
521+
kvmppc_set_gpr(vcpu, 4, xirr);
522522

523523
return check_too_hard(xics, icp);
524524
}

arch/powerpc/kvm/book3s_xive.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ static unsigned long xive_vm_h_xirr(struct kvm_vcpu *vcpu)
328328
*/
329329

330330
/* Return interrupt and old CPPR in GPR4 */
331-
vcpu->arch.regs.gpr[4] = hirq | (old_cppr << 24);
331+
kvmppc_set_gpr(vcpu, 4, hirq | (old_cppr << 24));
332332

333333
return H_SUCCESS;
334334
}
@@ -364,7 +364,7 @@ static unsigned long xive_vm_h_ipoll(struct kvm_vcpu *vcpu, unsigned long server
364364
hirq = xive_vm_scan_interrupts(xc, pending, scan_poll);
365365

366366
/* Return interrupt and old CPPR in GPR4 */
367-
vcpu->arch.regs.gpr[4] = hirq | (xc->cppr << 24);
367+
kvmppc_set_gpr(vcpu, 4, hirq | (xc->cppr << 24));
368368

369369
return H_SUCCESS;
370370
}

0 commit comments

Comments
 (0)