On Tue, 2013-12-03 at 23:21 +0100, Andrea Arcangeli wrote:
> #ifdef CONFIG_PPC_FSL_BOOK3E
>         hugepd_free(tlb, hugepte);
         ^^^^^^^^^^^^^^^^^^^^^^^^^^

This is the culprit

(Alex, you didn't specify this was embedded or did I miss it ?)

> #else
>         pgtable_free_tlb(tlb, hugepte, pdshift - shift);
> #endif
> }

That function does:

        batchp = &__get_cpu_var(hugepd_freelist_cur);

IE, it tries to use a per-CPU batch. Basically, it's duplicating the
logic in mm/memory.c for RCU freeing using a per-cpu freelist. I suppose
it assumes being called under something like the page table lock ?

This code also never "flushes" the batch, which is a concern...

Alex, this is Freescale stuff, can you followup with them ?

Cheers,
Ben.


--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to