Lines Matching full:arch
314 kvm_clock_sync_scb(vcpu->arch.sie_block, *delta); in kvm_clock_sync()
316 kvm->arch.epoch = vcpu->arch.sie_block->epoch; in kvm_clock_sync()
317 kvm->arch.epdx = vcpu->arch.sie_block->epdx; in kvm_clock_sync()
319 if (vcpu->arch.cputm_enabled) in kvm_clock_sync()
320 vcpu->arch.cputm_start += *delta; in kvm_clock_sync()
321 if (vcpu->arch.vsie_block) in kvm_clock_sync()
322 kvm_clock_sync_scb(vcpu->arch.vsie_block, in kvm_clock_sync()
700 struct gmap *gmap = kvm->arch.gmap; in kvm_arch_sync_dirty_log()
783 kvm->arch.use_irqchip = 1; in kvm_vm_ioctl_enable_cap()
788 kvm->arch.user_sigp = 1; in kvm_vm_ioctl_enable_cap()
796 set_kvm_facility(kvm->arch.model.fac_mask, 129); in kvm_vm_ioctl_enable_cap()
797 set_kvm_facility(kvm->arch.model.fac_list, 129); in kvm_vm_ioctl_enable_cap()
799 set_kvm_facility(kvm->arch.model.fac_mask, 134); in kvm_vm_ioctl_enable_cap()
800 set_kvm_facility(kvm->arch.model.fac_list, 134); in kvm_vm_ioctl_enable_cap()
803 set_kvm_facility(kvm->arch.model.fac_mask, 135); in kvm_vm_ioctl_enable_cap()
804 set_kvm_facility(kvm->arch.model.fac_list, 135); in kvm_vm_ioctl_enable_cap()
807 set_kvm_facility(kvm->arch.model.fac_mask, 148); in kvm_vm_ioctl_enable_cap()
808 set_kvm_facility(kvm->arch.model.fac_list, 148); in kvm_vm_ioctl_enable_cap()
811 set_kvm_facility(kvm->arch.model.fac_mask, 152); in kvm_vm_ioctl_enable_cap()
812 set_kvm_facility(kvm->arch.model.fac_list, 152); in kvm_vm_ioctl_enable_cap()
815 set_kvm_facility(kvm->arch.model.fac_mask, 192); in kvm_vm_ioctl_enable_cap()
816 set_kvm_facility(kvm->arch.model.fac_list, 192); in kvm_vm_ioctl_enable_cap()
819 set_kvm_facility(kvm->arch.model.fac_mask, 198); in kvm_vm_ioctl_enable_cap()
820 set_kvm_facility(kvm->arch.model.fac_list, 198); in kvm_vm_ioctl_enable_cap()
823 set_kvm_facility(kvm->arch.model.fac_mask, 199); in kvm_vm_ioctl_enable_cap()
824 set_kvm_facility(kvm->arch.model.fac_list, 199); in kvm_vm_ioctl_enable_cap()
839 set_kvm_facility(kvm->arch.model.fac_mask, 64); in kvm_vm_ioctl_enable_cap()
840 set_kvm_facility(kvm->arch.model.fac_list, 64); in kvm_vm_ioctl_enable_cap()
852 set_kvm_facility(kvm->arch.model.fac_mask, 72); in kvm_vm_ioctl_enable_cap()
853 set_kvm_facility(kvm->arch.model.fac_list, 72); in kvm_vm_ioctl_enable_cap()
866 set_kvm_facility(kvm->arch.model.fac_mask, 133); in kvm_vm_ioctl_enable_cap()
867 set_kvm_facility(kvm->arch.model.fac_list, 133); in kvm_vm_ioctl_enable_cap()
878 else if (!hpage || kvm->arch.use_cmma || kvm_is_ucontrol(kvm)) in kvm_vm_ioctl_enable_cap()
890 kvm->arch.use_skf = 0; in kvm_vm_ioctl_enable_cap()
891 kvm->arch.use_pfmfi = 0; in kvm_vm_ioctl_enable_cap()
899 kvm->arch.user_stsi = 1; in kvm_vm_ioctl_enable_cap()
904 kvm->arch.user_instr0 = 1; in kvm_vm_ioctl_enable_cap()
914 set_kvm_facility(kvm->arch.model.fac_mask, 11); in kvm_vm_ioctl_enable_cap()
915 set_kvm_facility(kvm->arch.model.fac_list, 11); in kvm_vm_ioctl_enable_cap()
937 kvm->arch.mem_limit); in kvm_s390_get_mem_control()
938 if (put_user(kvm->arch.mem_limit, (u64 __user *)attr->addr)) in kvm_s390_get_mem_control()
965 kvm->arch.use_cmma = 1; in kvm_s390_set_mem_control()
967 kvm->arch.use_pfmfi = 0; in kvm_s390_set_mem_control()
977 if (!kvm->arch.use_cmma) in kvm_s390_set_mem_control()
983 s390_reset_cmma(kvm->arch.gmap->mm); in kvm_s390_set_mem_control()
997 if (kvm->arch.mem_limit != KVM_S390_NO_MEM_LIMIT && in kvm_s390_set_mem_control()
998 new_limit > kvm->arch.mem_limit) in kvm_s390_set_mem_control()
1017 gmap_remove(kvm->arch.gmap); in kvm_s390_set_mem_control()
1019 kvm->arch.gmap = new; in kvm_s390_set_mem_control()
1026 (void *) kvm->arch.gmap->asce); in kvm_s390_set_mem_control()
1064 kvm->arch.crypto.crycb->aes_wrapping_key_mask, in kvm_s390_vm_set_crypto()
1065 sizeof(kvm->arch.crypto.crycb->aes_wrapping_key_mask)); in kvm_s390_vm_set_crypto()
1066 kvm->arch.crypto.aes_kw = 1; in kvm_s390_vm_set_crypto()
1075 kvm->arch.crypto.crycb->dea_wrapping_key_mask, in kvm_s390_vm_set_crypto()
1076 sizeof(kvm->arch.crypto.crycb->dea_wrapping_key_mask)); in kvm_s390_vm_set_crypto()
1077 kvm->arch.crypto.dea_kw = 1; in kvm_s390_vm_set_crypto()
1085 kvm->arch.crypto.aes_kw = 0; in kvm_s390_vm_set_crypto()
1086 memset(kvm->arch.crypto.crycb->aes_wrapping_key_mask, 0, in kvm_s390_vm_set_crypto()
1087 sizeof(kvm->arch.crypto.crycb->aes_wrapping_key_mask)); in kvm_s390_vm_set_crypto()
1095 kvm->arch.crypto.dea_kw = 0; in kvm_s390_vm_set_crypto()
1096 memset(kvm->arch.crypto.crycb->dea_wrapping_key_mask, 0, in kvm_s390_vm_set_crypto()
1097 sizeof(kvm->arch.crypto.crycb->dea_wrapping_key_mask)); in kvm_s390_vm_set_crypto()
1105 kvm->arch.crypto.apie = 1; in kvm_s390_vm_set_crypto()
1112 kvm->arch.crypto.apie = 0; in kvm_s390_vm_set_crypto()
1127 if (!vcpu->kvm->arch.use_zpci_interp) in kvm_s390_vcpu_pci_setup()
1130 vcpu->arch.sie_block->ecb2 |= ECB2_ZPCI_LSI; in kvm_s390_vcpu_pci_setup()
1131 vcpu->arch.sie_block->ecb3 |= ECB3_AISII + ECB3_AISI; in kvm_s390_vcpu_pci_setup()
1148 kvm->arch.use_zpci_interp = 1; in kvm_s390_vcpu_pci_enable_interp()
1181 if (kvm->arch.migration_mode) in kvm_s390_vm_start_migration()
1187 if (!kvm->arch.use_cmma) { in kvm_s390_vm_start_migration()
1188 kvm->arch.migration_mode = 1; in kvm_s390_vm_start_migration()
1204 atomic64_set(&kvm->arch.cmma_dirty_pages, ram_pages); in kvm_s390_vm_start_migration()
1205 kvm->arch.migration_mode = 1; in kvm_s390_vm_start_migration()
1217 if (!kvm->arch.migration_mode) in kvm_s390_vm_stop_migration()
1219 kvm->arch.migration_mode = 0; in kvm_s390_vm_stop_migration()
1220 if (kvm->arch.use_cmma) in kvm_s390_vm_stop_migration()
1249 u64 mig = kvm->arch.migration_mode; in kvm_s390_vm_get_migration()
1352 gtod->tod = clk.tod + kvm->arch.epoch; in kvm_s390_get_tod_clock()
1355 gtod->epoch_idx = clk.ei + kvm->arch.epdx; in kvm_s390_get_tod_clock()
1443 kvm->arch.model.cpuid = proc->cpuid; in kvm_s390_set_processor()
1448 kvm->arch.model.ibc = unblocked_ibc; in kvm_s390_set_processor()
1450 kvm->arch.model.ibc = lowest_ibc; in kvm_s390_set_processor()
1452 kvm->arch.model.ibc = proc->ibc; in kvm_s390_set_processor()
1454 memcpy(kvm->arch.model.fac_list, proc->fac_list, in kvm_s390_set_processor()
1457 kvm->arch.model.ibc, in kvm_s390_set_processor()
1458 kvm->arch.model.cpuid); in kvm_s390_set_processor()
1460 kvm->arch.model.fac_list[0], in kvm_s390_set_processor()
1461 kvm->arch.model.fac_list[1], in kvm_s390_set_processor()
1462 kvm->arch.model.fac_list[2]); in kvm_s390_set_processor()
1488 bitmap_from_arr64(kvm->arch.cpu_feat, data.feat, KVM_S390_VM_CPU_FEAT_NR_BITS); in kvm_s390_set_processor_feat()
1506 if (copy_from_user(&kvm->arch.model.subfuncs, (void __user *)attr->addr, in kvm_s390_set_processor_subfunc()
1514 ((unsigned long *) &kvm->arch.model.subfuncs.plo)[0], in kvm_s390_set_processor_subfunc()
1515 ((unsigned long *) &kvm->arch.model.subfuncs.plo)[1], in kvm_s390_set_processor_subfunc()
1516 ((unsigned long *) &kvm->arch.model.subfuncs.plo)[2], in kvm_s390_set_processor_subfunc()
1517 ((unsigned long *) &kvm->arch.model.subfuncs.plo)[3]); in kvm_s390_set_processor_subfunc()
1519 ((unsigned long *) &kvm->arch.model.subfuncs.ptff)[0], in kvm_s390_set_processor_subfunc()
1520 ((unsigned long *) &kvm->arch.model.subfuncs.ptff)[1]); in kvm_s390_set_processor_subfunc()
1522 ((unsigned long *) &kvm->arch.model.subfuncs.kmac)[0], in kvm_s390_set_processor_subfunc()
1523 ((unsigned long *) &kvm->arch.model.subfuncs.kmac)[1]); in kvm_s390_set_processor_subfunc()
1525 ((unsigned long *) &kvm->arch.model.subfuncs.kmc)[0], in kvm_s390_set_processor_subfunc()
1526 ((unsigned long *) &kvm->arch.model.subfuncs.kmc)[1]); in kvm_s390_set_processor_subfunc()
1528 ((unsigned long *) &kvm->arch.model.subfuncs.km)[0], in kvm_s390_set_processor_subfunc()
1529 ((unsigned long *) &kvm->arch.model.subfuncs.km)[1]); in kvm_s390_set_processor_subfunc()
1531 ((unsigned long *) &kvm->arch.model.subfuncs.kimd)[0], in kvm_s390_set_processor_subfunc()
1532 ((unsigned long *) &kvm->arch.model.subfuncs.kimd)[1]); in kvm_s390_set_processor_subfunc()
1534 ((unsigned long *) &kvm->arch.model.subfuncs.klmd)[0], in kvm_s390_set_processor_subfunc()
1535 ((unsigned long *) &kvm->arch.model.subfuncs.klmd)[1]); in kvm_s390_set_processor_subfunc()
1537 ((unsigned long *) &kvm->arch.model.subfuncs.pckmo)[0], in kvm_s390_set_processor_subfunc()
1538 ((unsigned long *) &kvm->arch.model.subfuncs.pckmo)[1]); in kvm_s390_set_processor_subfunc()
1540 ((unsigned long *) &kvm->arch.model.subfuncs.kmctr)[0], in kvm_s390_set_processor_subfunc()
1541 ((unsigned long *) &kvm->arch.model.subfuncs.kmctr)[1]); in kvm_s390_set_processor_subfunc()
1543 ((unsigned long *) &kvm->arch.model.subfuncs.kmf)[0], in kvm_s390_set_processor_subfunc()
1544 ((unsigned long *) &kvm->arch.model.subfuncs.kmf)[1]); in kvm_s390_set_processor_subfunc()
1546 ((unsigned long *) &kvm->arch.model.subfuncs.kmo)[0], in kvm_s390_set_processor_subfunc()
1547 ((unsigned long *) &kvm->arch.model.subfuncs.kmo)[1]); in kvm_s390_set_processor_subfunc()
1549 ((unsigned long *) &kvm->arch.model.subfuncs.pcc)[0], in kvm_s390_set_processor_subfunc()
1550 ((unsigned long *) &kvm->arch.model.subfuncs.pcc)[1]); in kvm_s390_set_processor_subfunc()
1552 ((unsigned long *) &kvm->arch.model.subfuncs.ppno)[0], in kvm_s390_set_processor_subfunc()
1553 ((unsigned long *) &kvm->arch.model.subfuncs.ppno)[1]); in kvm_s390_set_processor_subfunc()
1555 ((unsigned long *) &kvm->arch.model.subfuncs.kma)[0], in kvm_s390_set_processor_subfunc()
1556 ((unsigned long *) &kvm->arch.model.subfuncs.kma)[1]); in kvm_s390_set_processor_subfunc()
1558 ((unsigned long *) &kvm->arch.model.subfuncs.kdsa)[0], in kvm_s390_set_processor_subfunc()
1559 ((unsigned long *) &kvm->arch.model.subfuncs.kdsa)[1]); in kvm_s390_set_processor_subfunc()
1561 ((unsigned long *) &kvm->arch.model.subfuncs.sortl)[0], in kvm_s390_set_processor_subfunc()
1562 ((unsigned long *) &kvm->arch.model.subfuncs.sortl)[1], in kvm_s390_set_processor_subfunc()
1563 ((unsigned long *) &kvm->arch.model.subfuncs.sortl)[2], in kvm_s390_set_processor_subfunc()
1564 ((unsigned long *) &kvm->arch.model.subfuncs.sortl)[3]); in kvm_s390_set_processor_subfunc()
1566 ((unsigned long *) &kvm->arch.model.subfuncs.dfltcc)[0], in kvm_s390_set_processor_subfunc()
1567 ((unsigned long *) &kvm->arch.model.subfuncs.dfltcc)[1], in kvm_s390_set_processor_subfunc()
1568 ((unsigned long *) &kvm->arch.model.subfuncs.dfltcc)[2], in kvm_s390_set_processor_subfunc()
1569 ((unsigned long *) &kvm->arch.model.subfuncs.dfltcc)[3]); in kvm_s390_set_processor_subfunc()
1602 kvm->arch.model.uv_feat_guest.feat = data; in kvm_s390_set_uv_feat()
1641 proc->cpuid = kvm->arch.model.cpuid; in kvm_s390_get_processor()
1642 proc->ibc = kvm->arch.model.ibc; in kvm_s390_get_processor()
1643 memcpy(&proc->fac_list, kvm->arch.model.fac_list, in kvm_s390_get_processor()
1646 kvm->arch.model.ibc, in kvm_s390_get_processor()
1647 kvm->arch.model.cpuid); in kvm_s390_get_processor()
1649 kvm->arch.model.fac_list[0], in kvm_s390_get_processor()
1650 kvm->arch.model.fac_list[1], in kvm_s390_get_processor()
1651 kvm->arch.model.fac_list[2]); in kvm_s390_get_processor()
1671 memcpy(&mach->fac_mask, kvm->arch.model.fac_mask, in kvm_s390_get_machine()
1676 kvm->arch.model.ibc, in kvm_s390_get_machine()
1677 kvm->arch.model.cpuid); in kvm_s390_get_machine()
1698 bitmap_to_arr64(data.feat, kvm->arch.cpu_feat, KVM_S390_VM_CPU_FEAT_NR_BITS); in kvm_s390_get_processor_feat()
1726 if (copy_to_user((void __user *)attr->addr, &kvm->arch.model.subfuncs, in kvm_s390_get_processor_subfunc()
1731 ((unsigned long *) &kvm->arch.model.subfuncs.plo)[0], in kvm_s390_get_processor_subfunc()
1732 ((unsigned long *) &kvm->arch.model.subfuncs.plo)[1], in kvm_s390_get_processor_subfunc()
1733 ((unsigned long *) &kvm->arch.model.subfuncs.plo)[2], in kvm_s390_get_processor_subfunc()
1734 ((unsigned long *) &kvm->arch.model.subfuncs.plo)[3]); in kvm_s390_get_processor_subfunc()
1736 ((unsigned long *) &kvm->arch.model.subfuncs.ptff)[0], in kvm_s390_get_processor_subfunc()
1737 ((unsigned long *) &kvm->arch.model.subfuncs.ptff)[1]); in kvm_s390_get_processor_subfunc()
1739 ((unsigned long *) &kvm->arch.model.subfuncs.kmac)[0], in kvm_s390_get_processor_subfunc()
1740 ((unsigned long *) &kvm->arch.model.subfuncs.kmac)[1]); in kvm_s390_get_processor_subfunc()
1742 ((unsigned long *) &kvm->arch.model.subfuncs.kmc)[0], in kvm_s390_get_processor_subfunc()
1743 ((unsigned long *) &kvm->arch.model.subfuncs.kmc)[1]); in kvm_s390_get_processor_subfunc()
1745 ((unsigned long *) &kvm->arch.model.subfuncs.km)[0], in kvm_s390_get_processor_subfunc()
1746 ((unsigned long *) &kvm->arch.model.subfuncs.km)[1]); in kvm_s390_get_processor_subfunc()
1748 ((unsigned long *) &kvm->arch.model.subfuncs.kimd)[0], in kvm_s390_get_processor_subfunc()
1749 ((unsigned long *) &kvm->arch.model.subfuncs.kimd)[1]); in kvm_s390_get_processor_subfunc()
1751 ((unsigned long *) &kvm->arch.model.subfuncs.klmd)[0], in kvm_s390_get_processor_subfunc()
1752 ((unsigned long *) &kvm->arch.model.subfuncs.klmd)[1]); in kvm_s390_get_processor_subfunc()
1754 ((unsigned long *) &kvm->arch.model.subfuncs.pckmo)[0], in kvm_s390_get_processor_subfunc()
1755 ((unsigned long *) &kvm->arch.model.subfuncs.pckmo)[1]); in kvm_s390_get_processor_subfunc()
1757 ((unsigned long *) &kvm->arch.model.subfuncs.kmctr)[0], in kvm_s390_get_processor_subfunc()
1758 ((unsigned long *) &kvm->arch.model.subfuncs.kmctr)[1]); in kvm_s390_get_processor_subfunc()
1760 ((unsigned long *) &kvm->arch.model.subfuncs.kmf)[0], in kvm_s390_get_processor_subfunc()
1761 ((unsigned long *) &kvm->arch.model.subfuncs.kmf)[1]); in kvm_s390_get_processor_subfunc()
1763 ((unsigned long *) &kvm->arch.model.subfuncs.kmo)[0], in kvm_s390_get_processor_subfunc()
1764 ((unsigned long *) &kvm->arch.model.subfuncs.kmo)[1]); in kvm_s390_get_processor_subfunc()
1766 ((unsigned long *) &kvm->arch.model.subfuncs.pcc)[0], in kvm_s390_get_processor_subfunc()
1767 ((unsigned long *) &kvm->arch.model.subfuncs.pcc)[1]); in kvm_s390_get_processor_subfunc()
1769 ((unsigned long *) &kvm->arch.model.subfuncs.ppno)[0], in kvm_s390_get_processor_subfunc()
1770 ((unsigned long *) &kvm->arch.model.subfuncs.ppno)[1]); in kvm_s390_get_processor_subfunc()
1772 ((unsigned long *) &kvm->arch.model.subfuncs.kma)[0], in kvm_s390_get_processor_subfunc()
1773 ((unsigned long *) &kvm->arch.model.subfuncs.kma)[1]); in kvm_s390_get_processor_subfunc()
1775 ((unsigned long *) &kvm->arch.model.subfuncs.kdsa)[0], in kvm_s390_get_processor_subfunc()
1776 ((unsigned long *) &kvm->arch.model.subfuncs.kdsa)[1]); in kvm_s390_get_processor_subfunc()
1778 ((unsigned long *) &kvm->arch.model.subfuncs.sortl)[0], in kvm_s390_get_processor_subfunc()
1779 ((unsigned long *) &kvm->arch.model.subfuncs.sortl)[1], in kvm_s390_get_processor_subfunc()
1780 ((unsigned long *) &kvm->arch.model.subfuncs.sortl)[2], in kvm_s390_get_processor_subfunc()
1781 ((unsigned long *) &kvm->arch.model.subfuncs.sortl)[3]); in kvm_s390_get_processor_subfunc()
1783 ((unsigned long *) &kvm->arch.model.subfuncs.dfltcc)[0], in kvm_s390_get_processor_subfunc()
1784 ((unsigned long *) &kvm->arch.model.subfuncs.dfltcc)[1], in kvm_s390_get_processor_subfunc()
1785 ((unsigned long *) &kvm->arch.model.subfuncs.dfltcc)[2], in kvm_s390_get_processor_subfunc()
1786 ((unsigned long *) &kvm->arch.model.subfuncs.dfltcc)[3]); in kvm_s390_get_processor_subfunc()
1868 unsigned long feat = kvm->arch.model.uv_feat_guest.feat; in kvm_s390_get_processor_uv_feat()
1941 read_lock(&kvm->arch.sca_lock); in kvm_s390_update_topology_change_report()
1942 sca = kvm->arch.sca; in kvm_s390_update_topology_change_report()
1948 read_unlock(&kvm->arch.sca_lock); in kvm_s390_update_topology_change_report()
1969 read_lock(&kvm->arch.sca_lock); in kvm_s390_get_topo_change_indication()
1970 topo = ((struct bsca_block *)kvm->arch.sca)->utility.mtcr; in kvm_s390_get_topo_change_indication()
1971 read_unlock(&kvm->arch.sca_lock); in kvm_s390_get_topo_change_indication()
2316 atomic64_dec(&kvm->arch.cmma_dirty_pages); in kvm_s390_get_cmma()
2357 if (!kvm->arch.use_cmma) in kvm_s390_get_cmma_bits()
2364 if (!peek && !kvm->arch.migration_mode) in kvm_s390_get_cmma_bits()
2373 if (!peek && !atomic64_read(&kvm->arch.cmma_dirty_pages)) { in kvm_s390_get_cmma_bits()
2391 if (kvm->arch.migration_mode) in kvm_s390_get_cmma_bits()
2392 args->remaining = atomic64_read(&kvm->arch.cmma_dirty_pages); in kvm_s390_get_cmma_bits()
2417 if (!kvm->arch.use_cmma) in kvm_s390_set_cmma_bits()
2599 if (kvm->arch.pv.dumping) in kvm_s390_pv_dmp()
2613 kvm->arch.pv.dumping = true; in kvm_s390_pv_dmp()
2621 if (!kvm->arch.pv.dumping) in kvm_s390_pv_dmp()
2634 if (!kvm->arch.pv.dumping) in kvm_s390_pv_dmp()
2692 set_bit(IRQ_PEND_EXT_SERVICE, &kvm->arch.float_int.masked_irqs); in kvm_s390_handle_pv()
2711 clear_bit(IRQ_PEND_EXT_SERVICE, &kvm->arch.float_int.masked_irqs); in kvm_s390_handle_pv()
2736 clear_bit(IRQ_PEND_EXT_SERVICE, &kvm->arch.float_int.masked_irqs); in kvm_s390_handle_pv()
3045 if (kvm->arch.use_irqchip) in kvm_arch_vm_ioctl()
3194 kvm->arch.crypto.crycbd = virt_to_phys(kvm->arch.crypto.crycb); in kvm_s390_set_crycb_format()
3197 kvm->arch.crypto.crycbd &= ~(CRYCB_FORMAT_MASK); in kvm_s390_set_crycb_format()
3204 kvm->arch.crypto.crycbd |= CRYCB_FORMAT2; in kvm_s390_set_crycb_format()
3206 kvm->arch.crypto.crycbd |= CRYCB_FORMAT1; in kvm_s390_set_crycb_format()
3227 struct kvm_s390_crypto_cb *crycb = kvm->arch.crypto.crycb; in kvm_arch_crypto_set_masks()
3231 switch (kvm->arch.crypto.crycbd & CRYCB_FORMAT_MASK) { in kvm_arch_crypto_set_masks()
3278 memset(&kvm->arch.crypto.crycb->apcb0, 0, in kvm_arch_crypto_clear_masks()
3279 sizeof(kvm->arch.crypto.crycb->apcb0)); in kvm_arch_crypto_clear_masks()
3280 memset(&kvm->arch.crypto.crycb->apcb1, 0, in kvm_arch_crypto_clear_masks()
3281 sizeof(kvm->arch.crypto.crycb->apcb1)); in kvm_arch_crypto_clear_masks()
3301 kvm->arch.crypto.crycb = &kvm->arch.sie_page2->crycb; in kvm_s390_crypto_init()
3303 init_rwsem(&kvm->arch.crypto.pqap_hook_rwsem); in kvm_s390_crypto_init()
3309 kvm->arch.crypto.aes_kw = 1; in kvm_s390_crypto_init()
3310 kvm->arch.crypto.dea_kw = 1; in kvm_s390_crypto_init()
3311 get_random_bytes(kvm->arch.crypto.crycb->aes_wrapping_key_mask, in kvm_s390_crypto_init()
3312 sizeof(kvm->arch.crypto.crycb->aes_wrapping_key_mask)); in kvm_s390_crypto_init()
3313 get_random_bytes(kvm->arch.crypto.crycb->dea_wrapping_key_mask, in kvm_s390_crypto_init()
3314 sizeof(kvm->arch.crypto.crycb->dea_wrapping_key_mask)); in kvm_s390_crypto_init()
3319 if (kvm->arch.use_esca) in sca_dispose()
3320 free_pages_exact(kvm->arch.sca, sizeof(struct esca_block)); in sca_dispose()
3322 free_page((unsigned long)(kvm->arch.sca)); in sca_dispose()
3323 kvm->arch.sca = NULL; in sca_dispose()
3360 rwlock_init(&kvm->arch.sca_lock); in kvm_arch_init_vm()
3362 kvm->arch.sca = (struct bsca_block *) get_zeroed_page(alloc_flags); in kvm_arch_init_vm()
3363 if (!kvm->arch.sca) in kvm_arch_init_vm()
3369 kvm->arch.sca = (struct bsca_block *) in kvm_arch_init_vm()
3370 ((char *) kvm->arch.sca + sca_offset); in kvm_arch_init_vm()
3375 kvm->arch.dbf = debug_register(debug_name, 32, 1, 7 * sizeof(long)); in kvm_arch_init_vm()
3376 if (!kvm->arch.dbf) in kvm_arch_init_vm()
3380 kvm->arch.sie_page2 = in kvm_arch_init_vm()
3382 if (!kvm->arch.sie_page2) in kvm_arch_init_vm()
3385 kvm->arch.sie_page2->kvm = kvm; in kvm_arch_init_vm()
3386 kvm->arch.model.fac_list = kvm->arch.sie_page2->fac_list; in kvm_arch_init_vm()
3389 kvm->arch.model.fac_mask[i] = stfle_fac_list[i] & in kvm_arch_init_vm()
3392 kvm->arch.model.fac_list[i] = stfle_fac_list[i] & in kvm_arch_init_vm()
3395 kvm->arch.model.subfuncs = kvm_s390_available_subfunc; in kvm_arch_init_vm()
3398 set_kvm_facility(kvm->arch.model.fac_mask, 138); in kvm_arch_init_vm()
3399 set_kvm_facility(kvm->arch.model.fac_list, 138); in kvm_arch_init_vm()
3401 set_kvm_facility(kvm->arch.model.fac_mask, 74); in kvm_arch_init_vm()
3402 set_kvm_facility(kvm->arch.model.fac_list, 74); in kvm_arch_init_vm()
3404 set_kvm_facility(kvm->arch.model.fac_mask, 147); in kvm_arch_init_vm()
3405 set_kvm_facility(kvm->arch.model.fac_list, 147); in kvm_arch_init_vm()
3409 set_kvm_facility(kvm->arch.model.fac_mask, 65); in kvm_arch_init_vm()
3411 kvm->arch.model.cpuid = kvm_s390_get_initial_cpuid(); in kvm_arch_init_vm()
3412 kvm->arch.model.ibc = sclp.ibc & 0x0fff; in kvm_arch_init_vm()
3414 kvm->arch.model.uv_feat_guest.feat = 0; in kvm_arch_init_vm()
3425 mutex_init(&kvm->arch.float_int.ais_lock); in kvm_arch_init_vm()
3426 spin_lock_init(&kvm->arch.float_int.lock); in kvm_arch_init_vm()
3428 INIT_LIST_HEAD(&kvm->arch.float_int.lists[i]); in kvm_arch_init_vm()
3429 init_waitqueue_head(&kvm->arch.ipte_wq); in kvm_arch_init_vm()
3430 mutex_init(&kvm->arch.ipte_mutex); in kvm_arch_init_vm()
3432 debug_register_view(kvm->arch.dbf, &debug_sprintf_view); in kvm_arch_init_vm()
3444 kvm->arch.gmap = NULL; in kvm_arch_init_vm()
3445 kvm->arch.mem_limit = KVM_S390_NO_MEM_LIMIT; in kvm_arch_init_vm()
3452 kvm->arch.mem_limit = TASK_SIZE_MAX; in kvm_arch_init_vm()
3454 kvm->arch.mem_limit = min_t(unsigned long, TASK_SIZE_MAX, in kvm_arch_init_vm()
3456 kvm->arch.gmap = gmap_create(current->mm, kvm->arch.mem_limit - 1); in kvm_arch_init_vm()
3457 if (!kvm->arch.gmap) in kvm_arch_init_vm()
3459 kvm->arch.gmap->private = kvm; in kvm_arch_init_vm()
3460 kvm->arch.gmap->pfault_enabled = 0; in kvm_arch_init_vm()
3463 kvm->arch.use_pfmfi = sclp.has_pfmfi; in kvm_arch_init_vm()
3464 kvm->arch.use_skf = sclp.has_skey; in kvm_arch_init_vm()
3465 spin_lock_init(&kvm->arch.start_stop_lock); in kvm_arch_init_vm()
3469 INIT_LIST_HEAD(&kvm->arch.pv.need_cleanup); in kvm_arch_init_vm()
3470 kvm->arch.pv.set_aside = NULL; in kvm_arch_init_vm()
3475 free_page((unsigned long)kvm->arch.sie_page2); in kvm_arch_init_vm()
3476 debug_unregister(kvm->arch.dbf); in kvm_arch_init_vm()
3495 gmap_remove(vcpu->arch.gmap); in kvm_arch_vcpu_destroy()
3497 if (vcpu->kvm->arch.use_cmma) in kvm_arch_vcpu_destroy()
3502 free_page((unsigned long)(vcpu->arch.sie_block)); in kvm_arch_vcpu_destroy()
3524 if (kvm->arch.pv.mmu_notifier.ops) in kvm_arch_destroy_vm()
3525 mmu_notifier_unregister(&kvm->arch.pv.mmu_notifier, kvm->mm); in kvm_arch_destroy_vm()
3527 debug_unregister(kvm->arch.dbf); in kvm_arch_destroy_vm()
3528 free_page((unsigned long)kvm->arch.sie_page2); in kvm_arch_destroy_vm()
3530 gmap_remove(kvm->arch.gmap); in kvm_arch_destroy_vm()
3540 vcpu->arch.gmap = gmap_create(current->mm, -1UL); in __kvm_ucontrol_vcpu_init()
3541 if (!vcpu->arch.gmap) in __kvm_ucontrol_vcpu_init()
3543 vcpu->arch.gmap->private = vcpu->kvm; in __kvm_ucontrol_vcpu_init()
3552 read_lock(&vcpu->kvm->arch.sca_lock); in sca_del_vcpu()
3553 if (vcpu->kvm->arch.use_esca) { in sca_del_vcpu()
3554 struct esca_block *sca = vcpu->kvm->arch.sca; in sca_del_vcpu()
3559 struct bsca_block *sca = vcpu->kvm->arch.sca; in sca_del_vcpu()
3564 read_unlock(&vcpu->kvm->arch.sca_lock); in sca_del_vcpu()
3570 phys_addr_t sca_phys = virt_to_phys(vcpu->kvm->arch.sca); in sca_add_vcpu()
3573 vcpu->arch.sie_block->scaoh = sca_phys >> 32; in sca_add_vcpu()
3574 vcpu->arch.sie_block->scaol = sca_phys; in sca_add_vcpu()
3577 read_lock(&vcpu->kvm->arch.sca_lock); in sca_add_vcpu()
3578 if (vcpu->kvm->arch.use_esca) { in sca_add_vcpu()
3579 struct esca_block *sca = vcpu->kvm->arch.sca; in sca_add_vcpu()
3582 sca->cpu[vcpu->vcpu_id].sda = virt_to_phys(vcpu->arch.sie_block); in sca_add_vcpu()
3583 vcpu->arch.sie_block->scaoh = sca_phys >> 32; in sca_add_vcpu()
3584 vcpu->arch.sie_block->scaol = sca_phys & ESCA_SCAOL_MASK; in sca_add_vcpu()
3585 vcpu->arch.sie_block->ecb2 |= ECB2_ESCA; in sca_add_vcpu()
3588 struct bsca_block *sca = vcpu->kvm->arch.sca; in sca_add_vcpu()
3591 sca->cpu[vcpu->vcpu_id].sda = virt_to_phys(vcpu->arch.sie_block); in sca_add_vcpu()
3592 vcpu->arch.sie_block->scaoh = sca_phys >> 32; in sca_add_vcpu()
3593 vcpu->arch.sie_block->scaol = sca_phys; in sca_add_vcpu()
3596 read_unlock(&vcpu->kvm->arch.sca_lock); in sca_add_vcpu()
3619 struct bsca_block *old_sca = kvm->arch.sca; in sca_switch_to_extended()
3626 if (kvm->arch.use_esca) in sca_switch_to_extended()
3638 write_lock(&kvm->arch.sca_lock); in sca_switch_to_extended()
3643 vcpu->arch.sie_block->scaoh = scaoh; in sca_switch_to_extended()
3644 vcpu->arch.sie_block->scaol = scaol; in sca_switch_to_extended()
3645 vcpu->arch.sie_block->ecb2 |= ECB2_ESCA; in sca_switch_to_extended()
3647 kvm->arch.sca = new_sca; in sca_switch_to_extended()
3648 kvm->arch.use_esca = 1; in sca_switch_to_extended()
3650 write_unlock(&kvm->arch.sca_lock); in sca_switch_to_extended()
3656 old_sca, kvm->arch.sca); in sca_switch_to_extended()
3674 rc = kvm->arch.use_esca ? 0 : sca_switch_to_extended(kvm); in sca_can_add_vcpu()
3682 WARN_ON_ONCE(vcpu->arch.cputm_start != 0); in __start_cpu_timer_accounting()
3683 raw_write_seqcount_begin(&vcpu->arch.cputm_seqcount); in __start_cpu_timer_accounting()
3684 vcpu->arch.cputm_start = get_tod_clock_fast(); in __start_cpu_timer_accounting()
3685 raw_write_seqcount_end(&vcpu->arch.cputm_seqcount); in __start_cpu_timer_accounting()
3691 WARN_ON_ONCE(vcpu->arch.cputm_start == 0); in __stop_cpu_timer_accounting()
3692 raw_write_seqcount_begin(&vcpu->arch.cputm_seqcount); in __stop_cpu_timer_accounting()
3693 vcpu->arch.sie_block->cputm -= get_tod_clock_fast() - vcpu->arch.cputm_start; in __stop_cpu_timer_accounting()
3694 vcpu->arch.cputm_start = 0; in __stop_cpu_timer_accounting()
3695 raw_write_seqcount_end(&vcpu->arch.cputm_seqcount); in __stop_cpu_timer_accounting()
3701 WARN_ON_ONCE(vcpu->arch.cputm_enabled); in __enable_cpu_timer_accounting()
3702 vcpu->arch.cputm_enabled = true; in __enable_cpu_timer_accounting()
3709 WARN_ON_ONCE(!vcpu->arch.cputm_enabled); in __disable_cpu_timer_accounting()
3711 vcpu->arch.cputm_enabled = false; in __disable_cpu_timer_accounting()
3732 raw_write_seqcount_begin(&vcpu->arch.cputm_seqcount); in kvm_s390_set_cpu_timer()
3733 if (vcpu->arch.cputm_enabled) in kvm_s390_set_cpu_timer()
3734 vcpu->arch.cputm_start = get_tod_clock_fast(); in kvm_s390_set_cpu_timer()
3735 vcpu->arch.sie_block->cputm = cputm; in kvm_s390_set_cpu_timer()
3736 raw_write_seqcount_end(&vcpu->arch.cputm_seqcount); in kvm_s390_set_cpu_timer()
3746 if (unlikely(!vcpu->arch.cputm_enabled)) in kvm_s390_get_cpu_timer()
3747 return vcpu->arch.sie_block->cputm; in kvm_s390_get_cpu_timer()
3751 seq = raw_read_seqcount(&vcpu->arch.cputm_seqcount); in kvm_s390_get_cpu_timer()
3757 value = vcpu->arch.sie_block->cputm; in kvm_s390_get_cpu_timer()
3759 if (likely(vcpu->arch.cputm_start)) in kvm_s390_get_cpu_timer()
3760 value -= get_tod_clock_fast() - vcpu->arch.cputm_start; in kvm_s390_get_cpu_timer()
3761 } while (read_seqcount_retry(&vcpu->arch.cputm_seqcount, seq & ~1)); in kvm_s390_get_cpu_timer()
3770 if (vcpu->arch.cputm_enabled && !is_vcpu_idle(vcpu)) in kvm_arch_vcpu_load()
3778 if (vcpu->arch.cputm_enabled && !is_vcpu_idle(vcpu)) in kvm_arch_vcpu_put()
3788 vcpu->arch.sie_block->epoch = vcpu->kvm->arch.epoch; in kvm_arch_vcpu_postcreate()
3789 vcpu->arch.sie_block->epdx = vcpu->kvm->arch.epdx; in kvm_arch_vcpu_postcreate()
3793 vcpu->arch.gmap = vcpu->kvm->arch.gmap; in kvm_arch_vcpu_postcreate()
3796 if (test_kvm_facility(vcpu->kvm, 74) || vcpu->kvm->arch.user_instr0) in kvm_arch_vcpu_postcreate()
3797 vcpu->arch.sie_block->ictl |= ICTL_OPEREXC; in kvm_arch_vcpu_postcreate()
3802 if (test_bit_inv(nr, (unsigned long *)&kvm->arch.model.subfuncs.pckmo) && in kvm_has_pckmo_subfunc()
3832 if (!vcpu->kvm->arch.crypto.apie && !test_kvm_facility(vcpu->kvm, 76)) in kvm_s390_vcpu_crypto_setup()
3835 vcpu->arch.sie_block->crycbd = vcpu->kvm->arch.crypto.crycbd; in kvm_s390_vcpu_crypto_setup()
3836 vcpu->arch.sie_block->ecb3 &= ~(ECB3_AES | ECB3_DEA); in kvm_s390_vcpu_crypto_setup()
3837 vcpu->arch.sie_block->eca &= ~ECA_APIE; in kvm_s390_vcpu_crypto_setup()
3838 vcpu->arch.sie_block->ecd &= ~(ECD_ECC | ECD_HMAC); in kvm_s390_vcpu_crypto_setup()
3840 if (vcpu->kvm->arch.crypto.apie) in kvm_s390_vcpu_crypto_setup()
3841 vcpu->arch.sie_block->eca |= ECA_APIE; in kvm_s390_vcpu_crypto_setup()
3844 if (vcpu->kvm->arch.crypto.aes_kw) { in kvm_s390_vcpu_crypto_setup()
3845 vcpu->arch.sie_block->ecb3 |= ECB3_AES; in kvm_s390_vcpu_crypto_setup()
3848 vcpu->arch.sie_block->ecd |= ECD_ECC; in kvm_s390_vcpu_crypto_setup()
3850 vcpu->arch.sie_block->ecd |= ECD_HMAC; in kvm_s390_vcpu_crypto_setup()
3853 if (vcpu->kvm->arch.crypto.dea_kw) in kvm_s390_vcpu_crypto_setup()
3854 vcpu->arch.sie_block->ecb3 |= ECB3_DEA; in kvm_s390_vcpu_crypto_setup()
3859 free_page((unsigned long)phys_to_virt(vcpu->arch.sie_block->cbrlo)); in kvm_s390_vcpu_unsetup_cmma()
3860 vcpu->arch.sie_block->cbrlo = 0; in kvm_s390_vcpu_unsetup_cmma()
3870 vcpu->arch.sie_block->cbrlo = virt_to_phys(cbrlo_page); in kvm_s390_vcpu_setup_cmma()
3876 struct kvm_s390_cpu_model *model = &vcpu->kvm->arch.model; in kvm_s390_vcpu_setup_model()
3878 vcpu->arch.sie_block->ibc = model->ibc; in kvm_s390_vcpu_setup_model()
3880 vcpu->arch.sie_block->fac = virt_to_phys(model->fac_list); in kvm_s390_vcpu_setup_model()
3888 atomic_set(&vcpu->arch.sie_block->cpuflags, CPUSTAT_ZARCH | in kvm_s390_vcpu_setup()
3901 vcpu->arch.sie_block->ecb |= ECB_HOSTPROTINT; in kvm_s390_vcpu_setup()
3903 vcpu->arch.sie_block->ecb |= ECB_SRSI; in kvm_s390_vcpu_setup()
3905 vcpu->arch.sie_block->ecb |= ECB_PTF; in kvm_s390_vcpu_setup()
3907 vcpu->arch.sie_block->ecb |= ECB_TE; in kvm_s390_vcpu_setup()
3909 vcpu->arch.sie_block->ecb |= ECB_SPECI; in kvm_s390_vcpu_setup()
3911 if (test_kvm_facility(vcpu->kvm, 8) && vcpu->kvm->arch.use_pfmfi) in kvm_s390_vcpu_setup()
3912 vcpu->arch.sie_block->ecb2 |= ECB2_PFMFI; in kvm_s390_vcpu_setup()
3914 vcpu->arch.sie_block->ecb2 |= ECB2_IEP; in kvm_s390_vcpu_setup()
3915 vcpu->arch.sie_block->eca = ECA_MVPGI | ECA_PROTEXCI; in kvm_s390_vcpu_setup()
3917 vcpu->arch.sie_block->eca |= ECA_CEI; in kvm_s390_vcpu_setup()
3919 vcpu->arch.sie_block->eca |= ECA_IB; in kvm_s390_vcpu_setup()
3921 vcpu->arch.sie_block->eca |= ECA_SII; in kvm_s390_vcpu_setup()
3923 vcpu->arch.sie_block->eca |= ECA_SIGPI; in kvm_s390_vcpu_setup()
3925 vcpu->arch.sie_block->eca |= ECA_VX; in kvm_s390_vcpu_setup()
3926 vcpu->arch.sie_block->ecd |= ECD_HOSTREGMGMT; in kvm_s390_vcpu_setup()
3929 vcpu->arch.sie_block->ecd |= ECD_MEF; in kvm_s390_vcpu_setup()
3931 vcpu->arch.sie_block->ecd |= ECD_ETOKENF; in kvm_s390_vcpu_setup()
3932 if (vcpu->arch.sie_block->gd) { in kvm_s390_vcpu_setup()
3933 vcpu->arch.sie_block->eca |= ECA_AIV; in kvm_s390_vcpu_setup()
3935 vcpu->arch.sie_block->gd & 0x3, vcpu->vcpu_id); in kvm_s390_vcpu_setup()
3937 vcpu->arch.sie_block->sdnxo = virt_to_phys(&vcpu->run->s.regs.sdnx) | SDNXC; in kvm_s390_vcpu_setup()
3938 vcpu->arch.sie_block->riccbd = virt_to_phys(&vcpu->run->s.regs.riccb); in kvm_s390_vcpu_setup()
3943 vcpu->arch.sie_block->ictl |= ICTL_ISKE | ICTL_SSKE | ICTL_RRBE; in kvm_s390_vcpu_setup()
3945 if (vcpu->kvm->arch.use_cmma) { in kvm_s390_vcpu_setup()
3950 hrtimer_setup(&vcpu->arch.ckc_timer, kvm_s390_idle_wakeup, CLOCK_MONOTONIC, in kvm_s390_vcpu_setup()
3953 vcpu->arch.sie_block->hpid = HPID_KVM; in kvm_s390_vcpu_setup()
3987 vcpu->arch.sie_block = &sie_page->sie_block; in kvm_arch_vcpu_create()
3988 vcpu->arch.sie_block->itdba = virt_to_phys(&sie_page->itdb); in kvm_arch_vcpu_create()
3991 vcpu->arch.sie_block->mso = 0; in kvm_arch_vcpu_create()
3992 vcpu->arch.sie_block->msl = sclp.hamax; in kvm_arch_vcpu_create()
3994 vcpu->arch.sie_block->icpua = vcpu->vcpu_id; in kvm_arch_vcpu_create()
3995 spin_lock_init(&vcpu->arch.local_int.lock); in kvm_arch_vcpu_create()
3996 vcpu->arch.sie_block->gd = kvm_s390_get_gisa_desc(vcpu->kvm); in kvm_arch_vcpu_create()
3997 seqcount_init(&vcpu->arch.cputm_seqcount); in kvm_arch_vcpu_create()
3999 vcpu->arch.pfault_token = KVM_S390_PFAULT_TOKEN_INVALID; in kvm_arch_vcpu_create()
4008 vcpu->arch.acrs_loaded = false; in kvm_arch_vcpu_create()
4033 vcpu->vcpu_id, vcpu, vcpu->arch.sie_block); in kvm_arch_vcpu_create()
4034 trace_kvm_s390_create_vcpu(vcpu->vcpu_id, vcpu, vcpu->arch.sie_block); in kvm_arch_vcpu_create()
4045 gmap_remove(vcpu->arch.gmap); in kvm_arch_vcpu_create()
4047 free_page((unsigned long)(vcpu->arch.sie_block)); in kvm_arch_vcpu_create()
4053 clear_bit(vcpu->vcpu_idx, vcpu->kvm->arch.gisa_int.kicked_mask); in kvm_arch_vcpu_runnable()
4059 return !(vcpu->arch.sie_block->gpsw.mask & PSW_MASK_PSTATE); in kvm_arch_vcpu_in_kernel()
4064 atomic_or(PROG_BLOCK_SIE, &vcpu->arch.sie_block->prog20); in kvm_s390_vcpu_block()
4070 atomic_andnot(PROG_BLOCK_SIE, &vcpu->arch.sie_block->prog20); in kvm_s390_vcpu_unblock()
4075 atomic_or(PROG_REQUEST, &vcpu->arch.sie_block->prog20); in kvm_s390_vcpu_request()
4081 return atomic_read(&vcpu->arch.sie_block->prog20) & in kvm_s390_vcpu_sie_inhibited()
4087 atomic_andnot(PROG_REQUEST, &vcpu->arch.sie_block->prog20); in kvm_s390_vcpu_request_handled()
4098 while (vcpu->arch.sie_block->prog0c & PROG_IN_SIE) in exit_sie()
4160 r = put_user(vcpu->arch.sie_block->todpr, in kvm_arch_vcpu_ioctl_get_one_reg()
4164 r = put_user(vcpu->arch.sie_block->epoch, in kvm_arch_vcpu_ioctl_get_one_reg()
4172 r = put_user(vcpu->arch.sie_block->ckc, in kvm_arch_vcpu_ioctl_get_one_reg()
4176 r = put_user(vcpu->arch.pfault_token, in kvm_arch_vcpu_ioctl_get_one_reg()
4180 r = put_user(vcpu->arch.pfault_compare, in kvm_arch_vcpu_ioctl_get_one_reg()
4184 r = put_user(vcpu->arch.pfault_select, in kvm_arch_vcpu_ioctl_get_one_reg()
4188 r = put_user(vcpu->arch.sie_block->pp, in kvm_arch_vcpu_ioctl_get_one_reg()
4192 r = put_user(vcpu->arch.sie_block->gbea, in kvm_arch_vcpu_ioctl_get_one_reg()
4210 r = get_user(vcpu->arch.sie_block->todpr, in kvm_arch_vcpu_ioctl_set_one_reg()
4214 r = get_user(vcpu->arch.sie_block->epoch, in kvm_arch_vcpu_ioctl_set_one_reg()
4223 r = get_user(vcpu->arch.sie_block->ckc, in kvm_arch_vcpu_ioctl_set_one_reg()
4227 r = get_user(vcpu->arch.pfault_token, in kvm_arch_vcpu_ioctl_set_one_reg()
4229 if (vcpu->arch.pfault_token == KVM_S390_PFAULT_TOKEN_INVALID) in kvm_arch_vcpu_ioctl_set_one_reg()
4233 r = get_user(vcpu->arch.pfault_compare, in kvm_arch_vcpu_ioctl_set_one_reg()
4237 r = get_user(vcpu->arch.pfault_select, in kvm_arch_vcpu_ioctl_set_one_reg()
4241 r = get_user(vcpu->arch.sie_block->pp, in kvm_arch_vcpu_ioctl_set_one_reg()
4245 r = get_user(vcpu->arch.sie_block->gbea, in kvm_arch_vcpu_ioctl_set_one_reg()
4257 vcpu->arch.sie_block->gpsw.mask &= ~PSW_MASK_RI; in kvm_arch_vcpu_ioctl_normal_reset()
4258 vcpu->arch.pfault_token = KVM_S390_PFAULT_TOKEN_INVALID; in kvm_arch_vcpu_ioctl_normal_reset()
4276 vcpu->arch.sie_block->gpsw.mask = 0; in kvm_arch_vcpu_ioctl_initial_reset()
4277 vcpu->arch.sie_block->gpsw.addr = 0; in kvm_arch_vcpu_ioctl_initial_reset()
4280 vcpu->arch.sie_block->ckc = 0; in kvm_arch_vcpu_ioctl_initial_reset()
4281 memset(vcpu->arch.sie_block->gcr, 0, sizeof(vcpu->arch.sie_block->gcr)); in kvm_arch_vcpu_ioctl_initial_reset()
4282 vcpu->arch.sie_block->gcr[0] = CR0_INITIAL_MASK; in kvm_arch_vcpu_ioctl_initial_reset()
4283 vcpu->arch.sie_block->gcr[14] = CR14_INITIAL_MASK; in kvm_arch_vcpu_ioctl_initial_reset()
4304 vcpu->arch.sie_block->gbea = 1; in kvm_arch_vcpu_ioctl_initial_reset()
4305 vcpu->arch.sie_block->pp = 0; in kvm_arch_vcpu_ioctl_initial_reset()
4306 vcpu->arch.sie_block->fpf &= ~FPF_BPBC; in kvm_arch_vcpu_ioctl_initial_reset()
4307 vcpu->arch.sie_block->todpr = 0; in kvm_arch_vcpu_ioctl_initial_reset()
4349 memcpy(&vcpu->arch.sie_block->gcr, &sregs->crs, sizeof(sregs->crs)); in kvm_arch_vcpu_ioctl_set_sregs()
4361 memcpy(&sregs->crs, &vcpu->arch.sie_block->gcr, sizeof(sregs->crs)); in kvm_arch_vcpu_ioctl_get_sregs()
4450 vcpu->arch.guestdbg.last_bp = 0; in kvm_arch_vcpu_ioctl_set_guest_debug()
4577 mmap_read_lock(vcpu->arch.gmap->mm); in kvm_s390_mprotect_notify_prefix()
4579 rc = __kvm_s390_mprotect_many(vcpu->arch.gmap, gaddr, 2, PROT_WRITE, GMAP_NOTIFY_MPROT); in kvm_s390_mprotect_notify_prefix()
4581 mmap_read_unlock(vcpu->arch.gmap->mm); in kvm_s390_mprotect_notify_prefix()
4612 vcpu->arch.sie_block->ihcpu = 0xffff; in kvm_s390_handle_requests()
4633 vcpu->arch.sie_block->ictl |= ICTL_OPEREXC; in kvm_s390_handle_requests()
4643 vcpu->arch.sie_block->ecb2 &= ~ECB2_CMMA; in kvm_s390_handle_requests()
4652 if ((vcpu->kvm->arch.use_cmma) && in kvm_s390_handle_requests()
4654 vcpu->arch.sie_block->ecb2 |= ECB2_CMMA; in kvm_s390_handle_requests()
4674 kvm->arch.epoch = gtod->tod - clk.tod; in __kvm_s390_set_tod_clock()
4675 kvm->arch.epdx = 0; in __kvm_s390_set_tod_clock()
4677 kvm->arch.epdx = gtod->epoch_idx - clk.ei; in __kvm_s390_set_tod_clock()
4678 if (kvm->arch.epoch > gtod->tod) in __kvm_s390_set_tod_clock()
4679 kvm->arch.epdx -= 1; in __kvm_s390_set_tod_clock()
4684 vcpu->arch.sie_block->epoch = kvm->arch.epoch; in __kvm_s390_set_tod_clock()
4685 vcpu->arch.sie_block->epdx = kvm->arch.epdx; in __kvm_s390_set_tod_clock()
4721 trace_kvm_s390_pfault_init(vcpu, work->arch.pfault_token); in kvm_arch_async_page_not_present()
4722 __kvm_inject_pfault_token(vcpu, true, work->arch.pfault_token); in kvm_arch_async_page_not_present()
4730 trace_kvm_s390_pfault_done(vcpu, work->arch.pfault_token); in kvm_arch_async_page_present()
4731 __kvm_inject_pfault_token(vcpu, false, work->arch.pfault_token); in kvm_arch_async_page_present()
4752 struct kvm_arch_async_pf arch; in kvm_arch_setup_async_pf() local
4754 if (vcpu->arch.pfault_token == KVM_S390_PFAULT_TOKEN_INVALID) in kvm_arch_setup_async_pf()
4756 if ((vcpu->arch.sie_block->gpsw.mask & vcpu->arch.pfault_select) != in kvm_arch_setup_async_pf()
4757 vcpu->arch.pfault_compare) in kvm_arch_setup_async_pf()
4763 if (!(vcpu->arch.sie_block->gcr[0] & CR0_SERVICE_SIGNAL_SUBMASK)) in kvm_arch_setup_async_pf()
4765 if (!vcpu->arch.gmap->pfault_enabled) in kvm_arch_setup_async_pf()
4769 if (read_guest_real(vcpu, vcpu->arch.pfault_token, &arch.pfault_token, 8)) in kvm_arch_setup_async_pf()
4772 return kvm_setup_async_pf(vcpu, current->thread.gmap_teid.addr * PAGE_SIZE, hva, &arch); in kvm_arch_setup_async_pf()
4786 vcpu->arch.sie_block->gg14 = vcpu->run->s.regs.gprs[14]; in vcpu_pre_run()
4787 vcpu->arch.sie_block->gg15 = vcpu->run->s.regs.gprs[15]; in vcpu_pre_run()
4807 clear_bit(vcpu->vcpu_idx, vcpu->kvm->arch.gisa_int.kicked_mask); in vcpu_pre_run()
4809 vcpu->arch.sie_block->icptcode = 0; in vcpu_pre_run()
4811 cpuflags = atomic_read(&vcpu->arch.sie_block->cpuflags); in vcpu_pre_run()
4837 rc = read_guest_instr(vcpu, vcpu->arch.sie_block->gpsw.addr, &opcode, 1); in vcpu_post_run_addressing_exception()
4846 pgm_info = vcpu->arch.pgm; in vcpu_post_run_addressing_exception()
4886 if (vcpu->arch.gmap->pfault_enabled) in __kvm_s390_handle_dat_fault()
4915 mmap_read_lock(vcpu->arch.gmap->mm); in __kvm_s390_handle_dat_fault()
4917 rc = fixup_user_fault(vcpu->arch.gmap->mm, vmaddr, fault_flags, &unlocked); in __kvm_s390_handle_dat_fault()
4919 rc = __gmap_link(vcpu->arch.gmap, gaddr, vmaddr); in __kvm_s390_handle_dat_fault()
4923 mmap_read_unlock(vcpu->arch.gmap->mm); in __kvm_s390_handle_dat_fault()
4941 mmap_read_lock(vcpu->arch.gmap->mm); in vcpu_dat_fault_handler()
4942 gaddr_tmp = __gmap_translate(vcpu->arch.gmap, gaddr); in vcpu_dat_fault_handler()
4943 mmap_read_unlock(vcpu->arch.gmap->mm); in vcpu_dat_fault_handler()
5032 vcpu->arch.sie_block->icptcode); in vcpu_post_run()
5033 trace_kvm_s390_sie_exit(vcpu, vcpu->arch.sie_block->icptcode); in vcpu_post_run()
5038 vcpu->run->s.regs.gprs[14] = vcpu->arch.sie_block->gg14; in vcpu_post_run()
5039 vcpu->run->s.regs.gprs[15] = vcpu->arch.sie_block->gg15; in vcpu_post_run()
5043 sie_page = container_of(vcpu->arch.sie_block, in vcpu_post_run()
5050 if (vcpu->arch.sie_block->icptcode > 0) { in vcpu_post_run()
5056 vcpu->run->s390_sieic.icptcode = vcpu->arch.sie_block->icptcode; in vcpu_post_run()
5057 vcpu->run->s390_sieic.ipa = vcpu->arch.sie_block->ipa; in vcpu_post_run()
5058 vcpu->run->s390_sieic.ipb = vcpu->arch.sie_block->ipb; in vcpu_post_run()
5069 struct sie_page *sie_page = (struct sie_page *)vcpu->arch.sie_block; in __vcpu_run()
5096 exit_reason = sie64a(vcpu->arch.sie_block, in __vcpu_run()
5098 vcpu->arch.gmap->asce); in __vcpu_run()
5109 if (vcpu->arch.sie_block->icptcode == ICPT_PV_INSTR || in __vcpu_run()
5110 vcpu->arch.sie_block->icptcode == ICPT_PV_PREF) { in __vcpu_run()
5111 vcpu->arch.sie_block->gpsw.mask &= ~PSW_INT_MASK; in __vcpu_run()
5135 vcpu->arch.sie_block->gpsw.mask = kvm_run->psw_mask; in sync_regs_fmt2()
5136 vcpu->arch.sie_block->gpsw.addr = kvm_run->psw_addr; in sync_regs_fmt2()
5138 vcpu->arch.sie_block->todpr = kvm_run->s.regs.todpr; in sync_regs_fmt2()
5139 vcpu->arch.sie_block->pp = kvm_run->s.regs.pp; in sync_regs_fmt2()
5140 vcpu->arch.sie_block->gbea = kvm_run->s.regs.gbea; in sync_regs_fmt2()
5143 vcpu->arch.pfault_token = kvm_run->s.regs.pft; in sync_regs_fmt2()
5144 vcpu->arch.pfault_select = kvm_run->s.regs.pfs; in sync_regs_fmt2()
5145 vcpu->arch.pfault_compare = kvm_run->s.regs.pfc; in sync_regs_fmt2()
5146 if (vcpu->arch.pfault_token == KVM_S390_PFAULT_TOKEN_INVALID) in sync_regs_fmt2()
5150 vcpu->arch.diag318_info.val = kvm_run->s.regs.diag318; in sync_regs_fmt2()
5151 vcpu->arch.sie_block->cpnc = vcpu->arch.diag318_info.cpnc; in sync_regs_fmt2()
5152 VCPU_EVENT(vcpu, 3, "setting cpnc to %d", vcpu->arch.diag318_info.cpnc); in sync_regs_fmt2()
5161 !(vcpu->arch.sie_block->ecb3 & ECB3_RI)) { in sync_regs_fmt2()
5163 vcpu->arch.sie_block->ecb3 |= ECB3_RI; in sync_regs_fmt2()
5172 !vcpu->arch.gs_enabled) { in sync_regs_fmt2()
5174 vcpu->arch.sie_block->ecb |= ECB_GS; in sync_regs_fmt2()
5175 vcpu->arch.sie_block->ecd |= ECD_HOSTREGMGMT; in sync_regs_fmt2()
5176 vcpu->arch.gs_enabled = 1; in sync_regs_fmt2()
5180 vcpu->arch.sie_block->fpf &= ~FPF_BPBC; in sync_regs_fmt2()
5181 vcpu->arch.sie_block->fpf |= kvm_run->s.regs.bpbc ? FPF_BPBC : 0; in sync_regs_fmt2()
5187 vcpu->arch.host_gscb = current->thread.gs_cb; in sync_regs_fmt2()
5188 save_gs_cb(vcpu->arch.host_gscb); in sync_regs_fmt2()
5190 if (vcpu->arch.gs_enabled) { in sync_regs_fmt2()
5207 memcpy(&vcpu->arch.sie_block->gcr, &kvm_run->s.regs.crs, 128); in sync_regs()
5213 vcpu->arch.sie_block->ckc = kvm_run->s.regs.ckc; in sync_regs()
5215 save_access_regs(vcpu->arch.host_acrs); in sync_regs()
5217 vcpu->arch.acrs_loaded = true; in sync_regs()
5232 vcpu->arch.sie_block->gpsw.mask &= ~PSW_MASK_CC; in sync_regs()
5233 vcpu->arch.sie_block->gpsw.mask |= kvm_run->psw_mask & in sync_regs()
5244 kvm_run->s.regs.todpr = vcpu->arch.sie_block->todpr; in store_regs_fmt2()
5245 kvm_run->s.regs.pp = vcpu->arch.sie_block->pp; in store_regs_fmt2()
5246 kvm_run->s.regs.gbea = vcpu->arch.sie_block->gbea; in store_regs_fmt2()
5247 kvm_run->s.regs.bpbc = (vcpu->arch.sie_block->fpf & FPF_BPBC) == FPF_BPBC; in store_regs_fmt2()
5248 kvm_run->s.regs.diag318 = vcpu->arch.diag318_info.val; in store_regs_fmt2()
5252 if (vcpu->arch.gs_enabled) in store_regs_fmt2()
5254 current->thread.gs_cb = vcpu->arch.host_gscb; in store_regs_fmt2()
5255 restore_gs_cb(vcpu->arch.host_gscb); in store_regs_fmt2()
5256 if (!vcpu->arch.host_gscb) in store_regs_fmt2()
5258 vcpu->arch.host_gscb = NULL; in store_regs_fmt2()
5268 kvm_run->psw_mask = vcpu->arch.sie_block->gpsw.mask; in store_regs()
5269 kvm_run->psw_addr = vcpu->arch.sie_block->gpsw.addr; in store_regs()
5271 memcpy(&kvm_run->s.regs.crs, &vcpu->arch.sie_block->gcr, 128); in store_regs()
5273 kvm_run->s.regs.ckc = vcpu->arch.sie_block->ckc; in store_regs()
5274 kvm_run->s.regs.pft = vcpu->arch.pfault_token; in store_regs()
5275 kvm_run->s.regs.pfs = vcpu->arch.pfault_select; in store_regs()
5276 kvm_run->s.regs.pfc = vcpu->arch.pfault_compare; in store_regs()
5278 restore_access_regs(vcpu->arch.host_acrs); in store_regs()
5279 vcpu->arch.acrs_loaded = false; in store_regs()
5297 if (vcpu->kvm->arch.pv.dumping) in kvm_arch_vcpu_ioctl_run()
5402 &vcpu->arch.sie_block->gpsw, 16); in kvm_s390_store_status_unloaded()
5408 &vcpu->arch.sie_block->todpr, 4); in kvm_s390_store_status_unloaded()
5412 clkcomp = vcpu->arch.sie_block->ckc >> 8; in kvm_s390_store_status_unloaded()
5418 &vcpu->arch.sie_block->gcr, 128); in kvm_s390_store_status_unloaded()
5468 spin_lock(&vcpu->kvm->arch.start_stop_lock); in kvm_s390_vcpu_start()
5475 spin_unlock(&vcpu->kvm->arch.start_stop_lock); in kvm_s390_vcpu_start()
5504 vcpu->arch.sie_block->gpsw.mask &= ~PSW_INT_MASK; in kvm_s390_vcpu_start()
5510 spin_unlock(&vcpu->kvm->arch.start_stop_lock); in kvm_s390_vcpu_start()
5524 spin_lock(&vcpu->kvm->arch.start_stop_lock); in kvm_s390_vcpu_stop()
5531 spin_unlock(&vcpu->kvm->arch.start_stop_lock); in kvm_s390_vcpu_stop()
5564 spin_unlock(&vcpu->kvm->arch.start_stop_lock); in kvm_s390_vcpu_stop()
5578 if (!vcpu->kvm->arch.css_support) { in kvm_vcpu_ioctl_enable_cap()
5579 vcpu->kvm->arch.css_support = 1; in kvm_vcpu_ioctl_enable_cap()
5603 if (mop->size + mop->sida_offset > sida_size(vcpu->arch.sie_block)) in kvm_s390_vcpu_sida_op()
5608 sida_addr = (char *)sida_addr(vcpu->arch.sie_block) + mop->sida_offset; in kvm_s390_vcpu_sida_op()
5673 kvm_s390_inject_prog_irq(vcpu, &vcpu->arch.pgm); in kvm_s390_vcpu_mem_op()
5758 if (!vcpu->kvm->arch.pv.dumping) in kvm_s390_handle_pv_vcpu_dump()
5878 r = gmap_map_segment(vcpu->arch.gmap, ucasmap.user_addr, in kvm_arch_vcpu_ioctl()
5895 r = gmap_unmap_segment(vcpu->arch.gmap, ucasmap.vcpu_addr, in kvm_arch_vcpu_ioctl()
5998 vmf->page = virt_to_page(vcpu->arch.sie_block); in kvm_arch_vcpu_fault()
6041 if ((new->base_gfn * PAGE_SIZE) + size > kvm->arch.mem_limit) in kvm_arch_prepare_memory_region()
6045 if (!kvm->arch.migration_mode) in kvm_arch_prepare_memory_region()
6076 rc = gmap_unmap_segment(kvm->arch.gmap, old->base_gfn * PAGE_SIZE, in kvm_arch_commit_memory_region()
6080 rc = gmap_unmap_segment(kvm->arch.gmap, old->base_gfn * PAGE_SIZE, in kvm_arch_commit_memory_region()
6086 rc = gmap_map_segment(kvm->arch.gmap, new->userspace_addr, in kvm_arch_commit_memory_region()