Thread (30 messages) read the whole thread 30 messages, 8 authors, 2023-07-27

Re: [RFC PATCH 06/10] net: add SO_DEVMEM_DONTNEED setsockopt to release RX pages

From: Mina Almasry <hidden>
Date: 2023-07-17 02:07:10
Also in: dri-devel, linux-arch, linux-kselftest, linux-media, lkml

On Sun, Jul 16, 2023 at 4:57 PM Andy Lutomirski [off-list ref] wrote:
On 7/10/23 15:32, Mina Almasry wrote:
quoted
Add an interface for the user to notify the kernel that it is done reading
the NET_RX dmabuf pages returned as cmsg. The kernel will drop the
reference on the NET_RX pages to make them available for re-use.

Signed-off-by: Mina Almasry <redacted>
---
quoted
+             for (i = 0; i < num_tokens; i++) {
+                     for (j = 0; j < tokens[i].token_count; j++) {
+                             struct page *pg = xa_erase(&sk->sk_pagepool,
+                                                        tokens[i].token_start + j);
+
+                             if (pg)
+                                     put_page(pg);
+                             else
+                                     /* -EINTR here notifies the userspace
+                                      * that not all tokens passed to it have
+                                      * been freed.
+                                      */
+                                     ret = -EINTR;
Unless I'm missing something, this type of error reporting is
unrecoverable -- userspace doesn't know how many tokens have been freed.

I think you should either make it explicitly unrecoverable (somehow shut
down dmabuf handling entirely) or tell userspace how many tokens were
successfully freed.
Thank you, the latter suggestion sounds perfect actually. The user
can't do much if the kernel fails to free all the tokens, but at least
it can know that something wrong is happening and can log an error for
further debugging. Great suggestion! Thanks!


-- 
Thanks,
Mina
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help