Re: [RFC PATCH 00/13] x86 User Interrupts support

From: Sohil Mehta
Date: Thu Nov 18 2021 - 17:19:45 EST


On 10/1/2021 1:19 AM, Pavel Machek wrote:
Hi!


Thank you for reviewing the patches!

Instructions
------------
senduipi <index> - send a user IPI to a target task based on the UITT index.

clui - Mask user interrupts by clearing UIF (User Interrupt Flag).

stui - Unmask user interrupts by setting UIF.

testui - Test current value of UIF.

uiret - return from a user interrupt handler.

Are other CPU vendors allowed to implement compatible instructions?

If not, we should probably have VDSO entries so kernel can abstract
differences between CPUs.


Yes, we are evaluating VDSO support for this.

Untrusted processes
-------------------
The current implementation expects only trusted and cooperating processes to
communicate using user interrupts. Coordination is expected between processes
for a connection teardown. In situations where coordination doesn't happen
(say, due to abrupt process exit), the kernel would end up keeping shared
resources (like UPID) allocated to avoid faults.

Keeping resources allocated after process exit is a no-no.


I meant the resource is still tracked via the shared file descriptor, so it will eventually get freed when the FD release happens. I am planning to include better documentation on lifetime rules of these shared resources next time.

Thanks,
Sohil