On 9/1/2026 15:17, Gang Ba wrote:

I'm not sure that we want to do this. Once a process faults there is no recovery path for its queues. If we restore them then other waves may cause further faults, leading us back here.

Similarly, if the workqueue contains pipelined fault interrupts we don't want to do this multiple times. Perhaps check pdd->qpd.evicted before evicting queues and only run the workaround if (evicted == 0).

The eviction and restoration functions feature built-in concurrency protection. If an eviction process is already underway, the function automatically bypasses the operation.

The function utilizes the "evicted" value (which can be updated to |pdd->qpd.evicted <= 1|) to prevent multiple concurrent executions of the cleaner function.

I don't think this addresses my comment above. We do not want to restore the process after evicting it. The sequence I'd propose is:

- On the first fault within a process only (discarding all subsequent faults):
- Evict queues, if not already evicted
- Run cleaner
- Leave queues evicted

Reply via email to