File tree Expand file tree Collapse file tree 2 files changed +25
-4
lines changed Expand file tree Collapse file tree 2 files changed +25
-4
lines changed Original file line number Diff line number Diff line change @@ -907,8 +907,14 @@ static void vfio_pci_request(void *device_data, unsigned int count)
907
907
mutex_lock (& vdev -> igate );
908
908
909
909
if (vdev -> req_trigger ) {
910
- dev_dbg (& vdev -> pdev -> dev , "Requesting device from user\n" );
910
+ if (!(count % 10 ))
911
+ dev_notice_ratelimited (& vdev -> pdev -> dev ,
912
+ "Relaying device request to user (#%u)\n" ,
913
+ count );
911
914
eventfd_signal (vdev -> req_trigger , 1 );
915
+ } else if (count == 0 ) {
916
+ dev_warn (& vdev -> pdev -> dev ,
917
+ "No device request channel registered, blocked until released by user\n" );
912
918
}
913
919
914
920
mutex_unlock (& vdev -> igate );
Original file line number Diff line number Diff line change @@ -710,6 +710,8 @@ void *vfio_del_group_dev(struct device *dev)
710
710
void * device_data = device -> device_data ;
711
711
struct vfio_unbound_dev * unbound ;
712
712
unsigned int i = 0 ;
713
+ long ret ;
714
+ bool interrupted = false;
713
715
714
716
/*
715
717
* The group exists so long as we have a device reference. Get
@@ -755,9 +757,22 @@ void *vfio_del_group_dev(struct device *dev)
755
757
756
758
vfio_device_put (device );
757
759
758
- } while (wait_event_interruptible_timeout (vfio .release_q ,
759
- !vfio_dev_present (group , dev ),
760
- HZ * 10 ) <= 0 );
760
+ if (interrupted ) {
761
+ ret = wait_event_timeout (vfio .release_q ,
762
+ !vfio_dev_present (group , dev ), HZ * 10 );
763
+ } else {
764
+ ret = wait_event_interruptible_timeout (vfio .release_q ,
765
+ !vfio_dev_present (group , dev ), HZ * 10 );
766
+ if (ret == - ERESTARTSYS ) {
767
+ interrupted = true;
768
+ dev_warn (dev ,
769
+ "Device is currently in use, task"
770
+ " \"%s\" (%d) "
771
+ "blocked until device is released" ,
772
+ current -> comm , task_pid_nr (current ));
773
+ }
774
+ }
775
+ } while (ret <= 0 );
761
776
762
777
vfio_group_put (group );
763
778
You can’t perform that action at this time.
0 commit comments