Lines Matching full:matrix
3 * Adjunct processor matrix VFIO device driver callbacks.
39 * @matrix_mdev: the associated mediated matrix
44 * Verify that the APID and the APQI are set in the matrix.
54 if (!test_bit_inv(AP_QID_CARD(apqn), matrix_mdev->matrix.apm)) in vfio_ap_get_queue()
56 if (!test_bit_inv(AP_QID_QUEUE(apqn), matrix_mdev->matrix.aqm)) in vfio_ap_get_queue()
318 struct ap_matrix *matrix) in vfio_ap_matrix_init() argument
320 matrix->apm_max = info->apxa ? info->Na : 63; in vfio_ap_matrix_init()
321 matrix->aqm_max = info->apxa ? info->Nd : 15; in vfio_ap_matrix_init()
322 matrix->adm_max = info->apxa ? info->Nd : 15; in vfio_ap_matrix_init()
339 vfio_ap_matrix_init(&matrix_dev->info, &matrix_mdev->matrix); in vfio_ap_mdev_create()
466 * @matrix_dev: a mediated matrix device
512 unsigned long nbits = matrix_mdev->matrix.aqm_max + 1; in vfio_ap_mdev_verify_queues_reserved_for_apid()
514 if (find_first_bit_inv(matrix_mdev->matrix.aqm, nbits) >= nbits) in vfio_ap_mdev_verify_queues_reserved_for_apid()
517 for_each_set_bit_inv(apqi, matrix_mdev->matrix.aqm, nbits) { in vfio_ap_mdev_verify_queues_reserved_for_apid()
530 * and AP queue indexes comprising the AP matrix are not configured for another
533 * @matrix_mdev: the mediated matrix device
554 if (!bitmap_and(apm, matrix_mdev->matrix.apm, in vfio_ap_mdev_verify_no_sharing()
555 lstdev->matrix.apm, AP_DEVICES)) in vfio_ap_mdev_verify_no_sharing()
558 if (!bitmap_and(aqm, matrix_mdev->matrix.aqm, in vfio_ap_mdev_verify_no_sharing()
559 lstdev->matrix.aqm, AP_DOMAINS)) in vfio_ap_mdev_verify_no_sharing()
571 * @dev: the matrix device
572 * @attr: the mediated matrix device's assign_adapter attribute
578 * matrix device's APM.
598 * matrix device
617 if (apid > matrix_mdev->matrix.apm_max) in assign_adapter_store()
631 set_bit_inv(apid, matrix_mdev->matrix.apm); in assign_adapter_store()
641 clear_bit_inv(apid, matrix_mdev->matrix.apm); in assign_adapter_store()
652 * @dev: the matrix device
653 * @attr: the mediated matrix device's unassign_adapter attribute
658 * matrix device's APM.
683 if (apid > matrix_mdev->matrix.apm_max) in unassign_adapter_store()
687 clear_bit_inv((unsigned long)apid, matrix_mdev->matrix.apm); in unassign_adapter_store()
700 unsigned long nbits = matrix_mdev->matrix.apm_max + 1; in vfio_ap_mdev_verify_queues_reserved_for_apqi()
702 if (find_first_bit_inv(matrix_mdev->matrix.apm, nbits) >= nbits) in vfio_ap_mdev_verify_queues_reserved_for_apqi()
705 for_each_set_bit_inv(apid, matrix_mdev->matrix.apm, nbits) { in vfio_ap_mdev_verify_queues_reserved_for_apqi()
717 * @dev: the matrix device
718 * @attr: the mediated matrix device's assign_domain attribute
724 * matrix device's AQM.
744 * matrix device
754 unsigned long max_apqi = matrix_mdev->matrix.aqm_max; in assign_domain_store()
772 set_bit_inv(apqi, matrix_mdev->matrix.aqm); in assign_domain_store()
782 clear_bit_inv(apqi, matrix_mdev->matrix.aqm); in assign_domain_store()
794 * @dev: the matrix device
795 * @attr: the mediated matrix device's unassign_domain attribute
801 * mediated matrix device's AQM.
825 if (apqi > matrix_mdev->matrix.aqm_max) in unassign_domain_store()
829 clear_bit_inv((unsigned long)apqi, matrix_mdev->matrix.aqm); in unassign_domain_store()
839 * @dev: the matrix device
840 * @attr: the mediated matrix device's assign_control_domain attribute
845 * matrix device's ADM.
869 if (id > matrix_mdev->matrix.adm_max) in assign_control_domain_store()
878 set_bit_inv(id, matrix_mdev->matrix.adm); in assign_control_domain_store()
888 * @dev: the matrix device
889 * @attr: the mediated matrix device's unassign_control_domain attribute
894 * mediated matrix device's ADM.
909 unsigned long max_domid = matrix_mdev->matrix.adm_max; in unassign_control_domain_store()
922 clear_bit_inv(domid, matrix_mdev->matrix.adm); in unassign_control_domain_store()
939 unsigned long max_domid = matrix_mdev->matrix.adm_max; in control_domains_show()
942 for_each_set_bit_inv(id, matrix_mdev->matrix.adm, max_domid + 1) { in control_domains_show()
963 unsigned long napm_bits = matrix_mdev->matrix.apm_max + 1; in matrix_show()
964 unsigned long naqm_bits = matrix_mdev->matrix.aqm_max + 1; in matrix_show()
968 apid1 = find_first_bit_inv(matrix_mdev->matrix.apm, napm_bits); in matrix_show()
969 apqi1 = find_first_bit_inv(matrix_mdev->matrix.aqm, naqm_bits); in matrix_show()
974 for_each_set_bit_inv(apid, matrix_mdev->matrix.apm, napm_bits) { in matrix_show()
975 for_each_set_bit_inv(apqi, matrix_mdev->matrix.aqm, in matrix_show()
984 for_each_set_bit_inv(apid, matrix_mdev->matrix.apm, napm_bits) { in matrix_show()
990 for_each_set_bit_inv(apqi, matrix_mdev->matrix.aqm, naqm_bits) { in matrix_show()
1001 static DEVICE_ATTR_RO(matrix);
1027 * @matrix_mdev: a mediated matrix device
1030 * Verifies no other mediated matrix device has @kvm and sets a reference to
1033 * Return 0 if no other mediated matrix device has a reference to @kvm;
1111 kvm_arch_crypto_set_masks(matrix_mdev->kvm, matrix_mdev->matrix.apm, in vfio_ap_mdev_group_notifier()
1112 matrix_mdev->matrix.aqm, in vfio_ap_mdev_group_notifier()
1113 matrix_mdev->matrix.adm); in vfio_ap_mdev_group_notifier()
1192 for_each_set_bit_inv(apid, matrix_mdev->matrix.apm, in vfio_ap_mdev_reset_queues()
1193 matrix_mdev->matrix.apm_max + 1) { in vfio_ap_mdev_reset_queues()
1194 for_each_set_bit_inv(apqi, matrix_mdev->matrix.aqm, in vfio_ap_mdev_reset_queues()
1195 matrix_mdev->matrix.aqm_max + 1) { in vfio_ap_mdev_reset_queues()