KVM: s390: Fixes for 7.2

- more gmap KVM memory management fixes
 - PCI passthru fixes
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEE+SKTgaM0CPnbq/vKEXu8gLWmHHwFAmpUndYACgkQEXu8gLWm
 HHxMeA/+PcocEqG9z8nvPQaCTO0EtyfFudJ3R6bl8za4BUOyesXv3Q4Izi/CQFxI
 MbXNtrVntvyYYQztEgVKIw20UDEiV1KW84gbZQ6yH+mjNheAR3TfqiGWJnM0iLmo
 DWpXA/k5WQm1jQ8ZmsPvfyr5O0tI/0e8beAN6ym4B913VhxDGZ7HWioR++XZf8Ea
 xCUREXHOW4OBYYrxVvNOAavMZeXuW/ZKMuR0nW0Bhm4o48sTFxFqnvjzn2LK0kJk
 /zJ2TVHM/coBohBXF+hpqGyJRUt2wJErRitZzCptx8roeAhSENsPDDaj+2dd/Wlw
 OBlKwreOxle6cJi/doGFpGoDQTIsuzB5BwzxjAOY8+oHeqOQam5zuafzTyLxpzQo
 Kvy9eG+eg1X2Zb39YSEB2vnxTZjyVdv9zl02QH4Fo+o9j0l+NvWkU6MtYx4QHjyK
 qts/aYp63l2gDSNGLsqUyg091GzSL8LyTRxkkd7RGnM2PhYMGPfGUch+cqfQ/ExO
 zvR+0hHQeeHawuOBGzIlbQYO9QCX8S6cRy9E/+VkU6xRhC+2KPQ5LchmciT/ncgH
 fCzIbAk9KuhIcCCVF3aBmU5DVkDtMbdgHlyzdiBRl37WCw/NIJiBvFmgWQXQC38F
 ycleEiN12J3ywUSzY19Xj+NxpDUtibM0Y4Xx6lP/3mAP/XBmJt4=
 =MBbm
 -----END PGP SIGNATURE-----

Merge tag 'kvm-s390-master-7.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into HEAD

KVM: s390: Fixes for 7.2

- more gmap KVM memory management fixes
- PCI passthru fixes
This commit is contained in:
Paolo Bonzini 2026-07-15 12:15:40 +02:00
commit 5246d32d4b
4 changed files with 21 additions and 6 deletions

View File

@ -570,6 +570,8 @@ static long dat_crste_walk_range(gfn_t start, gfn_t end, struct crst_table *tabl
else if (walk->ops->pte_entry)
rc = dat_pte_walk_range(max(start, cur), min(end, next),
dereference_pmd(crste.pmd), walk);
if (rc)
break;
}
}
return rc;

View File

@ -1374,8 +1374,13 @@ struct gmap *gmap_create_shadow(struct kvm_s390_mmu_cache *mc, struct gmap *pare
/* Only allow one real-space gmap shadow. */
list_for_each_entry(sg, &parent->children, list) {
if (sg->guest_asce.r) {
scoped_guard(write_lock, &parent->kvm->mmu_lock)
if (write_trylock(&parent->kvm->mmu_lock)) {
gmap_unshadow(sg);
write_unlock(&parent->kvm->mmu_lock);
} else {
gmap_put(new);
return ERR_PTR(-EAGAIN);
}
break;
}
}

View File

@ -1280,8 +1280,10 @@ static int kvm_s390_vm_stop_migration(struct kvm *kvm)
* PGSTEs might have cmma_d set.
*/
WRITE_ONCE(kvm->arch.migration_mode, 0);
if (kvm->arch.use_cmma)
kvm_s390_sync_request_broadcast(kvm, KVM_REQ_STOP_MIGRATION);
if (!kvm->arch.use_cmma)
return 0;
kvm_s390_sync_request_broadcast(kvm, KVM_REQ_STOP_MIGRATION);
/* Clear cmma_d on all existing PGSTEs and set cmma_dirty_pages to 0. */
gmap_set_cmma_all_clean(kvm->arch.gmap);
atomic64_set(&kvm->arch.cmma_dirty_pages, 0);

View File

@ -300,9 +300,14 @@ static int kvm_s390_pci_aif_enable(struct zpci_dev *zdev, struct zpci_fib *fib,
gaite->gisc = fib->fmt0.isc;
gaite->count++;
gaite->aisbo = fib->fmt0.aisbo;
gaite->aisb = virt_to_phys(page_address(aisb_page) + (fib->fmt0.aisb &
~PAGE_MASK));
if (fib->fmt0.sum == 1) {
gaite->aisbo = fib->fmt0.aisbo;
gaite->aisb = virt_to_phys(page_address(aisb_page) +
(fib->fmt0.aisb & ~PAGE_MASK));
} else {
gaite->aisbo = 0;
gaite->aisb = 0;
}
aift->kzdev[zdev->aisb] = zdev->kzdev;
spin_unlock_irq(&aift->gait_lock);
@ -328,6 +333,7 @@ static int kvm_s390_pci_aif_enable(struct zpci_dev *zdev, struct zpci_fib *fib,
unpin1:
unpin_user_page(aibv_page);
out:
kvm_s390_gisc_unregister(kvm, fib->fmt0.isc);
return rc;
}