Revision a60f24b5 target-ppc/kvm.c

b/target-ppc/kvm.c
140 140
    int ret, i;
141 141

  
142 142
    if (!kvm_enabled() ||
143
        !kvm_check_extension(env->kvm_state, KVM_CAP_SW_TLB)) {
143
        !kvm_check_extension(cs->kvm_state, KVM_CAP_SW_TLB)) {
144 144
        return 0;
145 145
    }
146 146

  
......
178 178

  
179 179

  
180 180
#if defined(TARGET_PPC64)
181
static void kvm_get_fallback_smmu_info(CPUPPCState *env,
181
static void kvm_get_fallback_smmu_info(PowerPCCPU *cpu,
182 182
                                       struct kvm_ppc_smmu_info *info)
183 183
{
184
    CPUPPCState *env = &cpu->env;
185
    CPUState *cs = CPU(cpu);
186

  
184 187
    memset(info, 0, sizeof(*info));
185 188

  
186 189
    /* We don't have the new KVM_PPC_GET_SMMU_INFO ioctl, so
......
206 209
     *   implements KVM_CAP_PPC_GET_SMMU_INFO and thus doesn't hit
207 210
     *   this fallback.
208 211
     */
209
    if (kvm_check_extension(env->kvm_state, KVM_CAP_PPC_GET_PVINFO)) {
212
    if (kvm_check_extension(cs->kvm_state, KVM_CAP_PPC_GET_PVINFO)) {
210 213
        /* No flags */
211 214
        info->flags = 0;
212 215
        info->slb_size = 64;
......
262 265
    }
263 266
}
264 267

  
265
static void kvm_get_smmu_info(CPUPPCState *env, struct kvm_ppc_smmu_info *info)
268
static void kvm_get_smmu_info(PowerPCCPU *cpu, struct kvm_ppc_smmu_info *info)
266 269
{
270
    CPUState *cs = CPU(cpu);
267 271
    int ret;
268 272

  
269
    if (kvm_check_extension(env->kvm_state, KVM_CAP_PPC_GET_SMMU_INFO)) {
270
        ret = kvm_vm_ioctl(env->kvm_state, KVM_PPC_GET_SMMU_INFO, info);
273
    if (kvm_check_extension(cs->kvm_state, KVM_CAP_PPC_GET_SMMU_INFO)) {
274
        ret = kvm_vm_ioctl(cs->kvm_state, KVM_PPC_GET_SMMU_INFO, info);
271 275
        if (ret == 0) {
272 276
            return;
273 277
        }
274 278
    }
275 279

  
276
    kvm_get_fallback_smmu_info(env, info);
280
    kvm_get_fallback_smmu_info(cpu, info);
277 281
}
278 282

  
279 283
static long getrampagesize(void)
......
316 320
    return (1ul << shift) <= rampgsize;
317 321
}
318 322

  
319
static void kvm_fixup_page_sizes(CPUPPCState *env)
323
static void kvm_fixup_page_sizes(PowerPCCPU *cpu)
320 324
{
321 325
    static struct kvm_ppc_smmu_info smmu_info;
322 326
    static bool has_smmu_info;
327
    CPUPPCState *env = &cpu->env;
323 328
    long rampagesize;
324 329
    int iq, ik, jq, jk;
325 330

  
......
330 335

  
331 336
    /* Collect MMU info from kernel if not already */
332 337
    if (!has_smmu_info) {
333
        kvm_get_smmu_info(env, &smmu_info);
338
        kvm_get_smmu_info(cpu, &smmu_info);
334 339
        has_smmu_info = true;
335 340
    }
336 341

  
......
373 378
}
374 379
#else /* defined (TARGET_PPC64) */
375 380

  
376
static inline void kvm_fixup_page_sizes(CPUPPCState *env)
381
static inline void kvm_fixup_page_sizes(PowerPCCPU *cpu)
377 382
{
378 383
}
379 384

  
......
386 391
    int ret;
387 392

  
388 393
    /* Gather server mmu info from KVM and update the CPU state */
389
    kvm_fixup_page_sizes(cenv);
394
    kvm_fixup_page_sizes(cpu);
390 395

  
391 396
    /* Synchronize sregs with kvm */
392 397
    ret = kvm_arch_sync_sregs(cpu);
......
986 991

  
987 992
int kvmppc_get_hypercall(CPUPPCState *env, uint8_t *buf, int buf_len)
988 993
{
994
    PowerPCCPU *cpu = ppc_env_get_cpu(env);
995
    CPUState *cs = CPU(cpu);
989 996
    uint32_t *hc = (uint32_t*)buf;
990 997

  
991 998
    struct kvm_ppc_pvinfo pvinfo;
992 999

  
993
    if (kvm_check_extension(env->kvm_state, KVM_CAP_PPC_GET_PVINFO) &&
994
        !kvm_vm_ioctl(env->kvm_state, KVM_PPC_GET_PVINFO, &pvinfo)) {
1000
    if (kvm_check_extension(cs->kvm_state, KVM_CAP_PPC_GET_PVINFO) &&
1001
        !kvm_vm_ioctl(cs->kvm_state, KVM_PPC_GET_PVINFO, &pvinfo)) {
995 1002
        memcpy(buf, pvinfo.hcall, buf_len);
996 1003

  
997 1004
        return 0;

Also available in: Unified diff