Lines Matching full:matrix
3 * Adjunct processor matrix VFIO device driver callbacks.
40 * @matrix_mdev: the associated mediated matrix
45 * Verify that the APID and the APQI are set in the matrix.
55 if (!test_bit_inv(AP_QID_CARD(apqn), matrix_mdev->matrix.apm)) in vfio_ap_get_queue()
57 if (!test_bit_inv(AP_QID_QUEUE(apqn), matrix_mdev->matrix.aqm)) in vfio_ap_get_queue()
324 struct ap_matrix *matrix) in vfio_ap_matrix_init() argument
326 matrix->apm_max = info->apxa ? info->Na : 63; in vfio_ap_matrix_init()
327 matrix->aqm_max = info->apxa ? info->Nd : 15; in vfio_ap_matrix_init()
328 matrix->adm_max = info->apxa ? info->Nd : 15; in vfio_ap_matrix_init()
348 vfio_ap_matrix_init(&matrix_dev->info, &matrix_mdev->matrix); in vfio_ap_mdev_probe()
531 unsigned long nbits = matrix_mdev->matrix.aqm_max + 1; in vfio_ap_mdev_verify_queues_reserved_for_apid()
533 if (find_first_bit_inv(matrix_mdev->matrix.aqm, nbits) >= nbits) in vfio_ap_mdev_verify_queues_reserved_for_apid()
536 for_each_set_bit_inv(apqi, matrix_mdev->matrix.aqm, nbits) { in vfio_ap_mdev_verify_queues_reserved_for_apid()
546 * vfio_ap_mdev_verify_no_sharing - verifies that the AP matrix is not configured
548 * @matrix_mdev: the mediated matrix device
551 * and AP queue indexes comprising the AP matrix are not configured for another
573 if (!bitmap_and(apm, matrix_mdev->matrix.apm, in vfio_ap_mdev_verify_no_sharing()
574 lstdev->matrix.apm, AP_DEVICES)) in vfio_ap_mdev_verify_no_sharing()
577 if (!bitmap_and(aqm, matrix_mdev->matrix.aqm, in vfio_ap_mdev_verify_no_sharing()
578 lstdev->matrix.aqm, AP_DOMAINS)) in vfio_ap_mdev_verify_no_sharing()
589 * corresponding bit in the mediated matrix device's APM
591 * @dev: the matrix device
592 * @attr: the mediated matrix device's assign_adapter attribute
615 * matrix device
637 if (apid > matrix_mdev->matrix.apm_max) { in assign_adapter_store()
651 set_bit_inv(apid, matrix_mdev->matrix.apm); in assign_adapter_store()
661 clear_bit_inv(apid, matrix_mdev->matrix.apm); in assign_adapter_store()
671 * corresponding bit in the mediated matrix device's APM
673 * @dev: the matrix device
674 * @attr: the mediated matrix device's unassign_adapter attribute
704 if (apid > matrix_mdev->matrix.apm_max) { in unassign_adapter_store()
709 clear_bit_inv((unsigned long)apid, matrix_mdev->matrix.apm); in unassign_adapter_store()
723 unsigned long nbits = matrix_mdev->matrix.apm_max + 1; in vfio_ap_mdev_verify_queues_reserved_for_apqi()
725 if (find_first_bit_inv(matrix_mdev->matrix.apm, nbits) >= nbits) in vfio_ap_mdev_verify_queues_reserved_for_apqi()
728 for_each_set_bit_inv(apid, matrix_mdev->matrix.apm, nbits) { in vfio_ap_mdev_verify_queues_reserved_for_apqi()
739 * corresponding bit in the mediated matrix device's AQM
742 * @dev: the matrix device
743 * @attr: the mediated matrix device's assign_domain attribute
766 * matrix device
775 unsigned long max_apqi = matrix_mdev->matrix.aqm_max; in assign_domain_store()
797 set_bit_inv(apqi, matrix_mdev->matrix.aqm); in assign_domain_store()
807 clear_bit_inv(apqi, matrix_mdev->matrix.aqm); in assign_domain_store()
818 * corresponding bit in the mediated matrix device's AQM
820 * @dev: the matrix device
821 * @attr: the mediated matrix device's unassign_domain attribute
851 if (apqi > matrix_mdev->matrix.aqm_max) { in unassign_domain_store()
856 clear_bit_inv((unsigned long)apqi, matrix_mdev->matrix.aqm); in unassign_domain_store()
867 * the corresponding bit in the mediated matrix device's ADM
870 * @dev: the matrix device
871 * @attr: the mediated matrix device's assign_control_domain attribute
900 if (id > matrix_mdev->matrix.adm_max) { in assign_control_domain_store()
910 set_bit_inv(id, matrix_mdev->matrix.adm); in assign_control_domain_store()
920 * clears the corresponding bit in the mediated matrix device's ADM
922 * @dev: the matrix device
923 * @attr: the mediated matrix device's unassign_control_domain attribute
939 unsigned long max_domid = matrix_mdev->matrix.adm_max; in unassign_control_domain_store()
957 clear_bit_inv(domid, matrix_mdev->matrix.adm); in unassign_control_domain_store()
974 unsigned long max_domid = matrix_mdev->matrix.adm_max; in control_domains_show()
977 for_each_set_bit_inv(id, matrix_mdev->matrix.adm, max_domid + 1) { in control_domains_show()
997 unsigned long napm_bits = matrix_mdev->matrix.apm_max + 1; in matrix_show()
998 unsigned long naqm_bits = matrix_mdev->matrix.aqm_max + 1; in matrix_show()
1002 apid1 = find_first_bit_inv(matrix_mdev->matrix.apm, napm_bits); in matrix_show()
1003 apqi1 = find_first_bit_inv(matrix_mdev->matrix.aqm, naqm_bits); in matrix_show()
1008 for_each_set_bit_inv(apid, matrix_mdev->matrix.apm, napm_bits) { in matrix_show()
1009 for_each_set_bit_inv(apqi, matrix_mdev->matrix.aqm, in matrix_show()
1018 for_each_set_bit_inv(apid, matrix_mdev->matrix.apm, napm_bits) { in matrix_show()
1024 for_each_set_bit_inv(apqi, matrix_mdev->matrix.aqm, naqm_bits) { in matrix_show()
1035 static DEVICE_ATTR_RO(matrix);
1062 * @matrix_mdev: a mediated matrix device
1072 * Return: 0 if no other mediated matrix device has a reference to @kvm;
1099 matrix_mdev->matrix.apm, in vfio_ap_mdev_set_kvm()
1100 matrix_mdev->matrix.aqm, in vfio_ap_mdev_set_kvm()
1101 matrix_mdev->matrix.adm); in vfio_ap_mdev_set_kvm()
1144 * @matrix_mdev: a matrix mediated device
1266 for_each_set_bit_inv(apid, matrix_mdev->matrix.apm, in vfio_ap_mdev_reset_queues()
1267 matrix_mdev->matrix.apm_max + 1) { in vfio_ap_mdev_reset_queues()
1268 for_each_set_bit_inv(apqi, matrix_mdev->matrix.aqm, in vfio_ap_mdev_reset_queues()
1269 matrix_mdev->matrix.aqm_max + 1) { in vfio_ap_mdev_reset_queues()