Lines Matching +full:multi +full:- +full:function

1 // SPDX-License-Identifier: GPL-2.0-only
20 #define SRR1_MC_LDSTERR (1ul << (63-42))
21 #define SRR1_MC_IFETCH_SH (63-45)
24 #define SRR1_MC_IFETCH_SLBMULTI 3 /* SLB multi-hit */
25 #define SRR1_MC_IFETCH_SLBPARMULTI 4 /* SLB parity + multi-hit */
26 #define SRR1_MC_IFETCH_TLBMULTI 5 /* I-TLB multi-hit */
29 #define DSISR_MC_DERAT_MULTI 0x800 /* D-ERAT multi-hit */
30 #define DSISR_MC_TLB_MULTI 0x400 /* D-TLB multi-hit */
32 #define DSISR_MC_SLB_MULTI 0x080 /* SLB multi-hit */
33 #define DSISR_MC_SLB_PARMULTI 0x040 /* SLB parity + multi-hit */
45 slb = vcpu->arch.slb_shadow.pinned_addr; in reload_slb()
50 n = min_t(u32, be32_to_cpu(slb->persistent), SLB_MIN_SIZE); in reload_slb()
51 if ((void *) &slb->save_area[n] > vcpu->arch.slb_shadow.pinned_end) in reload_slb()
56 unsigned long rb = be64_to_cpu(slb->save_area[i].esid); in reload_slb()
57 unsigned long rs = be64_to_cpu(slb->save_area[i].vsid); in reload_slb()
70 unsigned long srr1 = vcpu->arch.shregs.msr; in kvmppc_realmode_mc_power7()
76 unsigned long dsisr = vcpu->arch.shregs.dsisr; in kvmppc_realmode_mc_power7()
80 /* flush and reload SLB; flushes D-ERAT too */ in kvmppc_realmode_mc_power7()
86 tlbiel_all_lpid(vcpu->kvm->arch.radix); in kvmppc_realmode_mc_power7()
103 tlbiel_all_lpid(vcpu->kvm->arch.radix); in kvmppc_realmode_mc_power7()
122 vcpu->arch.mce_evt = mce_evt; in kvmppc_realmode_mc_power7()
133 if (local_paca->kvm_hstate.kvm_split_mode) in kvmppc_cur_subcore_size()
134 return local_paca->kvm_hstate.kvm_split_mode->subcore_size; in kvmppc_cur_subcore_size()
143 thread_id = cpu_thread_in_core(local_paca->paca_index); in kvmppc_subcore_enter_guest()
146 local_paca->sibling_subcore_state->in_guest[subcore_id] = 1; in kvmppc_subcore_enter_guest()
154 thread_id = cpu_thread_in_core(local_paca->paca_index); in kvmppc_subcore_exit_guest()
157 local_paca->sibling_subcore_state->in_guest[subcore_id] = 0; in kvmppc_subcore_exit_guest()
164 &local_paca->sibling_subcore_state->flags)) in kvmppc_tb_resync_required()
173 &local_paca->sibling_subcore_state->flags); in kvmppc_tb_resync_done()
184 * to non-TB errors, opal hmi handler will not touch/restore TB register
194 * - On TB error, HMI interrupt is reported on all the threads of the core
195 * that has encountered TB error irrespective of split-core mode.
196 * - The very first thread on the core that get chance to fix TB error
198 * - The resync TB is a core level action i.e. it will sync all the TBs
199 * in that core independent of split-core mode. This means if we trigger
203 * All threads need to co-ordinate before making opal hmi handler.
204 * All threads will use sibling_subcore_state->in_guest[] (shared by all
214 * (sibling_subcore_state->flags) will be used to co-ordinate between
218 * - Primary thread from each subcore tries to set resync required bit[63]
219 * of paca->sibling_subcore_state->flags.
220 * - The first primary thread that is able to set the flag takes the
222 * - All other threads which are in host will call
223 * wait_for_subcore_guest_exit() and wait for in_guest[0-3] from
224 * paca->sibling_subcore_state to get cleared.
225 * - All the primary thread will clear its subcore status from subcore
227 * - Once all primary threads clear in_guest[0-3], all of them will invoke
229 * - Now all threads will wait for TB resync to complete by invoking
231 * - Thread leader will do a TB resync by invoking opal_resync_timebase()
233 * - All other threads will now come out of resync wait loop and proceed
235 * - On return of this function, primary thread will signal all
237 * - All secondary threads will eventually call opal hmi handler on
247 local_paca->hmi_irqs++; in kvmppc_realmode_hmi_handler()
253 * By now primary thread has already completed guest->host in kvmppc_realmode_hmi_handler()
262 * set this bit then kvmppc_tb_resync_required() function will in kvmppc_realmode_hmi_handler()
286 * subcore on this core have completed guest->host partition in kvmppc_realmode_hmi_handler()
309 if (local_paca->kvm_hstate.kvm_vcore) in kvmppc_realmode_hmi_handler()
310 local_paca->kvm_hstate.kvm_vcore->tb_offset_applied = 0; in kvmppc_realmode_hmi_handler()