Andrey Grodzovsky <Andrey.Grodzovsky@xxxxxxx> writes:
On 04/26/2018 08:34 AM, Andrey Grodzovsky wrote:At the point of do_exit you might as well be a KILL signal however you
On 04/25/2018 08:01 PM, Eric W. Biederman wrote:
Andrey Grodzovsky <Andrey.Grodzovsky@xxxxxxx> writes:Well, as I understand it, it just means that you don't want to abruptly
On 04/25/2018 01:17 PM, Oleg Nesterov wrote:The big question is why do you need to wait during the final closing a
On 04/25, Andrey Grodzovsky wrote:But this one is called for each task releasing a reference to the the file,
here (drm_sched_entity_fini) is also a bad idea, but we still want to beCan you hook f_op->flush method?
able to exit immediately
and not wait for GPU jobs completion when the reason for reaching this
is because of KILL
signal to the user process who opened the device file.
not sure I see how this solves the problem.
The wait can be terminated so the wait does not appear to be simply a
matter of correctness.
terminate GPU work in progress without a good
reason (such as KILL signal). When we exit we are going to release various
resources GPU is still using so we either
wait for it to complete or terminate the remaining jobs.
Looked more into code, some correction, drm_sched_entity_fini means the SW jobIt sounds like we don't care if we block the process that had the file
queue itself is about to die, so we must
either wait for completion or terminate any outstanding jobs that are still in
the SW queue. Anything which already in flight in HW
will still complete.
descriptor open, this is just book keeping. Which allows having a piece
of code that cleans up resources when the GPU is done with the queue but
does not make userspace wait. (option 1)
For it to make sense that we let the process run there has to be
something that cares about the results being completed. If all of the
file descriptors are closed and the process is killed I can't see who
will care that the software queue will continue to be processed. So it
may be reasonable to simply kill the queue (option 2).
If userspace really needs the wait it is probably better done in
f_op->flush so that every close of the file descriptor blocks
until the queue is flushed (option 3).
Do you know if userspace cares about the gpu operations completing?
My skim of the code suggests that nothing actually cares about those
operations, but I really don't know the gpu well.