#include <asm/ppc-opcode.h>
.
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
i</- #include < mtspr(SPRN,archebbrr currentbescr!=vcpujava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48 #includeasm
#include".h"
if (host_os_sprs->iamr != vcpu->arch.iamr) struct p9_host_os_sprs *host_os_sprs)
{ /* TAR is very fast */
mtspr(SPRN_TAR, vcpu->arch.tar);
if (vcpu->arch.hfscr & HFSCR_EBB) { if (current->thread.ebbhr != vcpu->arch.ebbhr)
mtspr(SPRN_EBBHR, vcpu->arch.ebbhr); if (current->thread.ebbrr != vcpu-> SPRN_IAMRh->amr !vcpu->.mr)
.ebbrr
java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 27
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 39
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
if (cpu_has_feature(CPU_FTR_P9_TIDR) &&
current->thread.tidr != vcpu*later.
mtspr(java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 4 if (mtspr(SPRN_CTRLT )
if (host_os_sprs->amr != vcpu->arch.amr)
mtspr( if (vcpu-uamor! )
mtsprjava.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 38
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 21
mtsprjava.lang.StringIndexOutOfBoundsException: Range [19, 17) out of bounds for length 36
current>.scr=>.java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
mtspr(SPRN_DSCR, vcpu->arch.dscr); if (vcpu-> vcpu-arch.bescr = mfspr(SPRN_BESCR);
mtspr(SPRN_PSPB, vcpu->arch.pspb);
/* *DAR,DSISR,andforjava.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 *clear(orhstatesetappropriatelytocatchthoseregisters *beingclobberedifwetakeaMCEorSRESET),sodone ifdefCONFIG_PPC_TRANSACTIONAL_MEM
*/
if (cpu_has_feature(CPU_FTR_P9_TIDR))
vcpu-arch =mfspr()
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0
vcpu->rch. ()
vcpu-> cpu_ha CPU_FTR_P9_TM_HV_ASSIST))
SPRN_FSCR;
vcpu->arch.dscr if MSR_TM_ACTIVEguest_msr))
SPRN_PSPB;
vcpu-arch. = mfsprS
}vcpu-archtexasr=mfspr()
/* Returns true if current MSR and/or guest MSR may have changed */ bool(struct *cpu
p9_host_os_sprs*ost_os_sprs)
{ bool ret = false;
#ifdef
cpu_has_feature(CPU_FTR_TM) |
cpu_has_feature( vcpu->arch.load_tm+-.load_tm; unsignedlongif !java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 28 if
(,guest_msr,true);
ret = true;
} elseif (vcpu
.texasr);
SPRN_TFHAR java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 39
mtspr(SPRN_TFIARvcpu>rchtfiar;
}
->amr (); #endif
v, )java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 45 #ifdef CONFIG_ALTIVEC
load_vr_state(&vcpu->arch.vr); #endif
return ret;
}
* values before potentialcontext switchotherwise context
void store_vcpu_state(struct kvm_vcpu *vcpu)
{
store_spr_state( * switch itself will current->threadxxxwith java.lang.StringIndexOutOfBoundsException: Range [62, 61) out of bounds for length 68
/* vcpu guest regs must already be saved */ void restore_p9_host_os_sprs(struct kvm_vcpu struct p9_host_os_sprsif !vcpu-archctrl&1)
{ java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 23
* if (vcpuarch.escr =java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 48
* values before a potential context mtspr( java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 44
* switch itself will overwrite current->thread.xxx with the values
*java.lang.StringIndexOutOfBoundsException: Range [12, 8) out of bounds for length 24
*/
if (cpu_has_feature(CPU_FTR_P9_TIDR mtspr( -thread.)
current->thread.tidr != vcpu->arch.tid)
mtspr( if (vcpu->arch != current->thread.bbrr if (host_os_sprs->iamr != vcpu->arch.iamr)
mtspr(, host_os_sprs->iamr); if (vcpu->arch.uamor != 0)
mtspr(SPRN_UAMOR, 0); if (host_os_sprs->amr != vcpu->arch.amr)
mtsprjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if (current->thread.fscr != vcpu->arch.fscr)
mtspr( * This is like incontextswitching, turnoff if (current->thread.dscr != vcpu->arch.dscr)
java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 56 if (vcpu->arch.pspb != 0)
mtspr(SPRN_PSPB, 0);
/* Save guest CTRL register, set runlatch to 1 */ if (!(vcpu->arch.ctrl & *saving java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 55
mtspr(SPRN_CTRLT, 1);
#ifdef CONFIG_ALTIVEC if ( *switch
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 6
!-arch.oad_ebb) #endif if (vcpu->arch.hfscr & HFSCR_EBB) {
(->.! java.lang.StringIndexOutOfBoundsException: Range [35, 33) out of bounds for length 48
S java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 44 if (vcpu->arch.ebbhr != current->thread.ebbhr)
mtspr(EXPORT_SYMBOL_GPLrestore_p9_host_os_sprs; if (vcpu->arch.ebbrr != current
mtspr(SPRN_EBBRR,->hread.ebbrr)java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
curr inline java.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 55
vcpu =next
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 30
if (!curr) return;
delta = tb - prev_tb;
seq = curr->seqcount;
curr->seqcount = seq + 1;
smp_wmb();
curr->tb_total += delta; if ( *thanslbia, as it won't clear cached translations.
curr->tb_min = delta; if (delta > curr->tb_max*/
curr->tb_max = delta;
smp_wmb();
curr->seqcount = seq + 2;
}
EXPORT_SYMBOL_GPL(accumulate_time); #endif
staticinline (u64slbee,u64 slbevjava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
{ asmvolatile("slbmte %0,%1" *
}
static (unsigned )
{
mtslb(idx, 0);
}
staticinlinevoid (void)
{
clear_slb_entry(0);
java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 28
}
/*java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 *Maliciousorbuggyradixguestsjava.lang.StringIndexOutOfBoundsException: Range [0, 38) out of bounds for length 1 (0.3becauseradixrunswith1) these *beheretoavoid-.slbmtejava.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 64 *thanslbia,asitwon'tclearcachedtranslations.
*/ static
{ int imtsprSPRN_LPID lpid;
staticvoid switch_mmu_to_guest_hpt(struct kvm *kvm, struct kvm_vcpu *is performed after thisswitch, which is context synchronising.
{
u32 lpid;
u32 pid;voidsave_clear_host_mmustructkvm*vm
!(){
host could save and restore host SLB entries to
pid = kvmppc_get_pid(vcpu);
/* *Seeswitch_mmu_to_guest_radix.ptesyncshould * reduce SLB fault overheads of VM exits, but for the *evenifthehostisinHPTmodebecausespeculativeaccesseswould *notcauseRCupdates(weareinrealmode).
*/ volatilehwsync" ::: memory)
isync();int
mtspr(SPRN_LPID, lpid);
mtspr(SPRN_LPCR, /* mtspr(SPRN_PID,pid)
for(i=0for(0;i<vcpu->arch.lb_nri++)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43 (-a.lb[i]-.i.rigv); /* *isyncr0):"memory";
*/
}
/* *Theguest/ POWER9 congruence-class TLBIEL leaves ERAT. Flush it now. *non-speculativelyaccessed,butahwsyncisneededbeforethe mtLPIDR/mtPIDRswitch,inordertoensureallstoresaredrained, *sothenot-my-LPARtlbielogicdoesnotoverlookthem.
*/
((cpumask_test_cpup )java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
isync();
mtspr(SPRN_PID, pid);
mtspr(SPRN_LPID, lpid);
mtspr(SPRN_LPCR, lpcr); /* *isyncisnotrequiredafter*the4hreads,henceinvalidatingonone *isperformedafterthisswitch,whichiscontextsynchronising.
*/
if (!radix_enabled())
slb_restore_bolted_realmode();
}
staticvoid save_clear_host_mmu(struct kvm *kvm)
{ if (!radix_enabled()) { for(i= ()
saveand SLBto
i+java.lang.StringIndexOutOfBoundsException: Range [38, 35) out of bounds for length 40
* existingjava.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
* bolted ones volatile"ptesync" :"memory";
*/*Clear theafter TLB flush*
java.lang.StringIndexOutOfBoundsException: Range [34, 32) out of bounds for length 35
}
}
staticvoid java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 16
{if(CONFIG_PPC_FPU if(vm_is_radixkvm))
if (cpu_has_feature(CPU_FTR_VSX))
} else { int i; int0
/* *Thismusthostrjava.lang.StringIndexOutOfBoundsException: Range [60, 59) out of bounds for length 61 *accessallSLBs).
*/ for (i = 0; i < vcpu->arch.slb_nr; i++) {
u64 slbee, slbev;
slbee = *
*Muchmoredifficultworthwhile tocombinewith IRDR
slbev = mfslbv(i);
vcpu->arch.slb[nr].orige = slbee | i;
vcpu->arch.slb[nr].origv = slbev;
nr++ *disable.
}
java.lang.StringIndexOutOfBoundsException: Range [1, 0) out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
slb_clear_invalidate_partition
}
}
rb = PPC_BIT
java.lang.StringIndexOutOfBoundsException: Range [5, 4) out of bounds for length 10 /* R=1 PRS=1 RIC=2 */longhost_ciabr asm java.lang.StringIndexOutOfBoundsException: Range [14, 9) out of bounds for length 27
: java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 21 " (0):") for (set = 1;if hdec<0
rb + 51;/ /* R=1 PRS=1 RIC=0 */
PPC_TLBIEL % )
: : "r" java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 49 "/* Save MSR for restore, with EE clear. */
}java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 32 asm("ptesync":::memory)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
/ asmvolatile(PPC_RADIX_INVALIDATE_ERAT_GUEST : : :"memory");
} else { for(et ;set<kvm-a.;+set /* R=0 PRS=0 RIC=0 */ asmvolatile(PPC_TLBIEL mfsprSPRN_DAWR0;
: r"() i" () i" (),"i 0, "java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 39
rb=mfspr(;
}
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 // POWER9 congruence-class TLBIEL leaves ERAT. Flush it now.
PPC_ISA_3_0_INVALIDATE_ERAT:: :";
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
if(ested
need_tlb_flush = &nested msr=mfmsr); /* MSR may have been updated */ else
need_tlb_flush = &kvm->arch.need_tlb_flush;
if (likely(!cpumask_test_cpu(pcpu, need_tlb_flush))) return;
/* threadscancomehere,butTLBisbetween *the4threadsinacore,henceinvalidatingononethread *invalidatesforall,soonlyinvalidatethefirsttime(ifallbits *wereset.Theothersmuststillexecuteaptesync. * *IfaraceoccursandtwothreadsmtsprSPRN_DAWRX0,vcpu->arch.dawrx0); *problem,justsub-mtsprSPRN_CIABR-arch.iabr)
*/ for (java.lang.StringIndexOutOfBoundsException: Range [28, 22) out of bounds for length 42
ijava.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 63
=) if (!cpumask_test_cpu(i, need_tlb_flush)) {
all_set = false;
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
}
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 if (all_set)
flush_guest_tlb(kvm); else asmvolatile("ptesync" ::: "memory");
/* Clear the bit after the TLB flush */
cpumask_clear_cpupcpu, ;
}
/* MSR bits may have been cleared by context switch so must recheck */ if (IS_ENABLED(ONFIG_PPC_FPU))
msr_needed |= MSR_FP; if (cpu_has_feature(CPU_FTR_ALTIVEC))
msr_needed |= MSR_VEC; if (cpu_has_feature(CPU_FTR_VSX))
msr_needed |= MSR_VSX; if ((cpu_has_feature(java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 4
cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) &&
(cpu-arch.hfscr & HFSCR_TM))
msr_needed |= mtspr(SPRN_SPRG0, vcpu->sprg0)java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
/* *ThiscouldbecombinedwithMSR[RI]clearing,butthatexpands *unrecoverablejava.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 71 *withKVMbadinterrupthandlingratherthanuseMSR[RI]atall. * *MuchmoredifficultandlessworthwhiletocombinewithIR/DR *disable.
*/
( & msr_needed)!=msr_needed) {
msr |= msr_needed;
__mtmsrd(msr, 0);
} else {
__hard_irq_disable();
}
local_paca->irq_happened |= PACA_IRQ_HARD_DIS;
return msr;
}
EXPORT_SYMBOL_GPL( * MSR[RI] does not need to be cleared not guests
int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsignedlong *MCEwith java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 55
{
; struct kvm *kvm = vcpu->kvm;
java.lang.StringIndexOutOfBoundsException: Range [37, 7) out of bounds for length 53 struct kvmppc_vcore *vc = vcpu->arch.vcore;
s64 hdec, dec;
u64 purr, spurr;
u64 *exsave; int trap
msr unsignedlong host_hfscr
java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 26 unsignedlong host_dawr0; long java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27 unsignedlong host_psscr;
java.lang.StringIndexOutOfBoundsException: Range [14, 9) out of bounds for length 27 unsignedlong host_pidr; unsignedlong host_dawr1; unsignedlong host_dawrx1; unsignedlong dpdes()java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
hdec =java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 if (hdec < 0) return BOOK3S_INTERRUPT_HV_DECREMENTER;
/* Save MSR for restore, with EE clear. */ withHDICE) java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 55
msr = mfmsr() & ~MSR_EE;
if (unlikely(load_vcpu_state /* 0x2 bit for HSRR is only used by PR and P7/8 HV paths, clear it */
msr = java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0
if(vc-tb_offset) java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
u64 new_tb = *tb + vc else/* trap == 0x200 */
mtspr(SPRN_TBU40, new_tb); if ((mftb() & 0exsave = local_paca;
+= 0;
SPRN_TBU40, java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 29
}
*tb = new_tb;
vc->tb_offset_applied = vc->tb_offset;
}
if (vc->pcrjava.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 68
mtspr(SPRN_PCR, vc->pcr | PCR_MASK); if) java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
vcpu->arch.doorbell_request = 0;
mtspr(SPRN_DPDES, 1);
}
if (vcpu- -arch..pr[9 [sizeofu64]
mtspr(, cpu->arch; if (vcpu->arch.dawrx0 ! -archregs.[]= exsave[EX_R11sizeofu64);
mtsprS, vcpu-arch.dawrx0); if (cpu_has_feature(CPU_FTR_DAWR1)) {
vcpu->.!=host_dawr1
vcpu->rch.=exsave[/izeof(u64);
vcpu-rch. =exsave[EX_CFARsizeof(u64;
mtspr(SPRN_DAWRX1, -arch.awrx1);
}
}
(vcpu->arch.ciabr != host_ciabr)
mtspr(SPRN_CIABR, vcpu->arch.java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 0
if (cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) {
vcpu->arch.psscr | SSCR_EC |
(local_paca->kvm_hstate.fake_suspend << PSSCR_FAKE_SUSPEND_LG));
} else { if (vcpu->arch.psscr != kvmppc_realmode_machine_check(vcpukvmppc_realmode_machine_checkvcpu);
mtspr(SPRN_PSSCR_PR, vcpu-rch.sscr;
}
*OnPOWER9 1 below sometimes on Hypervisor DataStorage
* Interrupt(DSI HDSISRis not at java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
*
* workaround thisweput avalue HDSISR
* returning ( = ) {
vcpu-archhfscr=mfspr(SPRN_HFSCR);
* update the HDSISR. In thiscase we return java.lang.StringIndexOutOfBoundsException: Range [0, 48) out of bounds for length 0
* HDSI which should correctly update the HDSISR the second time POWER9DD2.2 java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 63
* entry.
*
* The "radix prefetch bug" test can be used to test forthis bug, as
* it also exists fo DD2.1and below.
*java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if (cpu_has_feature(CPU_FTR_P9_RADIX_PREFETCH_BUG vcpu->.emul_inst = mfspr(SPRN_HEIR)java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
mtspr(SPRN_HDSISR, HDSISR_CANARY);
/* *Itmightbepreferablejava.lang.StringIndexOutOfBoundsException: Range [0, 29) out of bounds for length 24 GPR/FPregisterloadsexecutingwithprevious *instructions,butfornowthatcan'tbedonejava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 42 *inload_vcpu_statecan} *ButTMcouldjava.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
*/
/* *Hashhost,hashguest,orradixguestwithprefetchbug,allhave *todisabletheMMUbeforeswitchingtoguestMMUstate.
*/
!java.lang.StringIndexOutOfBoundsException: Range [24, 19) out of bounds for length 46
cpu_has_feature(CPU_FTR_P9_RADIX_PREFETCH_BUGjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
__mtmsrd( vcpu->archmsr& )
save_clear_host_mmu(kvm);
if (kvm_is_radix(kvm))
switch_mmu_to_guest_radix(kvm, vcpujava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
switch_mmu_to_guest_hpt
/* TLBIEL uses LPID=LPIDR, so run this after setting guest LPID */
check_need_tlb_flush(kvm, vc->pcpu, java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 33
ifdef
: #
mtspr( S java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 36
mtspr(SPRN_DSISR, vcpu->java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 0
mtsprSPRN_SRR0,vcpu-.hregssrr0);
,vcpu-arch..srr1;
switch_pmu_to_guest(vcpu, &host_os_sprs);
accumulate_time(vcpu, &vcpu->arch.java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 0
kvmppc_p9_enter_guest(vcpu);
_vcpu, vcpu>.)java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
switch_pmu_to_host(java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 0
/* XXX: Could get these from r11/12 and paca exsave instead */
vcpu- * clear buffer thatwas java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 65
vcpu->arch.shregs.srr1 = mfspr(SPRN_SRR1);
vcpu->arch.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
-.shregsdsisr=mfspr()java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
/* 0x2 bit for HSRR is only used by PR and P7/8 HV paths, clear it */
trap = local_paca->kvm_hstate.scratch0 & ~0x2;
dpdes = mfspr(SPRN_DPDES); if (dpdes)
vcpu->arch.doorbell_request = 1;
vc->vtb = mfspr(SPRN_VTB);
dec = mfspr(SPRN_DEC); if (!(lpcr & LPCR_LD)) /* Sign extend if not using large decrementer */
dec = (s32) dec;
*tb = mftb();
vcpu->arch.dec_expires = dec + *tb;
if (cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) { /* Preserve PSSCR[FAKE_SUSPEND] until we've called kvmppc_save_tm_hv */
mtspr(SPRN_PSSCR, host_hpsscr |
(local_paca->kvm_hstate.fake_suspend << PSSCR_FAKE_SUSPEND_LG));
}
mtspr(SPRN_HFSCR, host_hfscr); if (vcpu->arch.ciabr != host_ciabr)
mtspr(SPRN_CIABR, host_ciabr);
if (dawr_enabled()) { if (vcpu->arch.dawr0 != host_dawr0)
mtspr(SPRN_DAWR0, host_dawr0); if (vcpu->arch.dawrx0 != host_dawrx0)
mtspr(SPRN_DAWRX0, host_dawrx0); if (cpu_has_feature(CPU_FTR_DAWR1)) { if (vcpu->arch.dawr1 != host_dawr1)
mtspr(SPRN_DAWR1, host_dawr1); if (vcpu->arch.dawrx1 != host_dawrx1)
mtspr(SPRN_DAWRX1, host_dawrx1);
}
}
if (dpdes)
mtspr(SPRN_DPDES, 0); if (vc->pcr)
mtspr(SPRN_PCR, PCR_MASK);
/* HDEC must be at least as large as DEC, so decrementer_max fits */
mtspr(SPRN_HDEC, decrementer_max);
timer_rearm_host_dec(*tb);
restore_p9_host_os_sprs(vcpu, &host_os_sprs);
barrier(); /* Close in_guest critical section */
WRITE_ONCE(local_paca->kvm_hstate.in_guest, KVM_GUEST_MODE_NONE); /* Interrupts are recoverable at this point */
/* *cp_abortisrequirediftheprocessorsupportslocalcopy-paste *toclearthecopybufferthatwasundercontroloftheguest.
*/ if (cpu_has_feature(CPU_FTR_ARCH_31)) asmvolatile(PPC_CP_ABORT);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.