Lines Matching full:resize

37 #define resize_hpt_debug(resize, ...)				\  argument
39 printk(KERN_DEBUG "RESIZE HPT %p: ", resize); \
43 #define resize_hpt_debug(resize, ...) \ argument
692 * instead let the guest retry after the resize operation is complete. in kvmppc_book3s_hv_page_fault()
1212 static int resize_hpt_allocate(struct kvm_resize_hpt *resize) in resize_hpt_allocate() argument
1216 rc = kvmppc_allocate_hpt(&resize->hpt, resize->order); in resize_hpt_allocate()
1220 resize_hpt_debug(resize, "%s(): HPT @ 0x%lx\n", __func__, in resize_hpt_allocate()
1221 resize->hpt.virt); in resize_hpt_allocate()
1226 static unsigned long resize_hpt_rehash_hpte(struct kvm_resize_hpt *resize, in resize_hpt_rehash_hpte() argument
1229 struct kvm *kvm = resize->kvm; in resize_hpt_rehash_hpte()
1231 struct kvm_hpt_info *new = &resize->hpt; in resize_hpt_rehash_hpte()
1381 static int resize_hpt_rehash(struct kvm_resize_hpt *resize) in resize_hpt_rehash() argument
1383 struct kvm *kvm = resize->kvm; in resize_hpt_rehash()
1388 rc = resize_hpt_rehash_hpte(resize, i); in resize_hpt_rehash()
1396 static void resize_hpt_pivot(struct kvm_resize_hpt *resize) in resize_hpt_pivot() argument
1398 struct kvm *kvm = resize->kvm; in resize_hpt_pivot()
1401 /* Exchange the pending tables in the resize structure with in resize_hpt_pivot()
1404 resize_hpt_debug(resize, "resize_hpt_pivot()\n"); in resize_hpt_pivot()
1410 kvmppc_set_hpt(kvm, &resize->hpt); in resize_hpt_pivot()
1411 resize->hpt = hpt_tmp; in resize_hpt_pivot()
1420 resize_hpt_debug(resize, "resize_hpt_pivot() done\n"); in resize_hpt_pivot()
1423 static void resize_hpt_release(struct kvm *kvm, struct kvm_resize_hpt *resize) in resize_hpt_release() argument
1428 if (!resize) in resize_hpt_release()
1431 if (resize->error != -EBUSY) { in resize_hpt_release()
1432 if (resize->hpt.virt) in resize_hpt_release()
1433 kvmppc_free_hpt(&resize->hpt); in resize_hpt_release()
1434 kfree(resize); in resize_hpt_release()
1437 if (kvm->arch.resize_hpt == resize) in resize_hpt_release()
1443 struct kvm_resize_hpt *resize = container_of(work, in resize_hpt_prepare_work() local
1446 struct kvm *kvm = resize->kvm; in resize_hpt_prepare_work()
1449 if (WARN_ON(resize->error != -EBUSY)) in resize_hpt_prepare_work()
1455 if (kvm->arch.resize_hpt == resize) { in resize_hpt_prepare_work()
1461 resize_hpt_debug(resize, "%s(): order = %d\n", __func__, in resize_hpt_prepare_work()
1462 resize->order); in resize_hpt_prepare_work()
1464 err = resize_hpt_allocate(resize); in resize_hpt_prepare_work()
1467 * when preparing for HPT resize. in resize_hpt_prepare_work()
1473 /* It is possible that kvm->arch.resize_hpt != resize in resize_hpt_prepare_work()
1478 resize->error = err; in resize_hpt_prepare_work()
1480 if (kvm->arch.resize_hpt != resize) in resize_hpt_prepare_work()
1481 resize_hpt_release(kvm, resize); in resize_hpt_prepare_work()
1491 struct kvm_resize_hpt *resize; in kvm_vm_ioctl_resize_hpt_prepare() local
1502 resize = kvm->arch.resize_hpt; in kvm_vm_ioctl_resize_hpt_prepare()
1504 if (resize) { in kvm_vm_ioctl_resize_hpt_prepare()
1505 if (resize->order == shift) { in kvm_vm_ioctl_resize_hpt_prepare()
1506 /* Suitable resize in progress? */ in kvm_vm_ioctl_resize_hpt_prepare()
1507 ret = resize->error; in kvm_vm_ioctl_resize_hpt_prepare()
1511 resize_hpt_release(kvm, resize); in kvm_vm_ioctl_resize_hpt_prepare()
1517 resize_hpt_release(kvm, resize); in kvm_vm_ioctl_resize_hpt_prepare()
1524 /* start new resize */ in kvm_vm_ioctl_resize_hpt_prepare()
1526 resize = kzalloc(sizeof(*resize), GFP_KERNEL); in kvm_vm_ioctl_resize_hpt_prepare()
1527 if (!resize) { in kvm_vm_ioctl_resize_hpt_prepare()
1532 resize->error = -EBUSY; in kvm_vm_ioctl_resize_hpt_prepare()
1533 resize->order = shift; in kvm_vm_ioctl_resize_hpt_prepare()
1534 resize->kvm = kvm; in kvm_vm_ioctl_resize_hpt_prepare()
1535 INIT_WORK(&resize->work, resize_hpt_prepare_work); in kvm_vm_ioctl_resize_hpt_prepare()
1536 kvm->arch.resize_hpt = resize; in kvm_vm_ioctl_resize_hpt_prepare()
1538 schedule_work(&resize->work); in kvm_vm_ioctl_resize_hpt_prepare()
1557 struct kvm_resize_hpt *resize; in kvm_vm_ioctl_resize_hpt_commit() local
1568 resize = kvm->arch.resize_hpt; in kvm_vm_ioctl_resize_hpt_commit()
1584 if (!resize || (resize->order != shift)) in kvm_vm_ioctl_resize_hpt_commit()
1587 ret = resize->error; in kvm_vm_ioctl_resize_hpt_commit()
1591 ret = resize_hpt_rehash(resize); in kvm_vm_ioctl_resize_hpt_commit()
1595 resize_hpt_pivot(resize); in kvm_vm_ioctl_resize_hpt_commit()
1602 resize_hpt_release(kvm, resize); in kvm_vm_ioctl_resize_hpt_commit()