Lines Matching full:matrix
3 * Adjunct processor matrix VFIO device driver callbacks.
38 * @matrix_mdev: the associated mediated matrix
43 * 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()
317 struct ap_matrix *matrix) in vfio_ap_matrix_init() argument
319 matrix->apm_max = info->apxa ? info->Na : 63; in vfio_ap_matrix_init()
320 matrix->aqm_max = info->apxa ? info->Nd : 15; in vfio_ap_matrix_init()
321 matrix->adm_max = info->apxa ? info->Nd : 15; in vfio_ap_matrix_init()
338 vfio_ap_matrix_init(&matrix_dev->info, &matrix_mdev->matrix); in vfio_ap_mdev_create()
465 * @matrix_dev: a mediated matrix device
511 unsigned long nbits = matrix_mdev->matrix.aqm_max + 1; in vfio_ap_mdev_verify_queues_reserved_for_apid()
513 if (find_first_bit_inv(matrix_mdev->matrix.aqm, nbits) >= nbits) in vfio_ap_mdev_verify_queues_reserved_for_apid()
516 for_each_set_bit_inv(apqi, matrix_mdev->matrix.aqm, nbits) { in vfio_ap_mdev_verify_queues_reserved_for_apid()
529 * and AP queue indexes comprising the AP matrix are not configured for another
532 * @matrix_mdev: the mediated matrix device
553 if (!bitmap_and(apm, matrix_mdev->matrix.apm, in vfio_ap_mdev_verify_no_sharing()
554 lstdev->matrix.apm, AP_DEVICES)) in vfio_ap_mdev_verify_no_sharing()
557 if (!bitmap_and(aqm, matrix_mdev->matrix.aqm, in vfio_ap_mdev_verify_no_sharing()
558 lstdev->matrix.aqm, AP_DOMAINS)) in vfio_ap_mdev_verify_no_sharing()
570 * @dev: the matrix device
571 * @attr: the mediated matrix device's assign_adapter attribute
577 * matrix device's APM.
597 * matrix device
616 if (apid > matrix_mdev->matrix.apm_max) in assign_adapter_store()
630 set_bit_inv(apid, matrix_mdev->matrix.apm); in assign_adapter_store()
640 clear_bit_inv(apid, matrix_mdev->matrix.apm); in assign_adapter_store()
651 * @dev: the matrix device
652 * @attr: the mediated matrix device's unassign_adapter attribute
657 * matrix device's APM.
682 if (apid > matrix_mdev->matrix.apm_max) in unassign_adapter_store()
686 clear_bit_inv((unsigned long)apid, matrix_mdev->matrix.apm); in unassign_adapter_store()
699 unsigned long nbits = matrix_mdev->matrix.apm_max + 1; in vfio_ap_mdev_verify_queues_reserved_for_apqi()
701 if (find_first_bit_inv(matrix_mdev->matrix.apm, nbits) >= nbits) in vfio_ap_mdev_verify_queues_reserved_for_apqi()
704 for_each_set_bit_inv(apid, matrix_mdev->matrix.apm, nbits) { in vfio_ap_mdev_verify_queues_reserved_for_apqi()
716 * @dev: the matrix device
717 * @attr: the mediated matrix device's assign_domain attribute
723 * matrix device's AQM.
743 * matrix device
753 unsigned long max_apqi = matrix_mdev->matrix.aqm_max; in assign_domain_store()
771 set_bit_inv(apqi, matrix_mdev->matrix.aqm); in assign_domain_store()
781 clear_bit_inv(apqi, matrix_mdev->matrix.aqm); in assign_domain_store()
793 * @dev: the matrix device
794 * @attr: the mediated matrix device's unassign_domain attribute
800 * mediated matrix device's AQM.
824 if (apqi > matrix_mdev->matrix.aqm_max) in unassign_domain_store()
828 clear_bit_inv((unsigned long)apqi, matrix_mdev->matrix.aqm); in unassign_domain_store()
838 * @dev: the matrix device
839 * @attr: the mediated matrix device's assign_control_domain attribute
844 * matrix device's ADM.
868 if (id > matrix_mdev->matrix.adm_max) in assign_control_domain_store()
877 set_bit_inv(id, matrix_mdev->matrix.adm); in assign_control_domain_store()
887 * @dev: the matrix device
888 * @attr: the mediated matrix device's unassign_control_domain attribute
893 * mediated matrix device's ADM.
908 unsigned long max_domid = matrix_mdev->matrix.adm_max; in unassign_control_domain_store()
921 clear_bit_inv(domid, matrix_mdev->matrix.adm); in unassign_control_domain_store()
938 unsigned long max_domid = matrix_mdev->matrix.adm_max; in control_domains_show()
941 for_each_set_bit_inv(id, matrix_mdev->matrix.adm, max_domid + 1) { in control_domains_show()
962 unsigned long napm_bits = matrix_mdev->matrix.apm_max + 1; in matrix_show()
963 unsigned long naqm_bits = matrix_mdev->matrix.aqm_max + 1; in matrix_show()
967 apid1 = find_first_bit_inv(matrix_mdev->matrix.apm, napm_bits); in matrix_show()
968 apqi1 = find_first_bit_inv(matrix_mdev->matrix.aqm, naqm_bits); in matrix_show()
973 for_each_set_bit_inv(apid, matrix_mdev->matrix.apm, napm_bits) { in matrix_show()
974 for_each_set_bit_inv(apqi, matrix_mdev->matrix.aqm, in matrix_show()
983 for_each_set_bit_inv(apid, matrix_mdev->matrix.apm, napm_bits) { in matrix_show()
989 for_each_set_bit_inv(apqi, matrix_mdev->matrix.aqm, naqm_bits) { in matrix_show()
1000 static DEVICE_ATTR_RO(matrix);
1026 * @matrix_mdev: a mediated matrix device
1029 * Verifies no other mediated matrix device has @kvm and sets a reference to
1032 * Return 0 if no other mediated matrix device has a reference to @kvm;
1110 kvm_arch_crypto_set_masks(matrix_mdev->kvm, matrix_mdev->matrix.apm, in vfio_ap_mdev_group_notifier()
1111 matrix_mdev->matrix.aqm, in vfio_ap_mdev_group_notifier()
1112 matrix_mdev->matrix.adm); in vfio_ap_mdev_group_notifier()
1168 for_each_set_bit_inv(apid, matrix_mdev->matrix.apm, in vfio_ap_mdev_reset_queues()
1169 matrix_mdev->matrix.apm_max + 1) { in vfio_ap_mdev_reset_queues()
1170 for_each_set_bit_inv(apqi, matrix_mdev->matrix.aqm, in vfio_ap_mdev_reset_queues()
1171 matrix_mdev->matrix.aqm_max + 1) { in vfio_ap_mdev_reset_queues()