Two fixes for asynchronous destroy

-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEoWuZBM6M3lCBSfTnuARItAMU6BMFAmS2a84ACgkQuARItAMU
 6BPfCRAAyl56gfM+h5zhgsSQfKoZaSAkEqzB+uJ+bFXJ+1PMDGS9raD16RRpUpEp
 6DuT1HhwsV9mXffTrl3sE6Ov9bece/p6McQiKVoU8dn+E17gziEoEODE6gPpX6V6
 t2aBlNhz962QFSc+Z9P/ioyFB4rAtIrOY1mV1Ok74vOM4aGRh76i/WZpzW6Bgpe6
 jvtNuOlDvjofaI8cRDQ6qsRtT5DV3w4lM1Te8accmImBCezAAmxTh1KuLJZ/56Do
 Q/agC9wSPPdiTqE2ZqT0gKEWYOIlZPutyfr7thw0XJApwQ4XiO5hoDanMRnfbSL4
 Pr8wwR6fUlMdD8sr7U3aY/Jd9/RI/3I48DmyT/hcGITo6NoK/W0O77wZnRKeqKNy
 AarwlpYlaHr9HrrVsIXr8NY2hINuATAYhy6UnONlv5AVP2FwLzlaK/MO8iHY0zG3
 INzdl5orCsVblYllnmYINmyd9uEvNdx0FJo3/01DyVgnK+m7b58aJtbD0R7nMK7I
 YO0Rj1EJf9VfE0BsM29D9ev/asxggkbgExjl1nWOR/TiY9prg99MFJdnCEUED9EL
 kvdO6bUFJx7CJfeQU6Y2fq3jcdAsiTQOH7LRw8DOkOI/TszRQRsGU3BEy5RijZcL
 mnWMQ7WGydtqPC0WMzo5b2ND+WdLG1hiagw7kbDJM5MP/gABrq0=
 =9m5E
 -----END PGP SIGNATURE-----

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

Two fixes for asynchronous destroy
This commit is contained in:
Paolo Bonzini 2023-07-23 12:50:30 -04:00
commit 0c189708bf
2 changed files with 7 additions and 2 deletions

View File

@ -411,8 +411,12 @@ int kvm_s390_pv_deinit_cleanup_all(struct kvm *kvm, u16 *rc, u16 *rrc)
u16 _rc, _rrc;
int cc = 0;
/* Make sure the counter does not reach 0 before calling s390_uv_destroy_range */
atomic_inc(&kvm->mm->context.protected_count);
/*
* Nothing to do if the counter was already 0. Otherwise make sure
* the counter does not reach 0 before calling s390_uv_destroy_range.
*/
if (!atomic_inc_not_zero(&kvm->mm->context.protected_count))
return 0;
*rc = 1;
/* If the current VM is protected, destroy it */

View File

@ -2853,6 +2853,7 @@ int s390_replace_asce(struct gmap *gmap)
page = alloc_pages(GFP_KERNEL_ACCOUNT, CRST_ALLOC_ORDER);
if (!page)
return -ENOMEM;
page->index = 0;
table = page_to_virt(page);
memcpy(table, gmap->table, 1UL << (CRST_ALLOC_ORDER + PAGE_SHIFT));