Thread (33 messages) 33 messages, 6 authors, 2020-10-16

Re: [PATCH v6 02/11] mm/gup: Use functions to track lockless pgtbl walks on gup_pgd_range

From: Leonardo Bras <hidden>
Date: 2020-02-17 20:56:36
Also in: linux-arch, linux-mm, lkml

Hello John, comments inline;

On Fri, 2020-02-07 at 14:54 -0800, John Hubbard wrote:
On 2/5/20 7:25 PM, Leonardo Bras wrote:
quoted
On Thu, 2020-02-06 at 00:08 -0300, Leonardo Bras wrote:
quoted
                gup_pgd_range(addr, end, gup_flags, pages, &nr);
-               local_irq_enable();
+               end_lockless_pgtbl_walk(IRQS_ENABLED);
                ret = nr;
        }
 
Just noticed IRQS_ENABLED is not available on other archs than ppc64.
I will fix this for v7.
What's the fix going to look like, approximately?
I am not sure what is the best approach yet. 

1. On irq_mask == 0, always enable irq on end_lockless_pgtbl_walk().
   Not sure how bat would that affect other archs.

2. Add another function like end_lockless_pgtbl_walk_irqen() that
always enables IRQ.

3. Add another parameter in end_lockless_pgtbl_walk(), so that caller
can choose ii IRQ must be enabled.

Also, not sure if internal_get_user_pages_fast() can possibly be called
with IRQ disabled, and then return with it enabled. Maybe just
saving/restoring should be fine.

Other suggestions are welcome.

thanks,
Best regards,

Leonardo Bras

Attachments

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