vfio: avoid inefficient operations on VFIO group in vfio_pin/unpin_pages
authorYan Zhao <yan.y.zhao@intel.com>
Tue, 24 Mar 2020 15:27:57 +0000 (09:27 -0600)
committerAlex Williamson <alex.williamson@redhat.com>
Tue, 24 Mar 2020 15:27:57 +0000 (09:27 -0600)
commit40280cf7e8ca7d31bb0a9d626f36f458fec32815
treecc55f06e79d3e7d99ae50e9f5a27b58b36153599
parent8d46c0cca5f4dc0538173d62cd36b1119b5105bc
vfio: avoid inefficient operations on VFIO group in vfio_pin/unpin_pages

vfio_group_pin_pages() and vfio_group_unpin_pages() are introduced to
avoid inefficient search/check/ref/deref opertions associated with VFIO
group as those in each calling into vfio_pin_pages() and
vfio_unpin_pages().

VFIO group is taken as arg directly. The callers combine
search/check/ref/deref operations associated with VFIO group by calling
vfio_group_get_external_user()/vfio_group_get_external_user_from_dev()
beforehand, and vfio_group_put_external_user() afterwards.

Suggested-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Yan Zhao <yan.y.zhao@intel.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/vfio/vfio.c
include/linux/vfio.h